DBVERIFY是一个外部命令行工具,用于执行物理数据结构完整性检查。
DBVERIFY可以用于离线或者在线数据库,以及备份文件。DBVERIFY主要用于确认备份数据库(或者数据文件)在还原之前有效,或者在数据损坏时作为一个辅助诊断手段。因为DBVERIFY可以用于离线数据库,此时的完整性检查将会快很多。
DBVERIFY检查仅限于缓存管理的块(即数据块)。DBVERFIY仅用于数据文件,因此不能用于控制文件或者重做日志。
DBVERIFY包含两个命令行接口。第一个接口检查单个数据文件的磁盘块,第二个借口检查一个段。两个接口都以dbv命令开始。
使用DBVERIFY验证单个数据文件的磁盘块
这种方式下,DBVERIFY扫描单个数据文件的一个或者多个磁盘块并执行页面检查。
注释:如果验证Oracle ASM文件,必须提供一个USERID,因为DBVERIFY需要连接到Oracle实例以访问Oracle ASM文件。
语法
验证单个数据文件的磁盘块的语法如下:
参数
参数的描述如下:
- USERID 指定用户名和口令。该参数只在验证Oracle ASM文件时是必须的。
- FILE 验证的数据库文件名。
- START 验证的起始块。指定Oracle块的块地址(而不是操作系统块)。如果没有指定,默认为文件的第一个块。
- END 验证的结束块。如果没有指定,默认为文件的最后一个块。
- BLOCKSIZE 如果文件的块大小不为8KB时,需要指定该参数。否则会收到错误DBV-00103。
- HIGH_SCN 如果指定了该值,DBVERIFY为块级SCN超过指定值的每个块生成诊断信息。该参数可选,没有默认值。
- LOGFILE 指定日志文件。默认输出到终端。
- FEEDBACK DBVERIFY运行时,每验证n个磁盘页面显示一个点号(.),表示处理进度。如果n = 0,不显示进度。
- HELP 提供联机帮助。
- PARFILE 指定参数文件。可以在平面文件中存储DBVERIFY参数的值。这样可以定制处理不同类型数据文件的参数文件,执行针对这些文件的特定的完整性检查。
单个数据文件的DBVERIFY输出样例
以下是一个文件t_db1.dbf验证的示例。参数FEEDBACK设置为100,每处理100个磁盘页面显示一个点号。
% dbv FILE=t_db1.dbf FEEDBACK=100
.
.
.
DBVERIFY - Verification starting : FILE = t_db1.dbf
................................................................................
DBVERIFY - Verification complete
Total Pages Examined : 9216
Total Pages Processed (Data) : 2044
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 733
Total Pages Failing (Index): 0
Total Pages Empty : 5686
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
说明:
- Pages = 数据块数量
- Total Pages Eaxmined = 文件中的数据块数量
- Total Pages Processed (Data) = 验证的数据块数量(格式化块)
- Total Pages Failing (Data) = 失败的数据块数量
- Total Pages Processed (Index) = 验证的索引块数量
- Total Pages Failing (Index) = 失败的索引块数量
- Total Pages Marked Corrupt = 缓存头无效的块数,DBVERIFY无法标识块类型
- Total Pages Influx = 同一时间被读取和写入的块数量。如果数据块打开时运行DBVERIFY,DBVERIFY多次读取块以得到一致映像。数据块打开时,可能存在同时被读取和写入的块(交汇变化),DBVERIFY不能获得变化中的页面的一致映像。
使用DBVERIFY验证段
这种方式下,DBVERIFY可以验证一个表段或者索引段。它确保行链接指针位于被验证的段内。
这种方式需要指定一个段(数据或者索引)。同时还需要使用SYSDBA权限登录数据库,因为段信息需要从数据库中检索。
这种方式将会锁定段。如果指定段为索引,将会锁定基表。注意,某些索引,例如IOT,没有基表。
语法
验证段的DBVERIFY语法如下:
参数
参数的描述如下:
- USERID 指定用户名和口令。
- SEGMENT_ID 指定需要验证的段。它由表空间ID编号(tsn)、段头文件编号(segfile)以及段头块编号(segblock)组成。可以通过SYS_DBA_SEGS获得这些信息。对应的列为TABLESPACE_ID、HEADER_FILE以及HEADER_BLOCK。
- HIGH_SCN 如果指定了该值,DBVERIFY为块级SCN超过指定值的每个块生成诊断信息。该参数可选,没有默认值。
- LOGFILE 指定日志文件。默认输出到终端。
- FEEDBACK DBVERIFY运行时,每验证n个磁盘页面显示一个点号(.),表示处理进度。如果n = 0,不显示进度。
- HELP 提供联机帮助。
- PARFILE 指定参数文件。可以在平面文件中存储DBVERIFY参数的值。这样可以定制处理不同类型数据文件的参数文件,执行针对这些文件的特定的完整性检查。
验证段的DBVERIFY输出样例
以下是一个验证SEGMENT_ID为1.2.67的DBVERIFY结果示例。
DBVERIFY - Verification starting : SEGMENT_ID = 1.2.67
DBVERIFY - Verification complete
Total Pages Examined : 8
Total Pages Processed (Data) : 0
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 1
Total Pages Failing (Index): 0
Total Pages Processed (Other): 2
Total Pages Processed (Seg) : 1
Total Pages Failing (Seg) : 0
Total Pages Empty : 4
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 7358 (0.7358)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24945919/viewspace-761324/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24945919/viewspace-761324/