数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

丢失归档日志文件后数据库应当如何恢复[2]


发布日期:2022年07月26日
 
丢失归档日志文件后数据库应当如何恢复[2]

这里是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;

重建表空间

重建数据

执行导入后结束

[] []

               

上一篇:丢失归档日志文件后数据库应当如何恢复[1]

下一篇:Sql语言基础教程 sql的变量和运算符