天天看點

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

Oracle 11g R2 Rman備份

備份與恢複的定義及分類

備份的定義及分類:

從實體與邏輯的角度來分類:

從實體與邏輯的,備份可以分為實體備份和邏輯備份。

實體備份:對資料庫作業系統的實體檔案(資料檔案,控制檔案和日志檔案)的備份。實體備份又可以分為脫機備份(冷備份)和聯機備份(熱備份),前者是在關閉資料庫的時候進行的,後者是以歸檔日志的方式對運作的資料庫進行備份。可以使用oracle的恢複管理器(RMAN)或作業系統指令進行資料庫的實體備份。

邏輯備份:對資料庫邏輯元件(如表和存儲過程等資料庫對象)的備份。邏輯備份的手段很多,如傳統的EXP,資料泵(EXPDP),資料庫閃回技術等第三方工具,都可以進行資料庫的邏輯備份。

從資料庫的備份角度分類:

從資料庫的備份角度,備份可以分為完全備份和增量備份和差異備份

完全備份:每次對資料庫進行完整備份,當發生資料丢失的災難時,完全備份無需依賴其他資訊即可實作100%的資料恢複,其恢複時間最短且操作最友善。

增量備份:隻有那些在上次完全備份或增量備份後被修改的檔案才會被備份。優點是備份資料量小,需要的時間短,缺點是恢複的時候需要依賴以前備份記錄,出問題的風險較大。

差異備份:備份那些自從上次完全備份之後被修改過的檔案。從差異備份中恢複資料的時間較短,是以隻需要兩份資料---最後一次完整備份和最後一次差異備份,缺點是每次備份需要的時間較長。

恢複的定義及分類

執行個體恢複:當oracle執行個體出現失敗後,oracle自動進行的恢複

媒體恢複:當存放資料庫的媒體出現故障時所作的恢複。媒體恢複又分為完全恢複和不完全恢複

完全恢複:将資料庫恢複到資料庫失敗時的狀态。這種恢複是通過裝載資料庫備份并應用全部的重做日志做到的。

不完全恢複:将資料庫恢複到資料庫失敗前的某一時刻的狀态。這種恢複是通過裝載資料庫備份并應用部分的重做日志做到的。進行不完全恢複後,必須在啟動資料庫時用resetlogs選項重設聯機重做日志。

RMAN的存儲類型有三種方式:

1.備份集 預設類型

2.壓縮備份集

3.鏡像copy

組成每個備份集的每個檔案稱之為備份片

RMAN備份可以存放在兩種位置:

1.目标資料庫的控制檔案

2.恢複目錄中

RMAN備份的優點:

1.RMAN隻備份有效資料

2.RMAN可以實作增量備份

使用RMAN工具

RMAN是oracle的一個重要工具,用于備份和恢複資料檔案,歸檔日志和控制檔案,也可以用來執行完全或不完全的資料庫恢複。RMAN有3種不同的使用者接口,指令行方式,GUI方式(內建在OEM中的備份管理器),API方式(用于內建到第三方的備份軟體中),它具有以下特點:

支援線上熱備份

支援多級增量備份

支援并行備份、恢複

減少所需要備份量

備份、恢複使用簡單

RMAN的元件

target database(目标資料庫)

目标資料庫就是需要RMAN 對其進行備份與恢複的資料庫,RMAN可以備份資料檔案,控制檔案,歸檔日志,spfile;

service session(伺服器會話)

RMAN啟動資料庫上的oracle伺服器程序,将建立一個與目标資料庫的會話,有目标資料庫上的伺服器程序進行備份、還原、恢複的實際操作。

RMAN Repository(RMAN資料庫)

RMAN使用過程中會用到的控制資訊,是一些關于備份、歸檔日志及RMAN活動的中繼資料

Recovery Catalog(恢複目錄)

恢複目錄是建立在RMAN恢複目錄資料庫上的一種schema對象,用于儲存RMAN資料庫資料。恢複目錄是一個可選的元件。RMAN會将資料資料記錄在目标資料庫的控制檔案中,但這樣不夠安全,因為一旦目标資料庫的控制檔案損壞就意味着所有的RMAN備份失效。是以建議在單獨的一個資料庫中建立一個恢複目錄另外儲存一份資料庫資料。

MML(媒體管理庫)

MML是第三方工具或軟體,用于管理對錄音帶的讀寫與檔案的跟蹤管理。如果你想直接通過RMAN備份到錄音帶上,就必須配置媒體管理層,媒體管理層的工具和RMAN共同配合完成備份與恢複。

快閃恢複區

快閃恢複區是oracle資料庫用于儲存所有與恢複相關的檔案的預設磁盤位置。這些相關檔案包括歸檔日志,RMAN備份,控制檔案自動備份,複用的控制檔案和重做日志副本及閃回日志檔案。

輔助資料庫

在正常使用時,RMAN會與目标資料庫一起使用,如果建立了恢複目錄資料庫,那麼也會與恢複目錄資料庫一起使用。在某些情況下,希望建立輔助資料庫。輔助資料庫時使用RMAN從目标資料庫的備份中建立的新資料庫。輔助資料庫能夠被建立作為備用資料庫使用。在資料庫發生災難時,能夠在不丢失任何資料及停機時間最短的情況下切換至備用資料庫。

建立恢複目錄

恢複目錄存在于RMAN的目錄資料庫中,類似于标準的資料庫目錄,主要包含如下幾個部分資訊:

備份恢複資訊,可以是多個目标資料庫

RMAN腳本,可以存儲重複使用

關于資料檔案和日志檔案的備份資訊

關于目标資料庫的表空間和資料檔案資訊

RMAN資料庫可以存放在目标資料庫控制檔案裡,也可以存放在恢複目錄中;

建立恢複目錄:用來存儲RMAN資料庫的。

SQL>create tablespace yy datafile '/opt/oracle/oradata/yy.dbf' size 20m autoextendon next 5m maxsize unlimited;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

在恢複目錄資料庫中建立RMAN使用者并授權

SQL>create user lilei identified by oracle default tablespace yy quota unlimited onyy;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

SQL>grant connect,resource,recovery_catalog_owner to lilei;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

連接配接到RMAN恢複目錄資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

提示已經連接配接到目标資料庫、連接配接到恢複目錄資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

向恢複目錄注冊資料庫ORCL,提示已經啟動全部恢複目錄的resync,已完成全部的resync。此時就可以使用RMAN的恢複目錄對目标資料庫進行備份和恢複操作。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

通道的配置設定

使用RMAN進行備份和恢複時,必須進行通道的配置設定,一個通道是RMAN和目标資料庫之間的一個連接配接,通道指定了某種類型的裝置用于備份和恢複,RMAN可以使用的通道裝置包括磁盤與錄音帶兩種。

通道配置設定可以自動或手動進行

自動通道配置

RMAN>configure device type disk paralielism 5;

RMAN>configure default device type to disk;

手動通道配置

RMAN>run

2>{

3>allocate channel ch1 device type disk;

4>allocate channel ch2 device type disk;

5>allocate channel ch3 device type disk;

6>}

可以使用show all指令可以顯示已經配置過的有預設值的參數,其中包括通道參數

RMAN>showall;

備份與恢複的概念與操作

備份集與備份片

備份集(backup set)

備份集是一次備份的集合,它包含本次備份的所有備份片,以oracle專有的格式儲存,是一個邏輯資料的集合。

備份片:

一個備份集由若幹個備份片組成。每個備份片是一個單獨輸出檔案,一個備份片的大小是有限制的,他的大小不能大于檔案系統所支援的檔案長度的最大值。

配置備份集檔案的格式:

使用backup指令進行備份時,需要明确備份檔案的存儲路徑及檔案名稱的格式。其路徑和格式可以使用FORMAT參數進行統一設定。FORMAT格式由兩部分組成:即存儲路徑和檔案名稱格式;

如果沒有使用FORMAT指定存儲路徑和檔案名稱格式,則預設情況下BACKUP所産生的備份集将存儲在快閃恢複區中,RMAN自動使用%U來确定檔案名稱不會被重複。

FORMAT指令格式如下:

FORMAT '格式字元串'

其中格式字元串的檔案名稱部分可以使用替換變量,例如FORMAT '/BACKUP/YY/%U'.

常用的替換變量如下:

%c : 備份片的拷貝數

%d:資料庫名稱

%D : 位于該月中的第幾天(DD)

