()确定发生坏块的数据库对象 SELECT tablespace_name segment_type owner segment_name FROM dba_extents WHERE file_id = AND between block_id AND block_id+blocks; ()决定修复方法 假如发生坏块的对象是一个索引那么可以直接把索引DROP掉后再根据表里的记录进行重建假如发生坏块的表的记录可以根据其它表的记录生成的话那么可以直接把这个表DROP掉后重建假如有数据库的备份则恢复数据库的方法来进行修复假如表里的记录没有其它办法恢复那么坏块上的记录就丢失了只能把表中其它数据坏上的记录取出来然后对这个表进行重建 ()用Oracle提供的DBMS_REPAIR包标记出坏块 exec DBMS_REPAIRSKIP_CORRUPT_BLOCKS(); ()使用Create table as select命令将表中其它块上的记录保存到另一张表上 create table corrupt_table_bak as select * from corrupt_table; ()用DROP TABLE命令删除有坏块的表 drop table corrupt_table; ()用alter table rename命令恢复原来的表 alter table corrupt_table_bak rename to corrupt_table; ()假如表上存在索引则要重建表上的索引 [] [] |