千家信息网

Oracle的DBV工具

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,DBV(DBVERIFY)是Oracle提供的一个命令行工具,它可以对数据文件物理和逻辑两种一致性检查。但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用analyze validat
千家信息网最后更新 2026年11月01日Oracle的DBV工具

DBV(DBVERIFY)是Oracle提供的一个命令行工具,它可以对数据文件物理和逻辑两种一致性检查。但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用analyze validate structure命令。

这个工具有如下特点:

  • 以只读的方式打开数据文件,在检查过程中不会修改数据文件的内容。

  • 可以在线检查数据文件,而不需要关闭数据库。

  • 不能检查控制文件和日志文件,只能检查数据文件。

  • 这个工具可以检查ASM文件,但数据库必须Open状态,并且需要通过USERID指定用户,比如:dbv file=+DG1/ORCL/datafile/system01.dbf userid=system/sys

  • 在许多UNIX平台下,DBV要求数据文件有扩展名,如果没有可以通过建立链接的方法,然后对链接的方法,然后对链接文件进行操作,比如:ls -n /dev/rdsk/mydevice /tmp/mydevice.dbf

  • 某些平台,DBV工具不能检查超过2GB的文件,如果碰到DBV-100错误,请先检查文件大小,MOS Bug 710888对这个问题有描述。

  • DBV只会检查数据块的正确性,但不会关系数据块是否属于哪个对象。

  • 对于祼设备建议指定END参数,避免超出数据文件范围。比如:dbv FILE=/dev/rdsk/r1.dbf END=。可以在v$datafile视图中用bytes字段除以块大小来获得END值。

参数含义缺省值
FILE要检查的数据文件名没有缺省值
START检查起始数据块号数据文件的第一个数据块
END检查的最后一个数据块号数据文件的最后一个数据块
BLOCKSIZE数据块大小,这个值要和数据库的DB_BLOCK_SIZE参数值一致缺省值8192
LOGFILE检查结果日志文件没有缺省值
FEEDBAK显示进度0
PARFILE参数文件名没有缺省值
USERID用户名、密码没有缺省值
SEGMENT_ID段ID,参数格式没有缺省值

使用示例:

[oracle@rhel6 ~]$ dbv file=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY: Release 11.2.0.1.0 - Production on Mon May 22 16:42:26 2017Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/test/users01.dbfDBVERIFY - Verification completeTotal Pages Examined         : 155520Total Pages Processed (Data) : 144530Total Pages Failing   (Data) : 0Total Pages Processed (Index): 52Total Pages Failing   (Index): 0Total Pages Processed (Other): 1248Total Pages Processed (Seg)  : 0Total Pages Failing   (Seg)  : 0Total Pages Empty            : 9690Total Pages Marked Corrupt   : 0Total Pages Influx           : 0Total Pages Encrypted        : 0Highest block SCN            : 3559792 (0.3559792)

这个工具报告使用的是page作为单位,含义和data block相同。从上面的检查结果Total Pages Marked Corrupt : 0可以看出文件没有坏块。

除了检查数据文件,这个工具还允许检查单独的Segment,这时参数值的格式为

查看对象的tsn,segfile,segblock属性:

zx@TEST>select t.ts#,s.header_file,s.header_block  2  from v$tablespace t,dba_segments s  3  where s.segment_name='T'  4  and t.name=s.tablespace_name;       TS# HEADER_FILE HEADER_BLOCK---------- ----------- ------------         4           4        45834

从上面的查询结果可行参数值为4.4.45834。检查Segment:

[oracle@rhel6 ~]$ dbv userid=system/123456 segment_id=4.4.45834DBVERIFY: Release 11.2.0.1.0 - Production on Mon May 22 20:58:33 2017Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.DBVERIFY - Verification starting : SEGMENT_ID = 4.4.45834DBVERIFY - Verification completeTotal Pages Examined         : 8Total Pages Processed (Data) : 5Total Pages Failing   (Data) : 0Total Pages Processed (Index): 0Total Pages Failing   (Index): 0Total Pages Processed (Other): 2Total Pages Processed (Seg)  : 1Total Pages Failing   (Seg)  : 0Total Pages Empty            : 0Total Pages Marked Corrupt   : 0Total Pages Influx           : 0Total Pages Encrypted        : 0Highest block SCN            : 3518579 (0.3518579)

下面人为创造一个坏块,用dbv来检查。

创建一个测试表

zx@TEST>create table bbed (id number,name varchar2(20)) tablespace users;Table created.zx@TEST>insert into bbed values(1,'zhaoxu');1 row created.zx@TEST>commit;Commit complete.

当前数据文件没有坏块

[oracle@rhel6 ~]$ dbv file=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY: Release 11.2.0.1.0 - Production on Mon May 22 21:03:40 2017Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/test/users01.dbfDBVERIFY - Verification completeTotal Pages Examined         : 155520Total Pages Processed (Data) : 66397Total Pages Failing   (Data) : 0Total Pages Processed (Index): 52Total Pages Failing   (Index): 0Total Pages Processed (Other): 88898Total Pages Processed (Seg)  : 0Total Pages Failing   (Seg)  : 0Total Pages Empty            : 173Total Pages Marked Corrupt   : 0Total Pages Influx           : 0Total Pages Encrypted        : 0Highest block SCN            : 3764775 (0.3764775)

获取表在文件中的存储信息

zx@TEST>set serveroutput onzx@TEST>declare rfno number;  2  rtype number;  3  ono number;  4  blkno number;  5  rowno number;  6  rid varchar2(30);  7  begin  8  select rowid into rid from bbed;  9  dbms_rowid.rowid_info(ROWID_IN=>rid,RELATIVE_FNO=>rfno,BLOCK_NUMBER=>blkno,ROW_NUMBER=>rowno,ROWID_TYPE=>rtype,OBJECT_NUMBER=>ono); 10  dbms_output.put_line(rfno||','||blkno||','||rowno); 11  end; 12  /4,45844,0PL/SQL procedure successfully completed.

