Oracle備份與恢復

---數據庫備份與恢復是數據庫管理員必須掌握的。沒有任何系統能免遭硬盤物理損壞、粗心用戶的錯誤操作、或一些可能會威脅到存儲數據的潛在災難的侵襲。爲了能夠最大限度地恢復數據庫數據,保證數據庫的安全運行,應該選擇最合理的備份方法來防止各種故障所導致的用戶數據丟失,本次主要介紹三種備份恢復技術,即RMAN技術、數據泵技術及閃回技術。

Oracle備份與恢復

一、備份與恢復概述

1、需要備份的原因
現實工作中有很多情況都可能造成數據丟失,造成數據丟失的主要因素如下。
--介質故障:磁盤損壞、磁頭碰撞,瞬時強磁場干擾
--用戶的錯誤操作
--服務器的徹底崩潰
--計算機病毒
--不可預料的因素:自然災害、電源故障、盜竊

2、oracle中的故障分爲以下4種類型。
Oracle備份與恢復
1)語句故障
語句故障時在執行sql語句過程中發生的邏輯故障。例如:向表中插入違反約束的無效數據,或者表空間沒有空間了導致無法插入數據等。這時,應用人員或者DBA根據情況進行相應處理及可。
2)用戶進程故障
當用戶程序出錯而無法訪問oracle數據庫時,就會發生用戶進程故障,原因是異常斷開連接或終止進程,如果網絡不通,客戶端計算機以外重新啓動,這些故障會導致用戶進程與服務器的連接意外終止。
用戶進程故障只會導致當前用戶無法正常操作數據庫,但不會影響其他用戶進程。當用戶進程出現故障時,進程監控程序(PMON)會自動執行進程恢復。PMON是oracle的後臺進程,用於檢測與用戶進程失去連接的服務器進程。PMON會通過回滾事務來處理故障,還將釋放進程當前佔用的資源。
3)實例故障
當oracle的數據庫實例由於硬件故障或軟件問題而無法繼續運行時,就會發生實例故障。硬件問題包括意外斷電,而軟件問題可能是服務器操作系統崩潰。
當重新啓動數據庫時,如果發現實例故障,oracle會自動完成實例恢復。實例恢復將數據庫恢復到與故障之前的事務一致的狀態,oracle會自動回滾未提交的數據。
4)介質故障
介質故障是當一個數據庫文件、文件的部分或磁盤不能讀或不能寫時出現的故障。例如:硬盤磁頭損壞會導致而數據庫文件完全損壞。要修復由於介質故障引起的數據庫文件損壞,需要使用介質恢復。

二、備份與恢復的定義及分類

1、備份的定義及分類
備份就是把數據庫複製到轉儲設備的過程。其中轉儲設備是指用於放置數據庫副本的磁帶或磁盤。從不同的角度分類如下:
Oracle備份與恢復
1)從物理與邏輯角度分類
從物理與邏輯角度分,備份可以分爲物理備份和邏輯備份。
① 物理備份:
對數據庫操作系統的物理文件(如數據文件、控制文件和日誌文件)的備份。物理備份又可以分爲脫機備份(冷備份)和聯機備份(熱備份),前者是在關閉數據庫的時候進行的,後者對正以歸檔日誌方式運行的數據庫進行備份。可以使用oracle的恢復管理器(RMAN)或操作系統命令進行數據庫的物理備份。
② 邏輯備份:對數據庫邏輯組件(如表和存儲過程等數據庫對象)的備份。邏輯備份的手段很多,如傳統的EXP、數據泵EXPDP、數據庫閃回技術及第三方工具,都可以進行數據庫的邏輯備份。

2)從數據庫的備份策略角度分類
① 完全備份:
每次對數據進行完整的備份。當發生數據丟失的災難情況時,完全備份無須依賴其他信息,即可實現100%數據恢復,其恢復時間最短且操作最方便。
② 增量備份:
只有那些在上次完全備份或者增量備份後被修改的文件纔會備份。優點是備份數據量小,需要的時間短,缺點是恢復的時候需要依賴之前的備份記錄,出問題的風險較大。
③ 差異備份:
備份那些自從上次完全備份之後被修改過的文件。從差異備份中恢復數據庫時間較短,因此只需要兩份數據(最後一次完全備份和最後一次差異備份),缺點是每次備份需要的時間較長。

2、恢復的定義及分類
恢復就是發生故障後,利用已備份的數據或控制文件,重新建立一個完整的數據庫。恢復分爲以下兩種類型。
Oracle備份與恢復
1)實例恢復:當oracle實例出現失敗後,oracle自動進行的恢復。
2)介質恢復:當存放數據庫的介質出現故障時所做的恢復。介質恢復又分爲完全恢復和不完全恢復。
完全恢復:將數據庫恢復到數據庫失敗時的狀態。這種恢復是通過裝載數據庫備份,並用全部的重做日誌做到的。
不完全恢復:將數據庫恢復到數據庫失敗前的某一時刻的狀態。這種恢復是通過裝載數據庫備份並應用部分的重做日誌做到的。進行不完全恢復後,必須在啓動數據庫時用resetlogs選型重設聯機重做日誌。

三、使用RMAN工具

RMAN(recovery manager)即恢復管理器,是oracle的一個重要工具,用於備份和恢復數據庫文件、歸檔日誌和控制文件。也可以用來執行完全或不完全的數據庫恢復。
RMAN有3種不同的用戶接口:命令行方式,GUI方式(集成在OEM中的備份管理器)、api方式(用於集成到第三方的備份軟件中)。它具有如下優點:
1)支持在線熱備份
2)支持多級增量備份
3)支持並行備份、恢復
4)減少所需要的備份量
5)備份、恢復使用簡單
RMAN有豐富的特性集。隨着oracle新版本的發佈,RMAN特性也不斷增強,使得RMAN幾乎在任何情況下都可以備份和恢復數據庫。其中很多的新特性都是針對日常工作中所遇到的問題和困難開發的。
1、RMAN組件
Oracle備份與恢復
1)target database(目標數據庫)
目標數據庫就是需要RMAN對其進行備份與恢復的數據庫。RMAN可以備份數據文件、控制文件、歸檔日誌文件、spfile。

2)server session(服務器會話)
RMAN啓動數據庫上的oracle服務器進程,並建立一個與目標數據庫的會話。由目標數據庫上的服務器進程進行備份、還原、恢復的實際操作。

3)RMAN repository(RMAN資料庫)
RMAN使用過程中會用到的控制信息,是一些關於備份、歸檔日誌及RMAN活動的元數據。
4)recovery catalog(恢復目錄)
恢復目錄是建立在RMAN恢復目錄數據庫上的一種schema對象,用於保存RMAN資料庫數據。
恢復目錄是一個可選的組件。RMAN會將資料庫數據記錄在目標數據庫的控制文件中,但這樣不夠安全,因爲一旦目標數據庫的控制文件損壞就意味着所有的RMAN備份失效。所以建議在單獨的一個數據中建立恢復目錄另外保存一份資料庫數據。
對於
對於大部分中等環境的企業環境,將RMAN備份信息存儲在恢復目錄數據庫中,而不是存儲在目標數據庫的控制文件中,這樣能夠發揮RMAN工具的全部功能,此外,RMAN的很多高級功能也只有在創建了恢復目錄的環境下才被支持。
5)MML(媒體管理庫)
MML(media management layer)是第三方工具或軟件,用於管理對磁帶的讀寫與文件的跟蹤管理,如果你要想直接通過RMAN備份到磁帶上,就必須配置媒體管理層,媒體管理層的工具和RMAN共同完成備份與恢復。

6)快閃恢復區
快閃恢復區是oracle數據庫用於保存所有與恢複相關的文件的默認磁盤位置。這些相關文件包括歸檔日誌、RMAN備份、控制文件自動備份、複用的控制文件和重做日誌副本及閃回日誌文件。
7)輔助數據庫
在正常使用時,RMAN會與目標數據庫一起使用,如果創建了恢復目錄數據庫,那麼也會與恢復目錄數據庫一起使用。在某些情況下,希望創建輔助數據庫,輔助數據庫是使用RMAN從目標數據庫的備份中創建新的數據庫。輔助數據庫能被創建作爲備用數據庫使用。在產品數據庫發生災難時,能夠在不丟失任何數據及停機時間最短的情況下切換至備用數據庫。
2、RMAN-創建恢復目錄
Oracle備份與恢復

