熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

丟失歸檔日志文件後數據庫應當如何恢復[2]

2013-11-13 12:35:14  來源: SQL語言 

  這裡是Oracle使用其硬線路的位置由於轉儲的數據文件不能恢復到與其他文件一致的位置所以可能存在中斷的數據並且Oracle不允許正常打開數據庫

  第設置未文檔化的實例參數並打開數據庫

  在初始化參數文件中首先需要將job_queue_processes設置為然後設置_allow_resetlogs_corruption=TRUE更改該參數後切換到保存新控制文件的目錄第一步創建的位置然後以 SYSDBA連接並運行新的控制文件創建腳本

  此時數據庫可以打開了

  SQL> SELECT COUNT(*) FROM OEorders;

  第執行導出並提取數據

  在這一步可以很容易的看到那些表導出了全部的數據

  第轉儲備份的數據庫

  這一步以及下面兩步可選這三步結合在一起允許提取更多的數據這一步從備份的數據庫轉儲可以高效的撤銷任何由於使用_allow_resetlogs_corruption參數造成的毀壞因此這一步不會恢復任何丟失的數據文件

  第使毀壞的數據文件offline

  ALTER DATABASE DATAFILE /u/oradata/PRD/ordtabdbf OFFLINE;

  這一步得到數據庫的完全一致性狀態

  第執行導出並提取額外的數據

  這一步可能能夠提取從第四步不能提取的額外數據如索引中的數據

  第轉儲數據庫

  這是最後一次轉儲數據庫這一步正式回滾數據庫到使用隱含參數前那一刻然後將數據庫返回到正常狀態如果從第五步轉儲以來沒有更新任何數據可以跳過這一步

  第刪除有問題的表空間

  首先需要查看是否有完整性約束限制使用以下查詢

  SELECT CRconstraint_name
  FROM dba_constraints CR dba_constraints CP dba_tables TP dba_tables TR
  WHERE CRr_owner = CPowner
  AND CRr_constraint_name = CPconstraint_name
  AND CRconstraint_type = R
  AND CPconstraint_type IN (P U)
  AND CPtable_name = TPtable_name
  AND CPowner = TPowner
  AND CRtable_name = TRtable_name
  AND CRowner = TRowner
  AND TRtablespace_name <> ORDTAB
  AND TPtablespace_name = ORDTAB;

  如果有約束可能需要創建重建腳本如果使用export dump重建數據約束可以從導出文件轉儲

  DROP TABLESPACE ordtab INCLUDING CONTENTS CASCADE CONSTRAINTS;

  第重建表空間

  第重建數據

  執行導入後結束

[]  []  


From:http://tw.wingwit.com/Article/program/SQL/201311/16188.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.