%M : 位于該年中第幾月(MM)

%F : 一個基于DBID的唯一名稱,它的形式為C-DBID-YYYYMMDD-QQ。其中DBID為資料庫的DBID,YYYYMMDD為日志,QQ是一個1-256的序列

%n:資料庫名稱,向右填補到最大8個字元

%u:一個8個字元的名稱,它是根據備份集個數與建立時間資訊生成的。

%p:該備份集中的備份片号,從1開始到建立的檔案數。

%U:系統生成的一個唯一檔案名,對于備份片來說,它的含義相當于%u%p%c。

%s:備份集的号

%t:備份集時間戳

%T:年月日格式(YYYYMMDD)

備份與恢複指令

backup指令用于備份資料庫檔案,可以将多個檔案、表空間、整個資料庫已備份集形式備份到磁盤或錄音帶上,在RUN指令外使用BACKUP指令,會自動使用自動通道。在RUN指令内使用BACKUP指令,如果定義了手動通道,則優先使用手動定義通道。

使用RMAN備份的資料庫也隻能使用RMAN提供的恢複指令進行恢複。RMAN的恢複目錄中存儲了目标資料庫的備份資訊。RMAN根據恢複目錄中的存儲資訊,自動将資料庫同步到某一個資料一緻的狀态。

RMAN恢複資料庫時用到兩個指令,即RESTORE和RECOVER。RESTORE指令将備份資料恢複到指定的目錄,RECOVER指令對資料庫進行同步恢複。

RESTORE指令:由于備份集中的備份片是以專有的RMAN格式存儲的,需要使用RESTORE指令進行重建。重建的結果是自動産生目标資料庫的實體檔案結構。

RECOVER指令:負責把歸檔日志檔案用于重建的資料檔案,來完成資料庫的同步恢複。在執行RECOVER指令時,RMAN需要讀取歸檔日志。如果沒有歸檔日志,或者資料庫運作在非歸檔模式下,則恢複過程會報錯。

舉例說明在歸檔模式下備份與恢複

要用RMAN進行聯機備份,資料庫必須處于歸檔模式,恢複目錄必須打開,目标資料庫程序必須啟動,資料庫已加載或者打開。

檢視資料庫是否處于歸檔模式下:

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

關閉資料庫并啟動資料庫到mount狀态

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

使用ALTER DATABASE ARCHIVELOG指令将資料設定為歸檔模式,并驗證資料庫的歸檔模式是否改變

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份和恢複整個資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份和恢複整個資料庫,自動配置設定通道,FORMAT預設使用%U,備份集存儲在資料庫快閃恢複區内,備份檔案包括資料檔案,控制檔案,重做日志檔案和參數檔案

RMAN>backup database;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份到了快閃恢複區,

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如果備份整個資料庫時要包含歸檔日志檔案,則要加上plus archivelog關鍵字,delete input的意思是在備份完成後,删除archivelog檔案

RMAN>backup database plus archivelog delete input;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

建立目錄/OPT/ORACLE/ORADATA

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

自動配置設定通道,通過FORMAT制定具體的路徑和格式

RMAN>backup database FORMAT '/opt/oracle/oradata/backup/rmanbak/%U';

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份檔案存儲的路徑

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

使用手動配置設定通道,備份資料庫的方法:

4>backup database format '/opt/oracle/oradata/backup/rmanbak/%U';

5>release channel ch1;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份結果

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如何恢複資料庫

全庫備份的恢複,資料庫要在mount狀态下執行,删除system01.dbf,使用RMAN恢複

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

此時資料庫無法啟動了,因為删除了system01.dbf

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

資料庫的目前狀态,連接配接RMAN

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

恢複資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

打開資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

資料庫已經處于OPEN狀态了

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

system01.dbf表空間已經被恢複了

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份和恢複表空間

備份表空間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份USERS表空間

RMAN>backup tablespace users;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份多個表空間

RMAN>backup filesperset=3 tablespace users,system,sysaux;

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

在RUN指令中備份表空間

4>backup format '/opt/oracle/oradata/backup/rmanbak/%U' (tablespaceusers,system,sysaux);

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如果隻丢失了特定的表空間的資料檔案,那麼可以選擇隻恢複這個表空間,而不是恢複整個資料庫,表空間恢複可以在不關閉資料庫的情況下進行,隻需要将需要恢複的表空間offline

模拟删除表空間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

恢複被删除的表空間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

已經恢複了users01.dbf

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份資料檔案2

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

備份sysaux01.dbf

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

檢視目前系統中的資料檔案

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

删除資料檔案sysaux01.dbf

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

對資料檔案或表空間做恢複的時候資料檔案和表空間一定要處于offline狀态, 資料檔案丢失了,但資料庫執行個體還可以用

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

此時資料檔案sysaux01.dbf的狀态為RECOVER

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

恢複資料檔案sysaux01.dbf

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

将資料檔案datafile 2處于online狀态

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

檢視資料檔案的狀态,已經變成online狀态了

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

使用資料泵技術實作邏輯備份

邏輯備份概述

邏輯備份時建立資料庫對象的邏輯副本,并存入一個二進制轉儲檔案的過程。從本質上來講邏輯備份與恢複實際就是對資料庫事實資料的導入和導出。

導出:

導出就是資料庫的邏輯備份,實質是讀取一個資料庫記錄并将這個記錄集寫入一個檔案(擴充名通常是dmp),這些記錄的導出與實體位置無關

導入:

導入即資料庫的邏輯恢複,實質是讀取被導出的二進制轉儲檔案并将其恢複到資料庫。

使用資料泵技術導入/導出

資料泵(DATA PUMP)是一種在資料庫之間或在資料庫與作業系統之間高速傳輸資料的技術。資料泵工具運作在伺服器上,資料庫管理者需要指定資料庫目錄來儲存轉儲的資料。

連接配接oracle 資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

建立一個操作目錄

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

授予使用者操作dump_dir目錄的權限

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

使用EXPDP指令導出資料(可以按照表導出,按照使用者模式導出,按照表空間導出和全庫導出),使用IMPDP指令導入資料(可以按照表導入,按照使用者模式導入,按照表空間導出和全庫導入)。

使用基于指令行的資料泵技術對資料庫實施導入和導出。

SQL>col DIRECTORY_NAME for a20

SQL>col DIRECTOR_PATH for a60

SQL>col OWNER for a8

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

建立測試使用者tom并授權

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

導出SCOTT使用者下的emp和dept表

[oracle@dbserver~]$ expdp scott/oracle directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

以SCOTT使用者連接配接,删除SCOTT使用者下的EMP表

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

導入emp表

[oracle@dbserver~]$ impdp scott/oracle directory=dump_dir dumpfile=scotttab.dmp tables=emp

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

emp表已經導入成功了。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

将導出的SCOTT使用者下的DEPT表和EMP表導入到tom使用者下

[oracle@dbserver~]$ impdp system/oracle11g directory=dump_dir dumpfile=scotttab.dmptables=scott.emp,scott.dept REMAP_SCHEMA=SCOTT:TOM

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

檢視導入的結果,使用tom使用者連接配接

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

導出表空間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

在xx表空間上建立一個表aa,并為表插入記錄

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

删除表空間xx的同時删除資料檔案

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

aa表沒有了。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

導入表空間

導入表空間之前,需要建立一個xx表空間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

導入表空間xx

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

驗證,aa表恢複回來了。

導出全庫

[oracle@dbserverorcl]$ expdp system/oracle11g directory=dump_dir dumpfile=full.dmp full=y

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

導入全庫

[oracle@dbserverorcl]$ impdp system/oracle11g directory=dump_dir dumpfile=full.dmp full=y

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

使用閃回技術

為了使資料庫能夠從任何邏輯錯誤中迅速恢複,oracle推出了閃回技術。采用該技術,可以對行級和事物級的資料變化進行恢複,減少了資料恢複的時間,而且操作簡單。通過SQL語句就可以實作資料的恢複,大大提高了資料庫恢複的效率。閃回技術是資料庫恢複技術曆史上一次重大的進步,從根本上改變了資料恢複。

閃回技術包括以下各項:

閃回查詢:(FLASHBACK QUERY):查詢過去某個時間點或某個SCN值時表中的資料資訊

閃回版本查詢(FLASHBACK Version query):查詢過去某個時間段或某個SCN段内表中資料變化的情況。

