首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Data Guard 备库闪回恢复主库误 Drop/Truncate/Delete 的表

     編輯:Oracle 教學

Data Guard 备库闪回恢复主库误 Drop/Truncate/Delete 的表

前提條件

  • Standby Database 已啟用 Flashback Database 模式
  • 誤操作時間點在 DB_FLASHBACK_RETENTION_TARGET 保留窗口內
  • 所需閃回日誌與歸檔日誌完整可用

操作步驟 (參考 MOS Doc ID 958557.1)

  1. 主庫誤操作 (示例):
    SQL> TRUNCATE TABLE SCOTT.TEST_TAB_1;  -- 或 DROP / DELETE
  2. 備庫取消應用日誌並關閉:
    SQL> RECOVER MANAGED STANDBY DATABASE CANCEL;
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
  3. 備庫閃回到誤操作前時間點:
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  -- 確保取消
    SQL> FLASHBACK DATABASE TO TIMESTAMP TO_DATE('2015-07-31 22:10:00','YYYY-MM-DD HH24:MI:SS');
  4. 備庫以 READ ONLY 開啟驗證資料:
    SQL> ALTER DATABASE OPEN READ ONLY;
    SQL> SELECT COUNT(*) FROM SCOTT.TEST_TAB_1;  -- 應回到 2566 筆
  5. 導出該表 (Data Pump/Exp):
    $ exp system/oracle file=/home/oracle/test_tab_exp_0730.dmp tables=SCOTT.TEST_TAB_1
  6. 備庫恢復正常同步:
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> RECOVER STANDBY DATABASE;  -- 或 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
  7. 主庫導入資料 (或用 Data Pump TABLE_EXISTS_ACTION=REPLACE)。

關鍵點:
1. 必須在 MOUNT 階段 執行 FLASHBACK DATABASE。
2. 閃回後 READ ONLY 驗證 → 導出 → 恢復同步,不可直接在備庫修改資料。
3. 若主庫已補上歸檔缺口,RECOVER STANDBY DATABASE 會自動追上;否則需手動傳送缺失歸檔。
4. 生產環境建議定期演練此流程,確認 DB_FLASHBACK_RETENTION_TARGET 足夠覆蓋 RPO。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved