一、可以使用dbv进行校验
注意,dbv工具只可以对数据文件进行检查,无法使用它完成控制文件和日志文件的检查。
1.dbv命令语法
dbverify ::=
dbv [ USERID=username/password ]
FILE = filename
| { START = block_address | END = block_address }
| BLOCKSIZE = integer
| HIGH_SCN = integer
| LOGFILE = filename
| FEEDBACK = integer
| HELP = { Y | N }
| PARFILE = filename
End of description.
1)查看数据文件名称
select name from V$datafile;
/dev/oraebdata53
2)使用dbv工具对users01.dbf进行检查
(1)使用最简单的参数
oracle> !dbv file=/dev/roraebdata53
在实际使用中重点关注以下信息:
Total Pages Failing (Data) : 0
Total Pages Failing (Index): 0
Total Pages Failing (Seg) : 0
Total Pages Marked Corrupt : 0
如果以上信息返回结果不为0,需要重点关注!及时排查原因。
3)如果指定logfile参数,检查结果将只记录在日志文件中,屏幕上不显示
oracle> !dbv file=/dev/oraebdata53 logfile=/dev/oraebdata53.log
4)时可以使用SQL*Plus的edit命令查看生成的日志文件内容。
oracle> ed oraebdata53.log
二、如果索引出现坏块可以考虑删除索引后重建索引,一般不建议使用rebuild选项重现创建索引
三、可以设置10231事件或者使用dbms_repair包,从而在全表扫描时可以跳过坏块,也可以使用rowid range scan跳过坏块
四。使用Bbed工具尝试修复坏块,这个修复过程较为复杂且风险较大,慎用。