天天看点

DBV工具

    由于近日遇到几次需要确认数据文件是否有坏块,所以使用到DBV,转载本文方便日后查询。

    DBVERIFY(DBV)是Oracle提供的一个命令行工具,它可以对数据文件物理和逻辑两种一致性检查。但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用Analyze validate structure命令。

这个工具有如下特点。

以只读的方式打开数据文件,在检查过程中不会修改数据文件的内容。

可以在线检查数据文件,而不需要关闭数据库。

不能检查控制文件和日志文件,而只能检查数据文件。

这个工具可以检查ASM文件,但是数据库必须Open状态,并且需要通过USERID指定用户,比如:

1. dbv file=+DG1/ORCL/datafile/system01.dbf userid=system/sys  

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

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

显示进度

PARAFILE

参数文件名

USERID

用户名、密码

SEGMENT_ID

段ID,参数格式

<tsn.segfile.segblock>

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

 1. [oracle@dbs ~]dbv file=users01.dbf blocksize=2048  

 2.   

 3.         DBVERIFY - Verification starting : FILE = users01.dbf   

 4.         kdbchk: a row ends in the middle of another   

 5.                  tab=0 slot=1 begin=0x7a0 len=0x14  

 6.         Page 3 failed with check code 5   

 7.         Page 10 is marked software corrupt   

 8.         Page 12 is marked software corrupt   

 9.   

10.         DBVERIFY - Verification complete   

11.   

12.         Total Pages Examined            : 512   

13.         Total Pages Processed (Data)        : 1   

14.         Total Pages Failing   (Data)        : 1   

15.         Total Pages Processed (Index)       : 0   

16.         Total Pages Failing   (Index)       : 0   

17.         Total Pages Empty                   : 507   

18.         Total Pages Marked Corrupt          : 2   

19.         Total Pages Influx                  : 0  

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

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

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

1. SQL> select t.ts#, s.header_file, s.header_block   

2.       from v$tablespace t, dba_segments s   

3.       where s.segment_name='TAB1'  

4.       and t.name = s.tablespace_name;   

5.   

6. TS#    HEADER_FILE HEADER_BLOCK   

7. ------ ----------- ------------   

8. 0      1           30297  

(2)检查Segment:

 1. [oracle@dbs ~]$ dbv userid=system/ 

    H2oisWater SEGMENT_ID= 0.1.30297   

 3. DBVERIFY: Release 10.2.0.1.0 -  

    Production on Wed Sep 10 11:03:10 2008   

 4.   

 5. Copyright (c) 1982, 2005, Oracle.  

    All rights reserved.   

 6.   

 7. DBVERIFY - Verification starting : SEGMENT_ID = 0.1.30297   

 8.   

10. DBVERIFY - Verification complete   

12. Total  Pages  Examined          : 25   

13. Total  Pages  Processed (Data)  : 21   

14. Total  Pages  Failing   (Data)  : 0   

15. Total  Pages  Processed (Index) : 0   

16. Total  Pages  Failing   (Index) : 0   

17. Total  Pages  Processed (Other) : 0   

18. Total  Pages  Processed (Seg)   : 0   

19. Total  Pages  Failing   (Seg)   : 0   

20. Total  Pages  Empty             : 4   

21. Total  Pages  Marked Corrupt    : 0   

22. Total  Pages  Influx            : 0   

23. Highest block  SCN              : 656769 (0.656769)  

本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/754593,如需转载请自行联系原作者