【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫

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

 基於 SCN 閃回資料庫
1) 建立測試環境並獲取當前 SCN

SCOTT@ORA11GR2>create table fbdb_scn as select 1 as id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

 

Table created.

 

SCOTT@ORA11GR2>select * from fbdb_scn;

 

        ID        SCN DD

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

         1    1873185 2016-10-01 07:17:06

 

--得到此時的 SCN,本次測試將資料庫倒帶到此處,也就是,最終的結果, fbdb_scn 表中只有一
條記錄。

SCOTT@ORA11GR2>select dbms_flashback.get_system_change_number as scn from dual;

 

       SCN

----------

   1873323

(或者在sys使用者select current_scn from v$database;)

 

SCOTT@ORA11GR2>insert into fbdb_scn 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_scn;

 

        ID        SCN DD

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

         1    1873185 2016-10-01 07:17:06

         2    1873381 2016-10-01 07:22:46

 

2) 刪除 scott 使用者

SCOTT@ORA11GR2>conn / as sysdba

Connected.

SYS@ORA11GR2>drop user scott cascade;

 

User dropped.

 

3) 資料庫啟動到 mount 模式,為閃回資料庫做準備

SYS@ORA11GR2>shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@ORA11GR2>

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.

正常關庫,一致性狀態儲存。啟動mount,利用控制檔案找到閃回日誌,並應用閃回日誌。

 

4) 執行基於 SCN 閃回資料庫操作

SYS@ORA11GR2>flashback database to scn 1873323;

 

Flashback complete.

 

5) RESETLOGS 選項開啟資料庫

SYS@ORA11GR2>alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

(因為閃回資料庫相當於倒帶,無法應用日誌恢復到閃回時刻,屬於不完全恢復,為了保證日誌資訊和控制檔案等一致性狀態,必須resetlogs重置日誌)

 

SYS@ORA11GR2>alter database open resetlogs;

 

Database altered.

 

6) 驗證基於 SCN 閃回資料庫

SYS@ORA11GR2>select username from dba_users where username='SCOTT';

 

USERNAME

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

SCOTT

 

SYS@ORA11GR2>select * from scott.fbdb_scn;

 

        ID        SCN DD

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

         1    1873185 01-OCT-16

 

Scott使用者回來了,以及表fbdb_scn資料也只有一條。

7) 小結
- 成功的恢復了 scott 使用者
- 測試表 fbdb_scn 中的資料也是我們驗證的結果
- 因為是基於準確的 SCN 執行的閃回資料庫,所以沒有必要以 readonly 方式開啟資料庫來驗證
結果

 

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

相關文章