基於SCN閃回資料庫

skyin_1603發表於2016-10-03
由我的上一篇部落格《閃回資料看的事情》寫到一些閃回資料庫的步驟與方法,4種方法中,其中以一種
就是本文講述的:基於SCN(資料庫系統改變號)閃回資料庫,SCN由dbms_flashback.get_system_change_number
查得,語句為: select dbms_flashback.get_system_change_number as scn  from dual;

在例項資料庫中的Scott使用者下:

1、建立實驗表:

SQL> create  table  fbdb_scn  as  select  1  as

  2  id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

Table created.

SQL> select * from fbdb_scn;

        ID        SCN       DD

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

         1     776652    2016-10-01 10:24:50
此時,檢視當時的系統改變號

SQL> select dbms_flashback.get_system_change_number as scn from  dual;

       SCN

    ----------

    776717
2、接著,再次向表fbdb_scn插入第二條資料,並檢視:

SQL> insert  into  fbdb_scn  select  2  as

  2  id,dbms_flashback.get_system_change_number as scn,sysdate as dd from dual;

1 row created.

SQL> commit;

Commit complete.

SQL> select * from fbdb_scn;

        ID        SCN      DD

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

         1     776652   2016-10-01 10:24:50

         2     776729   2016-10-01 10:28:02

3、模擬刪除Scott使用者:

SQL> drop user scott cascade;

User dropped.


刪除Scott使用者之後,關閉資料庫,模擬閃回資料庫,恢復到剛才查詢到的系統改變號為  776717時的狀態。

4、關閉資料庫,重啟資料庫並恢復:

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.


SQL> flashback database to scn 776717;

Flashback complete.

SQL> alter database open;

alter database open

*

ERROR at line 1:

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

 (此處報的錯誤,是要求我們以RESETLOGS方式開啟資料庫

SQL> alter database open RESETLOGS;

Database altered.
在sys使用者下檢視,再關閉資料庫前已經刪除的Scott使用者是否被恢復回來(以下看到已經閃回回來)

SQL> select username from dba_users where username='SCOTT';

USERNAME

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

SCOTT
登入Scott使用者,檢視閃回資料庫到改變號為776717的狀態,檢視是否達到預期的效果。

conn scott/tiger0520

SQL> select * from fbdb_scn;

        ID        SCN DD

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

         1     776652 01-OCT-16      ------------(該處的時間跟上面顯得有些不一樣,是因為會話設定的時間顯示格式不一致,此處我們參考SCN號)

對上下兩次查詢的資料可以知道,刪除了的使用者透過閃回資料庫技術,把使用者Scott及其表都被恢復回來,並驗證沒有丟失資料,達到恢復效果。
也就是說,當我們知道某個時間點對應的系統改變號,可以透過閃回資料庫的方式,快速地恢復解決一些資料庫損壞的情況。



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

相關文章