Oracle数据块损坏恢复

今天在网上搜到这个地址:
http://www.eygle.com/faq/Block_corruption.htm
很好,很强大。
主要是利用DBV检查数据文件,检测坏块
Cmd代码
  1. CMD>dbv file=block.dbf blocksize=8192  

在这种情况下,如果有备份,需要从备份中恢复
如果没有备份,那么坏块部分的数据肯定要丢失了
在这种情况下,不允许导出。
检查损坏对象
Sql代码
  1. SQL>SELECT tablespace_name, segment_type, owner, segment_name   
  2. FROM dba_extents WHERE file_id = 4   
  3. and 35 between block_id AND block_id + blocks - 1;   
  4.   
  5. TABLESPACE_NAME SEGMENT_TYPE OWNER SEGMENT_NAME   
  6. ---------------------------------------------------------------------------   
  7. BLOCK TABLE EYGLE T  

如果损失的是数据可以设置内部事件,使exp跳过这些损坏的block
Sql代码
  1. ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';   

然后导出数据,并删除损坏的table,再导入。

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

你可能感兴趣的:(oracle,sql,File,table,System,events)