恢復目錄存在於RMAN的目錄數據庫中,類似於標準的數據庫目錄,主要包含如下幾個部分的信息:
1)備份和恢復信息,可以是多個目標數據庫
2)RMAN腳本,可以存儲供重複使用
3)關於數據文件和日誌文件的本分信息
4)關於目標數據庫的表空間和數據文件的信息

創建恢復目錄
1)創建恢復目錄數據庫
create tablespace cc datafile '/opt/oracle/oradata/cc.ora'
size 20M autoextend on next 5m maxsize unlimited

Oracle備份與恢復

2)在恢復目錄數據庫中創建RMAN 用戶並授權
create user ydw identified by oracle default tablespace cc temporary tablespace temp
Oracle備份與恢復
Oracle備份與恢復
3)在恢復目錄數據庫中創建恢復目錄
Oracle備份與恢復Oracle備份與恢復
3、註冊目標數據庫到恢復目錄
登錄目標數據庫,如果要對目標數據庫進行註冊,可以按照以下操作。
Oracle備份與恢復
完成了目標數據庫在恢復目錄中的註冊操作,現在可以使用RMAN的恢復目錄對目標數據庫進行備份和恢復操作。
4、通道分配
使用RMAN進行備份和恢復操作時,必須進行通道的分配,一個通道是RMAN和目標數據庫之間的一個連接,通道指定了某種類型的設備用於備份和恢復,RMAN可以使用的通道設備包括磁盤與磁帶兩種。
1)自動通道配置
使用CONFIGURE命令配置自動通道。
Oracle備份與恢復

2)手動通道配置
在RUN塊中使用ALLOCATE CHANNEL手動分配通道。
例如:指定3個磁盤通道,分別是ch1、ch2和ch3。
Oracle備份與恢復
3)顯示通道配置參數
Oracle備份與恢復

5、備份與恢復的相關概念與操作
1)備份集與備份片
備份集:備份集是第一次備份的集合,它包含本次備份的所有備份片,以oracle專有的格式保存,是一個邏輯數據的集合。
備份片:一個備份集由若干個備份片組成,每個備份片是一個單獨的輸出文件,一個備份片的大小是有限制的,它的大小不能大於文件系統所支持的文件長度的最大值。
2)配置備份集文件的格式
使用BACKUP命令進行備份時,需要明確備份文件的存儲路徑及文件名稱格式。其路徑和格式可以使用FORMAT參數進行統一設置。FORMAT格式由兩部分組合,即存儲路徑和文件名稱。
如果沒有使用FORMAT指定存儲路徑和文件名稱格式,則默認情況下BACKUP所產生的備份集將存儲在快閃恢復區中,RMAN自動使用%U來確保文件名稱不會重複。
FORMAT命令格式如下:
FORMAT ‘格式字符串’
其中格式字符串的文件名稱部分可以使用替換變量,例如:FORMAT ‘/backup/rmanback/%U’
常用的替換變量如下:
%c:備份片的拷貝數
%d:數據庫名稱
%D:位於該月中的第幾天(DD)
%M:位於該年中的第幾月(MM)
%F:一個基於DBID的唯一的名稱,它的形式爲C-||||||-YYYYMMDD-QQ。其中||||||爲該數據庫的DBID,YYYYMMDD爲日期,QQ是一個1-256的序列。
%n:數據庫名稱,向右填補到最大8個字符
%u:一個8個字符的名稱,它是根據備份集個數與創建時間信息成成的。
%p:該備份集的備份片號,從1開始到創建的文件數
%U:系統生成的一個唯一文件名,對於備份片來說,它的含義相當於%u%p%c。
%s:備份集的號
%t:備份集時間戳
%T:年月日格式(YYYYMMDD)

3)備份與恢復命令
① BACKUP命令用於備份數據庫文件,可以將多個文件、表空間,整個數據庫以備份集形式備份到磁盤或磁帶上。在RUN命令外使用BACKUP命令,會自動使用自動通道;在RUN命令內使用BACKUP命令,如果定義了手動通道,則優先使用手動定義通道。
② 使用RMAN備份的數據庫也只能使用RMAN提供的恢復命令進行恢復。RMAN的恢復目錄中存儲了目標數據庫的備份信息。RMAN根據恢復目錄中存儲的信息,自動將數據庫同步恢復到某一個數據一致的狀態。
RMAN恢復數據庫時用到兩個命令,即RESTORE和RECOVER。RESOTRE命令將備份數據恢復到指定的目錄,RECOVER命令對數據庫實施同步恢復。
RESOTRE命令:由於備份集中的備份片是以專有的RMAN格式存儲的,需要使用RESTORE命令進行重建,重建的結果是自動產生目標數據庫的物理文件結構。
RECOVER命令:負責把歸檔日誌文件用於重建的數據文件,來完成數據庫的同步恢復。在執行RECOVER命令時,RMAN需要讀取歸檔日誌,如果沒有歸檔日誌,或者數據庫運行在非歸檔模式下,則恢復過程會報錯。

案例:在歸檔方式下備份與恢復

要用RMAN進行聯機備份操作。數據庫就必須位於歸檔模式。恢復目錄必須打開,目標數據庫進程必須啓動,數據庫已經加載或者打開。
1)備份和恢復整個數據庫
查看當前數據模式爲非歸檔模式
Oracle備份與恢復Oracle備份與恢復
修改模式爲歸檔模式
Oracle備份與恢復Oracle備份與恢復
備份和恢復整個數據庫,自動分配通道,FORMAT默認使用%U,備份集存儲在數據庫快閃恢復區內,備份文件包括數據文件,控制文件,重做日誌文件和參數文件。
Oracle備份與恢復
查看快閃恢復區,發現備份成功了
Oracle備份與恢復
如果還要包含歸檔日誌文件,則要加上plus archivelog關鍵字,delete input的意思是在備份完成後,刪除archivelog文件。

Oracle備份與恢復

通過自動分配通道,通過FORMAT制定具體的路徑和格式
首先建立備份目錄:
Oracle備份與恢復
設置目錄權限並備份
Oracle備份與恢復
Oracle備份與恢復
也可以手動分配通道,備份數據庫

Oracle備份與恢復
恢復整個數據庫(數據庫要在mount狀態下執行)
Oracle備份與恢復
刪除system01.dbf
Oracle備份與恢復
再次開啓數據庫實例
Oracle備份與恢復
此時數據庫無法啓動了,因爲刪除了system01.dbf

使用sys連接RMAN
Oracle備份與恢復
Oracle備份與恢復
同步恢復。

Oracle備份與恢復
打開數據庫
Oracle備份與恢復Oracle備份與恢復
system01.dbf表空間已經被恢復了

Oracle備份與恢復
Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復

補充自動備份:
  1)生成腳本文件,如backup.rcv
  假定文件內容如下:
  $>cat backup.rcv
  connect target sys/password rcvcat rman/rman@localname;
  run{
  allocate channel c1 type disk;
  allocate channel c2 type disk;
  allocate channel c3 type disk;
  backup fileaperset 3 format ‘/u01/oradata/backup/arch%u%s%p’
  archivelog all delete input;
  release channel c1;
  release channel c2;
  release channel c3;
  }
  2)生成執行文件
  在windows上生成backup_archive.bat,內容包括
  rman cmdfile = backup.rcv
  在unix下生成 backup_archive.sh,內容包括
  /oracle/ramn/rman cmdfile = backup.rcv
  3)加入調度
  在windows中用任務計劃嚮導即可,或使用at命令。
  在unix中,在目標機器上編寫一個文件,用以啓動自動備份進程。假定文件名爲ORACLE,文件將放在/var/spool/cron/crontabs目錄下
  $>cat oracle
  0 23 0 backup_archive.sh
  #表示星期天23點對數據庫備份
  0 12,18 * backup_archive.sh
  #表示每天12點,18點備份
Crontab文件的每一行由六個域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開來

二、使用數據泵技術實現邏輯備份

邏輯備份是創建數據庫對象的邏輯副本,並存入一個二進制轉儲文件的過程。從本質上說,邏輯備份與恢復實際就是對數據庫實施數據的導入和導出。

導出:
導出即數據庫的邏輯備份,實質是讀取一個數據庫集並將這個數據集寫入一個文件(擴展名通常是dmp),這些記錄的導出與物理位置無關。
導入:
導入及數據庫的邏輯恢復,實質是讀取被導出的二進制轉儲文件並將其恢復到數據庫。

