本文共 2734 字,大约阅读时间需要 9 分钟。
由于近日遇到几次需要确认数据文件是否有坏块,所以使用到DBV,转载本文方便日后查询。
DBVERIFY(DBV)是Oracle提供的一个命令行工具,它可以对数据文件物理和逻辑两种一致性检查。但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用Analyze validate structure命令。
这个工具有如下特点。
以只读的方式打开数据文件,在检查过程中不会修改数据文件的内容。
可以在线检查数据文件,而不需要关闭数据库。
不能检查控制文件和日志文件,而只能检查数据文件。
这个工具可以检查ASM文件,但是数据库必须Open状态,并且需要通过USERID指定用户,比如:
在许多UNIX平台下,DBV要求数据文件有扩展名,如果没有可以通过建立链接的方法,然后对链接文件进行操作,比如:
某些平台,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文件。
注意:这个工具的报告使用的是page作为单位,含义和data block相同。
除了检查数据文件,这个工具还允许检查单独的Segment,这时参数值的格式是<tsn.segfile.segblock>,如以下例子。
(1)查看对象的tsn、segfile、segblock属性:
(2)检查Segment: