DBV工具

在许多UNIX平台下,DBV要求数据文件有扩展名,如果没有可以通过建立链接的方法,然后对链接文件进行操作,比如:

  
  
  
  
  1. ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf  

某些平台,DBV工具不能检查超过2GB的文件,如果碰到DBV-100错误,请先检查文件大小,Metalink Bug 710888对这个问题有描述。
DBV只会检查数据块的正确性,但不会关心数据块是否属于哪个对象。

这个命令提供的参数如表10-1所示。

表10-1 DBV命令参数表

 

   

   

   

FILE

要检查的数据文件名

没有缺省值

START

检查起始数据块号

数据文件的第一个数据块

END

检查的最后一个数据块号

数据文件的最后一个数据块

BLOCKSIZE

数据块大小,这个值要和数据库

DB_BLOCK_SIZE参数值一致

缺省值8192

LOGFILE

检查结果日志文件

没有缺省值

续表

   

   

   

FEEDBACK

显示进度

0

PARAFILE

参数文件名

没有缺省值

USERID

用户名、密码

没有缺省值

SEGMENT_ID

ID,参数格式

<tsn.segfile.segblock>

没有缺省值

下面这个例子检查users01.dbf文件。

  
  
  
  
  1.  1. [oracle@dbs ~]dbv file=users01.dbf blocksize=2048  
  2.  2.   
  3.  3.         DBVERIFY - Verification starting : FILE = users01.dbf   
  4.  4.         kdbchk: a row ends in the middle of another   
  5.  5.                  tab=0 slot=1 begin=0x7a0 len=0x14  
  6.  6.         Page 3 failed with check code 5   
  7.  7.         Page 10 is marked software corrupt   
  8.  8.         Page 12 is marked software corrupt   
  9.  9.   
  10. 10.         DBVERIFY - Verification complete   
  11. 11.   
  12. 12.         Total Pages Examined            : 512   
  13. 13.         Total Pages Processed (Data)        : 1   
  14. 14.         Total Pages Failing   (Data)        : 1   
  15. 15.         Total Pages Processed (Index)       : 0   
  16. 16.         Total Pages Failing   (Index)       : 0   
  17. 17.         Total Pages Empty                   : 507   
  18. 18.         Total Pages Marked Corrupt          : 2   
  19. 19.         Total Pages Influx                  : 0  

注意:这个工具的报告使用的是page作为单位,含义和data block相同。

除了检查数据文件,这个工具还允许检查单独的Segment,这时参数值的格式是<tsn.segfile.segblock>,如以下例子。

(1)查看对象的tsn、segfile、segblock属性:

  
  
  
  
  1. 1. SQL> select t.ts#, s.header_file, s.header_block   
  2. 2.       from v$tablespace t, dba_segments s   
  3. 3.       where s.segment_name='TAB1'  
  4. 4.       and t.name = s.tablespace_name;   
  5. 5.   
  6. 6. TS#    HEADER_FILE HEADER_BLOCK   
  7. 7. ------ ----------- ------------   
  8. 8. 0      1           30297  

(2)检查Segment:

  1.  1. [oracle@dbs ~]$ dbv userid=system
  2.     H2oisWater SEGMENT_ID0.1.30297   
  3.  2.   
  4.  3. DBVERIFY: Release 10.2.0.1.0 -  
  5.     Production on Wed Sep 10 11:03:10 2008   
  6.  4.   
  7.  5. Copyright (c) 1982, 2005, Oracle.  
  8.     All rights reserved.   
  9.  6.   
  10.  7. DBVERIFY - Verification starting : SEGMENT_ID = 0.1.30297   
  11.  8.   
  12.  9.   
  13. 10. DBVERIFY - Verification complete   
  14. 11.   
  15. 12. Total  Pages  Examined          : 25   
  16. 13. Total  Pages  Processed (Data)  : 21   
  17. 14. Total  Pages  Failing   (Data)  : 0   
  18. 15. Total  Pages  Processed (Index) : 0   
  19. 16. Total  Pages  Failing   (Index) : 0   
  20. 17. Total  Pages  Processed (Other) : 0   
  21. 18. Total  Pages  Processed (Seg)   : 0   
  22. 19. Total  Pages  Failing   (Seg)   : 0   
  23. 20. Total  Pages  Empty             : 4   
  24. 21. Total  Pages  Marked Corrupt    : 0   
  25. 22. Total  Pages  Influx            : 0   
  26. 23. Highest block  SCN              : 656769 (0.656769)  

 

1.使用dbv检查

 

D:\oradata\eygle>dbv file=EYGLE.DBF blocksize=8192

 

DBVERIFY: Release 10.1.0 .4.0 - Production on 星期六 6 11 17:36:37 2005

 

Copyright (c) 1982, 2004, Oracle.  All rights reserved.

 

DBVERIFY - 开始验证: FILE = EYGLE.DBF

 

219 标记为损坏

Corrupt block relative dba: 0x010000db (file 4, block 219)

Bad check value found during dbv:

Data in bad block:

 type: 6 format: 2 rdba: 0x010000db

 last change scn: 0x0000.0005ee6d seq: 0x2 flg: 0x04

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0xee6d0602

 check value in block header: 0x9779

computed block checksum: 0x6141

 

1258 标记为损坏

Corrupt block relative dba: 0x010004ea (file 4, block 1258)

Bad check value found during dbv:

Data in bad block:

 type: 6 format: 2 rdba: 0x010004ea

 last change scn: 0x0000.00042681 seq: 0x2 flg: 0x06

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x26810602

 check value in block header: 0x660b

computed block checksum: 0x9317

 

DBVERIFY - 验证完成

 

检查的页总数: 1280

处理的页总数 (数据): 150

失败的页总数 (数据): 0

处理的页总数 (索引): 127

失败的页总数 (索引): 0

处理的页总数 (其它): 1001

处理的总页数 ()  : 0

失败的总页数 ()  : 0

空的页总数: 0

标记为损坏的总页数: 2

流入的页总数: 0

Highest block SCN            : 428223 (0.428223)

 

2.使用RMAN检查坏块

 

D:\oradata\eygle>rman target /

 

恢复管理器: 版本 9.2.0 .6.0 - Production

 

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

 

连接到目标数据库: EYGLE (DBID=1365961916)

 

RMAN> backup validate datafile 4;

 

启动 backup 11-6 -05

正在使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=17 devtype=DISK

通道 ORA_DISK_1: 正在启动 full 数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00004 name=D:\ORADATA\EYGLE\EYGLE.DBF

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03

完成 backup 11-6 -05

 

RMAN>

 

SQL> select * from v$database_block_corruption;

 

     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO

---------- ---------- ---------- ------------------ ---------

         4        219          1                  0 FRACTURED

         4       1258          1                  0 FRACTURED

你可能感兴趣的:(DBV工具)