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

Oracle 資料庫緊急故障處理實戰手冊 (六):邏輯錯誤與 LogMiner 復原

     編輯:Oracle 資料庫基礎

邏輯結構故障處理三大法

物理結構完整,因人為誤操作 (Drop Table、錯誤 Update/Delete) 導致資料遺失。

方法一:Exp/Imp 還原

  1. 建立暫時使用者:CREATE USER test_user IDENTIFIED BY test; GRANT CONNECT, RESOURCE TO test_user;
  2. 從舊備份匯入遺失表:imp system/manager file=exp.dmp tables=lost_table fromuser=owner touser=test_user constraints=n
  3. 用 DML 將資料搬回原使用者。
  4. 刪除暫時使用者:DROP USER test_user CASCADE;

方法二:LogMiner 分析 Redo/Archive Log 復原

  1. 確認 utl_file_dir 參數並重啟。
  2. 建立字典:EXEC dbms_logmnr_d.build('dict.ora', '/opt/oracle/db01');
  3. 依誤操作時間確定日誌範圍 (線上 + 歸檔)。
  4. 加入日誌清單:EXEC dbms_logmnr.add_logfile('...arch...', dbms_logmnr.new); EXEC dbms_logmnr.add_logfile('...redo...', dbms_logmnr.addfile);
  5. 啟動分析:EXEC dbms_logmnr.start_logmnr(dictfilename=>'...', starttime=>to_date('2003-06-28 12:00:00',...), endtime=>to_date('2003-06-28 13:00:00',...));
  6. 查詢 v$logmnr_contents 取得 sql_redo (重做) 與 sql_undo (回滾) 敘述。
  7. 執行 sql_undo 修復資料。
  8. 結束:EXEC dbms_logmnr.end_logmnr;
  9. 對原庫做完整備份。

方法三:備份在新機器恢復至誤操作前時間點

  1. 新機安裝同版 Oracle 與備份軟體。
  2. 依時間點恢復 (冷備份用近期磁帶;熱備份用 RMAN 時間點腳本)。
  3. ALTER DATABASE OPEN RESETLOGS;
  4. 從新庫取出遺失資料,DML 寫回原庫。
  5. 原庫做完整備份。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved