Oracle中模拟及修复数据块损坏

2014-11-24 17:36:26 · 作者: · 浏览: 0

1.插入数据



2.损坏数据文件


关闭数据库后用Ultredit编辑数据文件,随便更改几个字符.然后启动数据库.


此时如果查询该表,会出现错误,数据块损坏无法读取.


有个内部工具BBED也可以用来编辑数据块的内容


3.使用DBV检查数据文件


dbv检测到坏块.


4.寻求恢复


在这种情况下,如果有备份,需要从备份中恢复
如果没有备份,那么坏块部分的数据肯定要丢失了


在这个时候导出是不允许的:


5.恢复步骤


当然,对于不同的情况需要区别对待


首先你需要检查损坏的对象,使用以下SQL:


如果损失的是数据,ok
我们可以设置内部事件,使exp跳过这些损坏的block


note:


ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10' ;


内部事件,设置在全表扫描时跳过损坏的数据块.



然后我们可以导出未损坏的数据


这时候数据成功导出.
然后我们可以drop table,recreate,然后导入数据


本例中
我们损失了


8192 - 8036 = 156 行数据


完成数据恢复


作者:eygle | English Version 【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】
链接:http://www.eygle.com/archives/2004/06/oracle_block_recovery.html