这里是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;
第步重建表空间
第步重建数据
执行导入后结束
[] []