程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle數據庫備份與恢復(5):Flashback

Oracle數據庫備份與恢復(5):Flashback

編輯:關於Oracle數據庫

   Flashback在開發環境(有時生產環境的特殊情況下)是很有用的一個工具。

    5.1 9i Flashback 簡介

    5.1.1  原理

    當數據  update  或  delete  時,原來的數據會保存在  undo  表空間中,保存的最少時間是 UNDO_RETENTION.實際的保存時間與 undo表空間的大小和數據更改的繁忙程度相關。 UNDO_RETENTION 的參數(單位為秒)指定 Oracle保存用於 flashback查詢的 undo映像 的時間。一般你可以將這個值設為一整天(864000秒),這樣你就能看到前一天全天的映像。 當然,你的在線 undo日志必須足夠大,大到足以能保存一整天的 undo日志數據,對於繁忙的 Oracle系統,這個數值可以達到很大。

    5.1.2  一些限制

    服務器必須配置成使用自動 undo管理。

    在使用 Flashback查詢時不能使用 DDL或者 DML.

    Flashback 不取消 DDL操作,例如 DROP命令。 數據庫管理員做一些必要的設置之後,一般用戶才能使用 Flashback查詢功能:

    SQL> ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO

    SQL> ALTER SYSTEM SET UNDO_RETENTION=86400

    SQL> GRANT EXECUTE ON DBMS_FLASHBACK TO USERNAME;

    5.1.3  獲得SCN或時間點

    在 Flashback 時,可以嘗試多個 SCN,獲取最佳值。

    如果能得知具體時間,那麼可以獲得准確的數據閃回。

    SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; SQL> select sysdate from v$database;

    捕捉提交的 SCN:  //  不知為什麼,兩種方法獲得的 SCN不一樣

    SQL> select dbms_flashback.get_system_change_number scn from dual;

    SQL> select max(ktuxescnw * power(2,32) + ktuxescnb) SCN from x$ktuxe;

    5.1.4  啟用或禁用flashback查詢

    使用系統改變數(SCN)或者真實時間來指定 flashback 的時間點來獲取數據映象。

    方法一:SQL> select * from [TABLE] as of scn 129292;

    SQL> select * from [TABLE] as of timestamp to_timestamp('時間', ‘時間格式');

    SQL>  select  *  from  saflog  as  of  timestamp  to_timestamp('2007-12-18  08:40:00','YYYY-MM-DD HH24:MI:SS');

    方法二:啟用:

    SQL> exec dbms_flashback.enable_at_system_change_number(112112);

    SQL> exec dbms_Flashback.enable_at_time('28-AUG-02 11:00:00');啟用後看到的只是閃回的結果,實際上並未恢復數據。且閃回狀態下不能做DML操作。可以先恢復到一個臨時表中。見示例。

    禁用:SQL> execute dbms_flashback.disable();

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved