今天在网上搜到这个地址:
[url]http://www.eygle.com/faq/Block_corruption.htm[/url]
很好,很强大。
主要是利用DBV检查数据文件,检测坏块
在这种情况下,如果有备份,需要从备份中恢复
如果没有备份,那么坏块部分的数据肯定要丢失了
在这种情况下,不允许导出。
检查损坏对象
如果损失的是数据可以设置内部事件,使exp跳过这些损坏的block
然后导出数据,并删除损坏的table,再导入。
折腾半天,还是有数据丢失的情况,所以一定要做好备份策略,这才是万全之策。
[url]http://www.eygle.com/faq/Block_corruption.htm[/url]
很好,很强大。
主要是利用DBV检查数据文件,检测坏块
CMD>dbv file=block.dbf blocksize=8192
在这种情况下,如果有备份,需要从备份中恢复
如果没有备份,那么坏块部分的数据肯定要丢失了
在这种情况下,不允许导出。
检查损坏对象
SQL>SELECT tablespace_name, segment_type, owner, segment_name
FROM dba_extents WHERE file_id = 4
and 35 between block_id AND block_id + blocks - 1;
TABLESPACE_NAME SEGMENT_TYPE OWNER SEGMENT_NAME
---------------------------------------------------------------------------
BLOCK TABLE EYGLE T
如果损失的是数据可以设置内部事件,使exp跳过这些损坏的block
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';
然后导出数据,并删除损坏的table,再导入。
折腾半天,还是有数据丢失的情况,所以一定要做好备份策略,这才是万全之策。