閃回事物查詢(FLASHBACK Transaction Query):檢視某個事物或所有事物在過去一段時間對資料進行的修改。

閃回資料庫(FLASHBACK Database):将資料庫恢複到過去某個時間點或某個SCN值時的狀态

閃回删除(FLASHBACK drop):将已經删除的表及其關聯的對象恢複到删除前的狀态。

閃回表(FLASHBACK table):将表恢複到過去的某個時間點或某個SCN值時的狀态。

SCN是當oracle資料庫更新後,有DBMS自動維護而累積遞增的一個數字。可以通過查詢資料字典V$DATABASE中的CURRENT_SCN獲得目前的SCN号。

閃回恢複區的含義

oracle推薦指定一個閃回恢複區(FLASHRECOVERY AERA)作為存放備份與恢複相關的預設位置,這樣ORACLE就可以實作自動的基于磁盤的備份與恢複。閃回恢複區是一塊用來存儲恢複相關的檔案的存儲空間,允許使用者集中存儲所有恢複相關的檔案。以下幾種檔案可以存放在閃回恢複區。

控制檔案

歸檔日志檔案

閃回日志

控制檔案和SPFILE自動備份

RMAN備份集

資料檔案拷貝

閃回恢複區主要通過以下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清空之後才可以清空

設定閃回資料庫

設定了閃回恢複區,要啟動閃回資料庫功能,還需要進一步配置,資料必須處于歸檔模式,在設定閃回資料庫

資料庫已經處于歸檔模式:

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

資料庫未啟用閃回資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

建立閃回區域

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

設定閃回資料庫的資料保留周期為一天以min為機關

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

啟用閃回日志

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢是否成功啟用閃回恢複區

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢是否成功啟用閃回資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

閃回資料庫

閃回資料庫能夠使資料迅速的復原到以前的某個時間點或者某個SCN上,這對資料庫從邏輯錯誤中恢複特别有用。而且也是大多數發生邏輯損壞時恢複資料庫最佳的選擇。

使用SCN閃回資料庫

檢視資料庫系統目前SCN

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

改變資料庫目前狀态,模拟建立表TEST10,并插入一條記錄

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

進行閃回資料庫恢複,将資料庫恢複到建立表之前的狀态,即SCN為1238544

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

用RESETLOGS選項打開資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

驗證資料庫的狀态,TEST10表不存在。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢資料庫中目前最早的閃回SCN和時間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

按照指定時間閃回資料庫

查詢資料庫中目前時間和目前SCN

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

改變資料庫的目前狀态,模拟建立表test11,并插入1條記錄

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

進行閃回資料庫恢複,将資料庫恢複到建立表之前的狀态。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

使用RESETLOGS打開資料庫

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

驗證資料庫的狀态test11表是否存在。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

閃回資料庫操作的限制:

資料檔案損壞或丢失等媒體故障不能使用閃回資料庫進行恢複。閃回資料庫隻能基于目前正常運作的資料檔案

閃回資料庫功能啟動後,如果發生資料控制檔案重建或利用備份恢複控制檔案,則不能使用閃回資料庫

不能使用閃回資料庫進行資料檔案收縮操作

不能使用閃回資料庫将資料庫恢複到在閃回日志中可獲得的最早的SCN之前的SCN,因為閃回日志檔案在一定的條件下被删除,而不是始終儲存在閃回恢複區中

閃回表

閃回表是将表恢複到過去的某個時間點或者指定的SCN而不用恢複資料檔案,為DBA提供了一種線上、快速、便捷的恢複方式,可以恢複對表進行的修改、删除、插入等錯誤的操作。

為了使用資料庫閃回功能,必須滿足下列條件

使用者具有FALSHBACKANY TABLE系統權限,或者具有所操作表的FLASHBACK對象權限

使用者具有所操作表的SELECT/INSERT/DELETE/ALTER對象權限

啟動被操作表的ROW MOVEMENT特性,可以采用下列方式進行:

SQL> ALTER TABLE 表名 ENABLE ROWMOVEMENT;

閃回表文法格式:

FLASHBACK TABLE [schema].table TO SCN |TIMESTAMP expression [ENABLE|DISABLE TRIGGERS]

參數說明:

SCN:将表恢複到指定的SCN時的狀态

TIMESTAMP:将表恢複到指定額時間點

