【備份恢復】閃回資料庫(四)基於可靠還原點閃回資料庫

不一樣的天空w發表於2016-10-17

基於可靠還原點閃回資料庫
還原點概念
Restore point 有兩種型別: Normal Guaranteed
1) Normal restore point
建立語法:create restore point rp_name;
相當於某個時間點或者 SCN 的一個別名。 restore point 的名字和對應的 SCN 會儲存在控制檔案中。建立了 normal restore point 後,如果需要執行 flashback database/flashback
table/point-in-time recovery 等操作時,就可以制定目標時間點為該 restore point,而不需要指定當時的 SCN 了。在很多關於恢復和閃回的試驗中,作者都是在試驗前查詢系統當前的 SCN,執行某些操作,然後恢復或者閃回到之前查詢到的 SCN。有了 normal restore point 後,就不再需要查詢系統當前 scn 了,只需要建立一個有意思的 normal restore point 名,以後使用該名字即可。

—————————————————————————————————————————————
1 Normal restore point
儲存在 undo 表空間中
2:必須擁有 SELECT ANY DICTIONARY FLASHBACK ANY TABLE 許可權才可以建立 Normal 還原點

—————————————————————————————————————————————
2) Guaranteed restore point
建立語法:
create restore point rp_name guarantee flashback database;
Guaranteed restore point 的功能和 normal restore point 的功能基本一致,也是作為SCN 的一個別名。但是它還有一些和 flashback database 相關的特性。前面也提到,在執行flashbackdatabase 到之前的某個時間點時,必須保證所需要的 flashback log 存在。
建立一個 guaranteed restore point可以保證能將資料庫 flashback 到該點,即使沒有系統啟用 flashback database 日誌!這是因為,在建立 guaranteed restore point 之後,對於任何 block 的第一次變更,都會將其前映象整個的記錄下來
如果系統啟用了 flashback database 日誌,那麼 guaranteed restore point 可以保證能將資料庫 flashback guaranteed restore point 之後的任何時間點。
一旦建立了可靠還原點,要密切關注 flashback_recovery_area 空間的使用情況,因為在建立guaranteed restore point 之後,對於任何 block 的第一次變更,都會將其前映象整個的記錄下來。所以當不再使用某一可靠還原點後要及時刪除;

——————————————————————————————————————————————
1 Guaranteed restore point 儲存在閃回日誌中
   2:必須擁有 SYSDBA 系統許可權才有權建立可靠還原點
   3:必須啟用快速恢復區
   4:資料庫必須處於歸檔模式
3) 刪除語法: drop restore point point_name;

 

1.7.2. 測試基於可靠還原點閃回資料庫
1) SCOTT 使用者下建立測試表並插入一條記錄

SCOTT@ORA11GR2>create table fbdb_point as select * from fbdb_scn where 1=2;

 

Table created.

 

SCOTT@ORA11GR2>insert into fbdb_point select 1 as id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

 

1 row created.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

SCOTT@ORA11GR2>select * from fbdb_point;

 

        ID        SCN DD

---------- ---------- -------------------

         1    1876290 2016-10-01 08:12:39

2) 連線到 sys 使用者建立可靠還原點,因為只有擁有 sysdba 系統許可權的使用者才有權建立可靠還原點

SCOTT@ORA11GR2>conn / as sysdba

Connected.

SYS@ORA11GR2>create restore point rp_fbdb guarantee flashback database;

 

Restore point created.

 

3) 再次插入一條記錄,驗證當閃回到可靠還原點後,本次插入的記錄將不存在

SYS@ORA11GR2>conn scott/tiger;

Connected.

SCOTT@ORA11GR2>insert into fbdb_point select 2 as id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

 

1 row created.

 

SCOTT@ORA11GR2>commit;

 

Commit complete.

 

SCOTT@ORA11GR2>select * from fbdb_point;

 

        ID        SCN DD

---------- ---------- -------------------

         1    1876290 2016-10-01 08:12:39

         2    1876411 2016-10-01 08:15:48

 

4) 刪除 SCOTT 使用者,資料庫啟動到 mount 模式

SCOTT@ORA11GR2>conn / as sysdba

Connected.

SYS@ORA11GR2>drop user scott cascade;

 

User dropped.

 

SYS@ORA11GR2>shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@ORA11GR2>startup mount;

ORACLE instance started.

 

Total System Global Area  730714112 bytes

Fixed Size                  2256832 bytes

Variable Size             452984896 bytes

Database Buffers          272629760 bytes

Redo Buffers                2842624 bytes

Database mounted.

5) 執行基於還原點的閃回資料庫

SYS@ORA11GR2>flashback database to restore point rp_fbdb;

 

Flashback complete.

 

6) resetlogs 方式開啟

SYS@ORA11GR2>alter database open resetlogs;

 

Database altered.

注 既然是還原點,那麼那個還原點一定是我想還原到的地方,所以無需 read only 開啟驗證

 

7) 驗證結果

SYS@ORA11GR2>select * from scott.fbdb_point;

 

        ID        SCN DD

---------- ---------- ---------

         1    1876290 01-OCT-16

 

SYS@ORA11GR2>conn scott/tiger

Connected.

SCOTT@ORA11GR2>select * from scott.fbdb_point;

 

        ID        SCN DD

---------- ---------- -------------------

         1    1876290 2016-10-01 08:12:39

 

SCOTT@ORA11GR2>conn / as sysdba

Connected.

 

8) 檢視還原點,將其刪除

SYS@ORA11GR2>select name,scn,storage_size,guarantee_flashback_database from v$restore_point;

 

NAME                   SCN STORAGE_SIZE GUA

--------------- ---------- ------------ ---

RP_FBDB            1876367     52428800 YES

 

SYS@ORA11GR2>drop restore point rp_fbdb;

 

Restore point dropped.

 

SYS@ORA11GR2>select name,scn,storage_size,guarantee_flashback_database from v$restore_point;

 

no rows selected

注: 用完可靠還原點以後,一定要記得將其刪除,因為啟用了可靠還原點,那麼資料庫的一舉一動都會記錄閃回日誌中,從啟用可靠還原點起,直到刪除,這個期間是不受閃回日誌保留期限的約束的,也就是說,只要你不刪除可靠還原點,那麼日誌就一直保留著,確實夠意思,真沒白叫可靠還原點。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2126613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章