1,先通过rman进行数据库的全备份(backup database)
2,关闭数据库
3,通过ultraEdit对数据文件进行编辑,然后保存
注意:修改时不能修改到数据文件头信息(因为要进行scn校验,如果修改了数据文件头的8个块可能导致数据库无法正常启动),应该尽量在中间地方修改
4,打开数据库,查询更改的数据文件中表的信息
5,可以通过oracle自带的工具dbv来进行查询哪些块出现了块折断
dbverify工具的主要目的是为了检查数据文件的物理结构,包括数据文件是否损坏,是否存在逻辑坏块,以及数据文件中包含何种类型的数据。
进行数据文件块校验时dbv USERID=username/passwordSEGMENT_ID=tsn.relfile.block
可以通过sys_dba_segs表获取tablespace_id,header_file, header_block三个字段,他们分别对应tsn,relfile,block.
但是在进行数据文件的校验时:
db没有启动,要进入数据文件的存放目录后在运行该命令,不然会报找不到数据文件
Db启动,直接输入文件位置即可
6,也可以通过对表结构进行分析
Analyze table t validate structure casecade --将表的索引等也一起分析(只能显示出一个)
7,还有中方式是通过rman对数据文件,数据库进行检查,查询出来后放入表 v$database_block_corruption中;
8,如果有rman备份可以直接恢复数据块
Rman>blockrecover datafile 5 block 587;
本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/07/24/2606321.html