由于近日遇到几次需要确认数据文件是否有坏块,所以使用到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,如需转载请自行联系原作者