這裡是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