DBV 的使用

简介: 一、简介 DBV是一个常用的工具,Oracle MOS上有一篇文章介绍DBV:[ID 35512.1]。 dbverify工具的主要目的是为了检查数据文件的物理结构,包括数据文件是否损坏,是否存在逻辑坏块,以及数据文件中包含何种类型的数据。

一、简介

DBV是一个常用的工具,Oracle MOS上有一篇文章介绍DBV:[ID 35512.1]。
dbverify工具的主要目的是为了检查数据文件的物理结构,包括数据文件是否损坏,是否存在逻辑坏块,以及数据文件中包含何种类型的数据。

二、原理

DBV 检查以确保Oracle数据文件:
  • 数据文件有一个有效的块头
  • 每个数据块在文件中有一个特殊的“wrapper”标识块,这“wrapper”是为了校验正确性
  • 数据 (表) 和索引块是内部一致的
  • 从8.1.6起:多块类型的内部一致性(如回滚segment blocks)

三、DBV 限制

  1. DBV 只能检测可以被 'ANALYZE TABLE .. VALIDATE STRUCTURE CASCADE'命令检测的块,像索引、表错误等
  2. 这个工具只能用于对数据文件。它不能用来验证归档文件或控制文件。
  3. 你可以使用DBV验证自动储存管理(ASM)文件。
    然而,数据库必须打开,选择用户名已使用
    例如:dbv file=+DG1/ORCL/datafile/system01.dbf userid=system/sys
    DBV检查用户名/密码为ASM文件管理,当数据库不是open状态则不可能。
  4. 在大多数版本的UNIX,DBV 基于文件扩展名。DBV 要求datafile 必须有扩展名
    如果裸设备没有扩展名,可以创建一个link,然后在进行dbv 检查。
    例如:ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf
  5. 对于原始设备,你应该使用“END”参数,以避免运行结束的文件空间的结束。
    例如:"dbv FILE=/dev/rdsk/r1.dbf END=<last_block_number>"
    • 用 file#=5 找到 END 值
      select BYTES/8192 from v$datafile where FILE#=5;
      BYTES/8192
      ----------
      5120
    • dbv file=/dev/rdsk/r1.dbf blocksize=8192 END=5120
  6. DBV可能无法扫描数据文件大于2GB同时报告”dbv-100”。如果你得到了dbv-100 错误首先请检查文件大小。
  7. DBV 从 8.1.6 起如果从 Oracle 7 迁移,基于回滚段块会报虚假错误。见错误:1359160 和注意事项:118008.1。
  8. DBV only checks a block in isolation -it does not know if the block is part of an existing object or not.
    DBV只检查这个块,它不知道这个块是否是一个已经存在的对象的一部分。
  9. DBV 在 SCO Unix 上是不可用的,另见 Bug:814249
  10. DBV 是向下兼容的,不可用于高版本

四、DBV 示例

  1. 验证ASM 上的文件
    • 查询数据文件路径
      select file_name from dba_data_Files;
    • dbv check ASM 上的文件,注意添加userid参数
      [oracle@rac2 ~]$ dbv file='+DATA/anqing/datafile/undotbs02.dbf' userid=sys/oracle
  2. 验证普通datafile
    • 实例没有启动的情况下进行datafile 验证
      这种情况下,db没有启动,要进入数据文件的存放目录后在运行该命令,不然会报找不到数据文件。
      dbv file=undotbs01.dbf
  3. DB open 状态,验证指定段
    • 可以通过sys_dba_segs表获取tablespace_id,header_file, header_block三个字段,他们分别对应tsn,relfile,block.
      select tablespace_id,header_file, header_block from sys_dba_segs where segment_name = 'TA';
      TABLESPACE_ID HEADER_FILE HEADER_BLOCK
      ------------- ----------- ------------
                 0           1        71513
    • 语法:dbv USERID=username/password SEGMENT_ID=tsn.relfile.block
      [oracle@rac2 ~]$ dbv segment_id=0.1.71513 userid=system/oracle
    • 注:这种方式要求数据库处于打开的状态。
  4. 验证数据拷贝
    由于dbv可以在实例关闭情况下验证数据文件,因此dbv也可以验证数据文件的拷贝。这个拷贝指的是通过RMAN的COPY命令或者操作系统命令cp拷贝的数据文件,而不是RMAN生成的备份集格式。
    通过比较2个dbv 的结果来比较datafile 的copy
    [oracle@node1 ~]$ dbv file='/oradata/orcl/test01.dbf' userid=sys/oracle
    DBVERIFY: Release 11.2.0.4.0 - Production on Wed Aug 17 15:15:52 2016
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    DBVERIFY - Verification starting(开始验证) : FILE = /oradata/orcl/test01.dbf
    DBVERIFY - Verification complete(验证完成)
     
    Total Pages Examined(检查的页总数)         : 655360
    Total Pages Processed (Data) 处理的页总数 (数据): 261936
    Total Pages Failing   (Data) 失败的页总数 (数据): 0
    Total Pages Processed (Index)处理的页总数 (索引): 0
    Total Pages Failing   (Index)失败的页总数 (索引): 0
    Total Pages Processed (Other)处理的页总数 (其它): 876
    Total Pages Processed (Seg)处理的总页数 (段)  : 3
    Total Pages Failing   (Seg)失败的总页数 (段)  : 0
    Total Pages Empty空的页总数            : 392545
    Total Pages Marked Corrupt标记为损坏的总页数   : 0
    Total Pages Influx流入的页总数           : 0
    Total Pages Encrypted加密的总页数        : 0
    Highest block SCN最高块 SCN            : 117357549 (0.117357549)
目录
相关文章
|
10月前
|
SQL 数据库连接 数据库
java.sql.SQLTimeoutException: ORA-01013: 用户请求取消当前的操作
java.sql.SQLTimeoutException: ORA-01013: 用户请求取消当前的操作
282 0
java.sql.SQLTimeoutException: ORA-01013: 用户请求取消当前的操作
|
10月前
|
SQL 缓存 监控
为什么Oracle中包含绑定变量的SQL会有多个游标?(译文)
为了改进包含绑定变量的SQL的执行计划,Oracle在11g版本中引入了一项名为自适应游标共享(ACS,Adaptive Cursor Sharing)的新功能。
107 0
QGS
|
Oracle 关系型数据库 数据库
oracle数据库-简易巡检脚本
记oracle数据库-简易巡检脚本
QGS
244 0
oracle数据库-简易巡检脚本
|
关系型数据库 数据库
【DB吐槽大会】第46期 - PG copy不能跳过错误行
大家好,这里是DB吐槽大会,第46期 - PG copy不能跳过错误行
|
监控 Oracle 关系型数据库
|
SQL Oracle 关系型数据库
Oracle AWR快照管理与常见问题
1、手动创建Snapshots exec dbms_workload_repository.create_snapshot(); --或者 BEGIN DBMS_WORKLOAD_REPOSITORY.
14344 0
|
Oracle 关系型数据库 Linux
Oracle中filesystemio_options and disk_asynch_io两个参数的思考
文献参考: Things To Consider For Setting filesystemio_options And disk_asynch_io (文档 ID 1987437.1) 场景描述:某个数据库大量使用了OS的cache,为了很好地理解I/O,通过分析上述MOS的文章,写一些自己的理解。
3385 0