使用bbed修改块信息

[oracle@rhel6 bbed]$ bbed parfile=bbed.parPassword: BBED: Release 2.0.0.0.0 - Limited Production on Mon May 22 21:17:18 2017Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.************* !!! For Oracle Internal Use only !!! ***************BBED> set dba 4,45844        DBA             0x0100b314 (16823060 4,45844)BBED> find /c zhaoxu File: /u01/app/oracle/oradata/test/users01.dbf (4) Block: 45844            Offsets: 8182 to 8191           Dba:0x0100b314------------------------------------------------------------------------ 7a68616f 78750106 5873  <32 bytes per line>BBED> dump /v dba 4,45844 offset 8182 count 32 File: /u01/app/oracle/oradata/test/users01.dbf (4) Block: 45844   Offsets: 8182 to 8191  Dba:0x0100b314------------------------------------------------------- 7a68616f 78750106 5873              l zhaoxu..Xs <16 bytes per line>BBED> modify 100 dba 4,45844Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y File: /u01/app/oracle/oradata/test/users01.dbf (4) Block: 45844            Offsets: 8182 to 8191           Dba:0x0100b314------------------------------------------------------------------------ 6468616f 78750106 5873  <32 bytes per line>BBED> dump /v dba 4,45844 offset 8182 count 32 File: /u01/app/oracle/oradata/test/users01.dbf (4) Block: 45844   Offsets: 8182 to 8191  Dba:0x0100b314------------------------------------------------------- 6468616f 78750106 5873              l dhaoxu..Xs <16 bytes per line>BBED> exit

再次使用dbv检查文件

[oracle@rhel6 bbed]$ dbv file=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY: Release 11.2.0.1.0 - Production on Mon May 22 21:18:46 2017Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/test/users01.dbfPage 45844 is marked corruptCorrupt block relative dba: 0x0100b314 (file 4, block 45844)Bad check value found during dbv: Data in bad block: type: 6 format: 2 rdba: 0x0100b314 last change scn: 0x0000.00397358 seq: 0x1 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x73580601 check value in block header: 0x7c2d computed block checksum: 0x1eDBVERIFY - Verification completeTotal Pages Examined         : 155520Total Pages Processed (Data) : 66396Total Pages Failing   (Data) : 0Total Pages Processed (Index): 52Total Pages Failing   (Index): 0Total Pages Processed (Other): 88898Total Pages Processed (Seg)  : 0Total Pages Failing   (Seg)  : 0Total Pages Empty            : 173Total Pages Marked Corrupt   : 1Total Pages Influx           : 0Total Pages Encrypted        : 0Highest block SCN            : 3764775 (0.3764775)

报告一个坏块,Total Pages Marked Corrupt : 1
再次查询测试表:

sys@TEST>select * from zx.bbed;        ID NAME---------- ------------------------------------------------------------         1 zhaoxu

查询正常,因为在buffer_cache中缓存了块,而修改的是文件中的块。两个块现在不一致,清空buffer cache后再次查询测试表。

zx@TEST>alter system  flush buffer_cache;System altered.zx@TEST>select * from bbed;select * from bbed              *ERROR at line 1:ORA-01578: ORACLE data block corrupted (file # 4, block # 45844)ORA-01110: data file 4: '/u01/app/oracle/oradata/test/users01.dbf'

查询报出错误ORA-01578。

使用dbv检查ASM文件中的数据文件,需要指定userid参数

[oracle@rac1 ~]$ dbv file=+DATA/orcl/datafile/users.259.925306091 userid=sys/123456DBVERIFY: Release 11.2.0.4.0 - Production on Mon May 22 16:48:22 2017Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.DBVERIFY - Verification starting : FILE = +DATA/orcl/datafile/users.259.925306091DBVERIFY - Verification completeTotal Pages Examined         : 640Total Pages Processed (Data) : 16Total Pages Failing   (Data) : 0Total Pages Processed (Index): 2Total Pages Failing   (Index): 0Total Pages Processed (Other): 593Total Pages Processed (Seg)  : 0Total Pages Failing   (Seg)  : 0Total Pages Empty            : 29Total Pages Marked Corrupt   : 0Total Pages Influx           : 0Total Pages Encrypted        : 0Highest block SCN            : 0 (0.0)


参考:《大话Oracle RAC》

MOS文档:文档 ID 35512.1

文件 数据 检查 参数 工具 查询 一致 再次 大小 数据库 结果 链接 测试 信息 含义 命令 对象 平台 报告 文件名 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 广东猪兼强互联网科技有限公司 互联网科技工作委员会副主任毛军 互联网科技卖菜 腾讯阿里互联网科技 互联网金融与金融科技 善班互联网科技有限公司 居家互联网科技有限公司 无锡溥仪互联网科技有限公司 现代互联网科技股 厦门比较好的科技互联网公司 厦门千工互联网科技有限公司 注册互联网科技公司经营范围大全 青海科技产业互联网发展 华中科技大学互联网的牛人 山东子淼互联网科技有限公司 四川互联网展示科技馆设计 新氧科技和美国互联网有关系吗 西安有哪些互联网高科技企业 互联网科技博主张洲 善班互联网科技 郑州华宇互联网科技 互联网科技的未来发展 互联网科技博客 重庆威客帮互联网科技 互联网科技产业特征 深圳市优智互联网科技有限公司 迪庆互联网科技招生 保山互联网科技靠谱吗 每日互联网科技新闻
0