1、使用數據泵技術導入/導出
數據泵(data pump)是一種在數據庫之間或在數據庫與操作系統之前高速傳輸的技術。數據泵工具運行在服務器上,數據庫管理員需要指定數據庫目錄來保存轉儲的數據。
基於命令行的數據泵導出步驟如下
Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復

三、使用閃回技術

1、閃回技術概述
爲了使數據庫能夠從任何邏輯誤操作中迅速恢復,oracle退出了閃回技術。採用該技術,可以對行級和事務級的數據變化進行恢復,減少了數據恢復的時間,而且操作簡單,通過sql語句就可以實現數據的恢復,大大提高了數據庫恢復的效率。閃回技術是數據庫恢復技術歷史上一次重大的進步,從根本上改變了數據恢復。
閃回技術包括以下各項:
1)閃回查詢(flashback query):查詢過去某個時間點或某個SCN(system change number,系統更改號)值時表中的數據信息。
2)閃回版本查詢(flashback version query):查詢過去某個時間段或某個SCN段內表中數據的變化情況。
3)閃回事務查詢(flashback transaction query):查看某個事務或所有事務在過去一段時間對數據進行的修改。
4)閃回數據庫(flashback database):將數據庫恢復到過去某個時間點或某個SCN值時的狀態。
5)閃回刪除(flashback drop):將已經刪除的表及相關聯的對象恢復到刪除前的狀態。
6)閃回表(flashback table):將表恢復到過去的某個時間點或某個SCN值時的狀態。
Oracle備份與恢復
SCN:scn是當Oracle數據庫更新後,有dbms自動維護而累積遞增的一個數字,可以通過查詢數據字典V$DATABASE中的CURRENT_SCN獲得當前的SCN號。

注意:
閃回數據庫是基於閃回恢復區(Flash Recovery Area)特性實現的,如果要使用閃回數據庫技術,還需要啓用閃回恢復區
閃回刪除是基於回收站(Recycle Bin)特性實現的,如果要使用閃回刪除技術,還需要啓用回收站
閃回查詢、閃回版本查詢、閃回事務查詢以及閃回表主要是基於撤銷表空間中的回滾信息實現的
2、閃回恢復區
1)閃回恢復區的含義
Oracle推薦指定一個閃回恢復區(flash recovery area)作爲存放備份與恢複相關文件的默認位置,這樣oracle就可以實現自動的基於磁盤的備份與恢復(automatic disk-based backup and recovery)。那麼,什麼是閃回恢復區?簡單地說,閃回恢復區是一塊用以存儲恢複相關的文件的存儲空間,允許用戶集中存儲所有恢複相關的文件。如下集中文件可以放到閃回恢復區中。
控制文件
歸檔的日誌文件
閃回日誌
控制文件和SPFILE自動備份
RMAN備份集
數據文件拷貝

2)閃回恢復區的優點
閃回恢復區提供了一個集中化的存儲區域,很大程度上減少了管理開銷,這是其最主要的優點,另外,與RMAN結合使用可以進行快速恢復。

3)設置閃回恢復區
如果使用dbca創建的數據庫,在安裝時可以設定閃回恢復區的位置及大小。
Oracle備份與恢復
4)閃回恢復區主要通過以下3個初始化參數來設置和管理。
Db_recovery_file_dest:指定閃回恢復區的位置
Db_recovery_file_dest_size:指定閃回恢復區的可用空間大小
Db_flashback_retention_target:該參數用來控制閃回日誌中數據保留的時間,或者說,希望閃回數據庫能夠恢復到的最早的時間點。單位爲MIN,默認爲1440min,也就是一天。當然,實際上可退回的時間還取決於閃回恢復區的大小,因爲裏面保存了回退所需要的閃回日誌,所以這個參數要和db_recovery_file_dest_size配合修改。
如果要撤銷閃回恢復區,把初始化參數DB_RECOVERY_FILE_DEST的值清空即可。

注意:db_recovery_file_dest_size只有在db_recovery_file_dest清空之後纔可以清空。
5)設置閃回數據庫
設置可閃回恢復區之後,要啓用閃回數據庫的功能,還需要進一步配置。數據庫必須已經處於歸檔模式,再設置閃回數據庫。
設置閃回數據庫的步驟如下:
啓用歸檔模式(閃回數據庫只能處於歸檔模式)
Oracle備份與恢復
數據庫未設置閃回數據庫
Oracle備份與恢復
建立閃回區
Oracle備份與恢復

設置閃回數據庫的數據保留週期爲一天以min爲單位
Oracle備份與恢復
啓用閃回日誌
Oracle備份與恢復
查詢是否成功啓用閃回恢復區
Oracle備份與恢復
查詢是否成功啓用閃回數據庫
Oracle備份與恢復

6)取消閃回恢復區
將db_recovery_file_dest參數設置爲空,可以停用閃回恢復區,但是,如果已經啓用閃回數據庫,則不能取消閃回恢復區,所以必須先禁用閃回數據庫,才能取消閃回恢復區。
步驟如下:
關閉數據庫
Shutdown immediate

裝載數據庫
Startup mount

關閉數據庫閃回
Alter database flashback off;

打開數據庫
Alter database open

修改閃回參數
Alter system set_recovery_file_dest=’’;

四、閃回錯誤操作技術

1、閃回數據庫
閃回數據庫能夠使數據迅速回滾到以前的某個時間點或者某個SCN上,這對於數據庫從邏輯錯誤中恢復特別有用,而且也是大多數發生邏輯損害時恢復數據庫的最佳選擇。
作用類似於數據庫的倒帶按鈕。
可以在用戶造成了邏輯數據損壞的情況下使用。

Oracle備份與恢復
閃回數據庫基本語法爲
FLASHBACK DATABASE [database] TO
[SCN|TIMESTAMP expression]|
[BEFORE SCN|TIMESTAMPexpression]
參數說明
TO SCN:將數據庫恢復到指定SCN的狀態
TO TIMESTAMP:將數據庫恢復到指定的時間點
TO BEFORE SCN:將數據庫恢復到指定SCN的前一個SCN狀態
TO BEFORE TIMESTAMP:將數據庫恢復到指定時間點前的狀態

閃回數據庫操作的限制:
數據文件損壞或丟失等介質故障不能使用閃回數據庫進行恢復。閃回數據庫只能基於當前正常運行的數據文件。
閃回數據庫功能啓動後,如果發生數據庫控制文件重建或利用備份恢復控制文件,則不能使用閃回數據庫。
不能使用閃回數據庫進行數據文件收縮操作。
不能使用閃回數據庫將數據庫恢復到在閃回日誌中可獲得最早的SCN之前的SCN,因爲閃回日誌文件在一定條件下被刪除,而不是始終保存在閃回恢復區中。

案例:使用SCN閃回數據庫

1)查詢數據庫當前的SCN
Oracle備份與恢復
2)改變數據庫的當前狀態,模擬創建表bxjg,並插入一條數據。
Oracle備份與恢復
3)進行閃回數據庫恢復,將數據庫恢復到創建表之前的狀態,即SCN爲1915426
Oracle備份與恢復
4)用RESETLOGS選項打開數據庫

Oracle備份與恢復
5)驗證數據庫的狀態(bxjg表應該不存在)
Oracle備份與恢復
6)可以通過查詢數據字典視圖v$flashback_database_log來獲得能夠閃回的最早的scn號,及閃回時值最早不能小於該值。同理,如果通過時間點閃回,則閃回時間也不能小於查詢得到的最早時間。
設置顯示時間格式:
Oracle備份與恢復
查詢數據庫中當前最早的閃回SCN和時間
Oracle備份與恢復
7)按照指定時間閃回數據庫
首先查詢數據系統當前時間
Oracle備份與恢復

改變數據庫當前狀態,模擬創建表test2,並插入一條數據Oracle備份與恢復
Oracle備份與恢復
進行閃回數據庫恢復,將數據庫恢復到創建表之前的狀態。
Oracle備份與恢復
Oracle備份與恢復
2、閃回表
閃回表是將表恢復到過去的某個時間點或者指定的SCN而不用恢復數據文件,爲DBA提供了一種在線、快讀、便捷的恢復方式,可以恢復對標進行的修改、刪除、插入等錯誤的操作。
利用閃回表技術恢復表中數據的過程,實際上是對錶進行DML操作的過程。Oracle自動維護與表相關聯的索引、觸發器、約束等。
爲了使用數據庫閃回表功能,必須滿足下列條件
用戶具有flashback any table系統權限,或者具有所操作表的flashback對象權限。
用戶具有所操作表的select、insert、delete、alter對象權限
啓動被操作表的row movement特性,可以採用下列方式進行。
Alter table 表名 enable row movement;

閃回表操作的基本語法爲
FLASHBACK TABLE [schema.]table TO
SCN|TIMESTAMP expression
[ENABLE|DISABLE TRIGGERS]

參數說明
SCN:將表恢復到指定的SCN時狀態
TIMESTAMP:將表恢復到指定的時間點
ENABLE|DISABLE TRIGGER:在恢復表中數據的過程中,表上的觸發器是激活還是禁用(默認爲禁用)

注意:SYS用戶或以AS SYSDBA身份登錄的用戶不能執行閃回表操作

案例:使用SCN閃回表

Oracle備份與恢復
Oracle備份與恢復
Oracle備份與恢復
Oracle備份與恢復
Oracle備份與恢復
3、閃回刪除
閃回刪除可以恢復使用drop table語句刪除的表,是一種對意外刪除的表的恢復機制。
閃回刪除功能的實現主要是通過oracle數據庫中的“回收站”技術實現的。在oracle數據庫中,當執行drop table 操作時,並不立即回收表及、及其關聯的對象的空間,而是將它們重命名後放入一個稱爲“回收站”的邏輯容器中保存,直到用戶決定永久刪除它們或存儲該表的表空間存儲空間不足時,表才能真正被刪除。爲了使用閃回刪除技術,必須開啓數據庫的“回收站”
Oracle備份與恢復
1)啓動回收站,將參數recyclebin設置爲ON,在默認情況下“回收站”已啓動。
Oracle備份與恢復
2)查看“回收站”。當執行drop table操作時,表及其關聯對象被命名後保存在“回收站”中,可以通過查詢user_recyclebin,dba_recyclebin視圖獲得被刪除的表及其關聯對象信息。
Oracle備份與恢復
注意:不支持sys用戶,system表空間下的對象也不能從回收站裏拿到,故使用sys或者system用戶登錄時,查詢爲空。

3)如果在刪除表時使用了PURGE短語,則表及其關聯對象被直接釋放,空間被回收,相關信息不會進入“回收站”中。
建立表,並且使用purge短語刪除
Oracle備份與恢復
4)清空回收站
由於被刪除表及其關聯對象的信息保存在“回收站”中,其存儲空間並沒有釋放,因此需要定期清空“回收站”,或清楚“回收站”中沒有用的對象(表、索引、表空間),釋放其所佔的磁盤空間。

語法如下:
PURGE [TABLE 表名 | INDEX index]
[RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACE tablespace [USER user]]
參數說明:
TABLE:從回收站中清除指定的表
INDEX:從回收站中清除指定的索引,並回收其磁盤空間
RECYCLEBIN:清空用戶“回收站”,並回收所有對象的磁盤空間
DBA_RECYCLEBIN:清空整個數據庫系統的“回收站”,只有具有SYSDBA權限的用戶纔可以使用
TABLESPACE :清除“回收站”中指定額表空間,並回收磁盤空間
USER:清除回收站中指定表空間中特定用戶的對象,並回收磁盤空間
Oracle備份與恢復
5)閃回刪除操作
FLASHBACK TABLE [schema.]table TO BEFORE DROP [RENAME TO table]

注意:只有本地管理的,非系統表空間中的表可以使用閃回刪除操作。

案例:閃回刪除示例

新建表,插入數據並提交
Oracle備份與恢復
閃回表
Oracle備份與恢復

4、閃回查詢技術
閃回查詢:允許根據時間點或SCN查看舊的數據。除了可以查看舊數據,需要時可以通過檢索舊數據來撤銷錯誤的更改。
基本語法如下:
Select column_name[,...]
From table_name
[as of scn | timestamp expression]
Where condition

參數說明:
As for timestamp:基於時間的閃回查詢
As of scn:基於scn的閃回查詢

案例:閃回查詢實例

Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復Oracle備份與恢復

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章