ENABLE|DISABLETRIGGERS:在恢複表中資料的過程中,表上的觸發器時禁用還是激活(預設是引用)

舉例說明:

使用SCOTT使用者登入

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

建立表,插入記錄,送出事物

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢目前SCN号,如果目前使用者沒有權限查詢v$database,則以sys使用者登入,授予目前使用者通路資料字典的權限。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

更新記錄,并送出事物

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

檢視表中的記錄

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

删除ID=3的記錄

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

啟動test01表的ROW MOVEMENT特性

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

将test01表恢複到2015-11-22 05:44:48時刻的狀态

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

閃回删除

閃回删除可以恢複使用DROP table語句删除的表,是一種對意外删除的表恢複機制。閃回删除的功能的實作主要是通過oracle資料庫中的“資源回收筒”技術實作的。在oracle資料庫中,當執行DROP table操作時,并不立即收回表及其關聯對象的空間,而是将他們重命名後放入一個稱為“資源回收筒”的邏輯容器中儲存,直到使用者決定永久删除他們或存儲該表的表空間或存儲空間不足時,表才真正被删除,為了使用資料庫的閃回删除技術,必須開啟資料庫的“資源回收筒”

啟動“資源回收筒”将參數RECYCLEBIN設定為ON,在預設情況下“資源回收筒”已經啟動

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如果沒有啟動可以使用:

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

檢視資源回收筒。當執行DROP table 時,表及關聯的對象被命名後儲存在“資源回收筒”中,可以通過查詢USER_RECYCLEBIN DBA_RECYCLEBIN視圖獲得被删除的表及其關聯對象。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

通過USER_RECYCLEBIN檢視被删除的表

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

不支援sys使用者和system使用者,這兩個使用者下的表被删除之後,無法從資源回收筒裡拿到,查詢時為“空”

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如果删除表的時候使用了PURGE短語,則表及其關聯對象呗直接釋放,空間被回收,相關資訊不會進入“資源回收筒”中

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

清空資源回收筒,由于被删除的表級其關聯對象資訊儲存在“資源回收筒”中,其存儲空間并沒有釋放,是以需要定期清空“資源回收筒”。或清除“資源回收筒”中沒有用的對象(表,索引,表空間)釋放其所占用的磁盤空間

文法如下:

PURGE [TABLE 表名 | INDEX index]

[RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACEtablespace [USER user]]

參數說明:

TABLE:從資源回收筒中清除指定的表

INDEX:從資源回收筒中清除指定的索引,并回收其磁盤空間

RECYCLEBIN:清空使用者“資源回收筒”,并回收所有對象的磁盤空間

DBA_RECYCLEBIN:清空整個資料庫系統的“資源回收筒”,隻有具有SYSDBA權限的使用者才可以使用

TABLESPACE :清除“資源回收筒”中指定額表空間,并回收磁盤空間

USER:清除資源回收筒中指定表空間中特定使用者的對象,并回收磁盤空間

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

閃回删除操作,閃回删除的基本文法

FLASHBACK TABLE [schema.]table to BEFOREDROP [RENAME TO table]

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

閃回删除舉例說明:

Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複
Oracle 11g R2 Rman、資料泵、閃回備份與恢複

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

閃回查詢

允許根據時間點timestamp或SCN檢視就的資料,除了可以檢視舊資料,需要時可以通過檢索舊資料來撤銷錯誤的更改。

使用SCOTT使用者登入,對EMP表基于AS of TIMESTAMP的閃回查詢

SQL> show user;

USER is "SCOTT"

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

更新員工号為7900的工資,更新為2000,并送出事物

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

更新員工号為7900的工資,更新兩次,送出事物。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

更新員工号為7900的工資,更新為3500,并送出事物

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

檢視7900号員工的更新後工資。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢7900号員工前一個小時的工資是多少

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢第一個事物送出,第二個事物還沒有送出時7900員工的工資

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

查詢第二個事物送出,第三個事物還沒有送出時的7900号員工的工資

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如果需要,可以将資料恢複到過去某個時刻的狀态。

Oracle 11g R2 Rman、資料泵、閃回備份與恢複

如果對此有興趣,請掃下面二維碼免費擷取更多詳情

Oracle 11g R2 Rman、資料泵、閃回備份與恢複