ITPub博客

首页 > 数据库 > Oracle > 第7章 DBVERIFY:线下数据库检验工具

第7章 DBVERIFY:线下数据库检验工具

翻译 Oracle 作者:BUAA_dxy 时间:2013-05-12 11:02:33 0 删除 编辑

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_B LOCK。
  • 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)


dbverify.gif

dbverify_seg.gif

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24945919/viewspace-761324/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle RAC问题诊断
请登录后发表评论 登录
全部评论
《SQL编程思想》作者,专注于数据库领域知识的分享。

注册时间:2021-08-26

  • 博文量
    443
  • 访问量
    546809