oracle坏块检测工具:DBV

1定义

oracle的坏块可分为物理坏块和逻辑坏块。坏块损坏信息类似为:
ORA-01578: ORACLE data block corrupted (file # 6, block # 11)
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'
DBVERIFY工具的主要目的是为了检查数据文件、控制文件的物理结构,包括数据文件是否损坏,是否存在逻辑坏块,以及数据文件中包含何种类型的数据。不管数据库是否打开,都可以访问数据文件,也就是无论其是online还是offline。在Unix系统中位于:$ORACLE_HOME/bin/dbv。

Oracle数据文件的坏块,可分为物理坏块和逻辑坏块。物理坏块(也可以称为介质坏块)指的是块格式本身是坏的,块内的数据没有任何意义。而逻辑坏块,指的是块内的数据在逻辑是存在问题。比如说索引块的索引值没有按从小到大排列。物理坏块一般是由于内存问题、OS问题、IO子系统问题和硬件引起,逻辑坏块一般是是由于Oracle Bug等原因引起。

2命令

  1. C:\Users\Administrator>dbv
  2. DBVERIFY:Release10.2.0.1.0-Productionon星期四9月2001:24:372012
  3. Copyright(c)1982,2005,Oracle.Allrightsreserved.
  4. 关键字说明(默认值)
  5. ----------------------------------------------------
  6. FILE要验证的文件(无)
  7. START起始块(文件的第一个块)
  8. END结束块(文件的最后一个块)
  9. BLOCKSIZE逻辑块大小(8192)
  10. LOGFILE输出日志(无)
  11. FEEDBACK显示进度(0)
  12. PARFILE参数文件(无)
  13. USERID用户名/口令(无)
  14. SEGMENT_ID段ID(tsn.relfile.block)(无)
  15. HIGH_SCN要验证的最高块SCN(无)
  16. (scn_wrap.scn_base或scn)

注释:
① 如果feedback=1000,则验证1000个块显示一个.这个符号
② USERID --当验证asm文件时,要指定
③ FILE --用户指定要验证的数据文件名
④ BLOCKSIZE --指定数据文件的尺寸,缺省值为8192,对于非8192块将收到DBV-00103错误
⑤ PARFILE --可以像使用expdp/impdp一样,将一些选项置于参数文件里面
⑥ SEGMENT_ID --校验段,需要表空间ID,数据文件ID,段的头部ID

3限制

①DBV受版本限制,高版本可以自动识别低版本数据库,比如11g的dbv访问9i的数据库,但是低版本的dbv访问高版本会报错。
②不支持联机日志文件,归档日志,RMAN备份集验证

4案例

案例(一)

  1. C:\Users\Administrator>dbvfile=d:\oracle\product\10.2.0\oradata\ORCL\DATAFILE\O1_MF_USERS_7TQZTYTO_.DBF
  2. DBVERIFY:Release10.2.0.1.0-Productionon星期四9月2001:04:072012
  3. Copyright(c)1982,2005,Oracle.Allrightsreserved.
  4. DBVERIFY-开始验证:FILE=d:\oracle\product\10.2.0\oradata\ORCL\DATAFILE\O1_MF_USERS_7TQZTYTO_.DBF
  5. DBVERIFY-验证完成
  6. 检查的页总数:42560----校验的总页面数,一个页面即是一个数据块
  7. 处理的页总数(数据):40681
  8. 失败的页总数(数据):0
  9. 处理的页总数(索引):97
  10. 失败的页总数(索引):0
  11. 处理的页总数(其它):592
  12. 处理的总页数(段):0
  13. 失败的总页数(段):0
  14. 空的页总数:1190
  15. 标记为损坏的总页数:0
  16. 流入的页总数:0
  17. 最高块SCN:4772756(0.4772756)


可以看到,dbverify给出的结果包括数据文件包括的BLOCK数量,其中包括多少个数据块,多少个索引块,多少空块,多少个已经被标志为坏块的块,多少个坏块。注意:如果Total Pages Influx的值大于零,且未存在坏块的情况下,是由于针对open状态的文件运行dbv程序遇到了一个当前正在被DBWn进程写入的数据块。

案例(二)

DBV工具还有一种在数据库打开的情况下使用的,验证指定段的使用情况

  1. 01:18:15sys@ORCL(^ω^)SELECTTABLESPACE_ID,HEADER_FILE,HEADER_BLOCK
  2. 01:19:272FROMSYS_DBA_SEGS
  3. 01:19:273WHERESEGMENT_NAME='S_EMP'
  4. 01:19:294/
  5. TABLESPACE_IDHEADER_FILEHEADER_BLOCK
  6. ------------------------------------
  7. 44603
  8. C:\Users\Administrator>DBVuserid=hr/hrsegment_id=4.4.603
  9. DBVERIFY:Release10.2.0.1.0-Productionon星期四9月2001:22:042012
  10. Copyright(c)1982,2005,Oracle.Allrightsreserved.
  11. DBVERIFY-开始验证:SEGMENT_ID=4.4.603
  12. DBVERIFY-验证完成
  13. 检查的页总数:8
  14. 处理的页总数(数据):5
  15. 失败的页总数(数据):0
  16. 处理的页总数(索引):0
  17. 失败的页总数(索引):0
  18. 处理的页总数(其它):2
  19. 处理的总页数(段):1
  20. 失败的总页数(段):0
  21. 空的页总数:0
  22. 标记为损坏的总页数:0
  23. 流入的页总数:0
  24. 最高块SCN:4689412(0.4689412)

你可能感兴趣的:(oracle)