Oracle数据块损坏恢复

今天在网上搜到这个地址:
http://www.eygle.com/faq/Block_corruption.htm
很好,很强大。
主要是利用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,再导入。

折腾半天,还是有数据丢失的情况,所以一定要做好备份策略,这才是万全之策。

你可能感兴趣的:(oracle,sql)