DBV(DBVERIFY)是Oracle提供的一个命令行工具,可以检查数据文件的物理和逻辑一致性。但是这个工具不会检查索引记录和数据记录的匹配关系。此检查必须使用分析验证结构命令。本工具具有以下特点:以只读方式打开数据文件,在检查过程中不会修改数据文件的内容。无需关闭数据库即可在线查询数据文件。不能检查控制文件和日志文件,只能检查数据文件。该工具可以查看ASM文件,但是数据库必须处于Open状态,用户需要通过USERID指定,例如:dbvfile=+DG1/ORCL/datafile/system01.dbfuserid=system/sys在很多UNIX下平台,DBV要求数据文件有扩展名,如果没有建立链接的方法,则对链接进行操作,再对链接文件进行操作,如:ls-n/dev/rdsk/mydevice/tmp/mydevice.dbf某些平台,DBV工具无法检查大于2GB的文件。如果遇到DBV-100错误,请先检查文件大小。MOS错误710888描述了这个问题。DBV只检查数据块的正确性,并不关心数据块属于哪个对象。对于裸设备,建议指定END参数,避免超出数据文件的范围。例如:dbvFILE=/dev/rdsk/r1.dbfEND=。END值可以通过将字节字段除以v$datafile视图中的块大小来获得。参数含义默认值FILE要检查的数据文件的名称没有默认值START检查起始数据块号的第一个数据块END检查数据文件的最后一个数据文件的最后一个数据块号BlockBLOCKSIZE数据块size,这个值要和数据库的DB_BLOCK_SIZE参数值保持一致。默认值8192LOGFILE检查结果日志文件无默认值FEEDBAK显示进度0PARFILE参数文件名无默认值USERID用户名和密码无默认值SEGMENT_ID段ID,参数格式无默认值示例:[oracle@rhel6~]$dbvfile=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY:Release11.2.0.1.0-ProductiononMonMay2216:42:262017Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.DBVERIFY-验证开始:FILE=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY-VerificationcompleteTotalPagesExamined:155520TotalPagesProcessed(数据):144530TotalPagesFailing(数据):0TotalPagesProcessed(索引):52TotalPagesFailing(索引):0TotalPagesProcessed(其他):1248TotalPagesProcessedTotalPageF(SegaF)(Seg):0TotalPagesEmpty:9690TotalPagesMarkedCorrupt:0TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:3559792(0.3559792)本工具报告以页为单位,与数据块意义相同。从上面的检查结果TotalPagesMarkedCorrupt:0,可以看出文件没有损坏。除了检查数据文件外,此工具还允许检查各个段。此时参数值的格式为查看对象的tsn、segfile、segblock属性:zx@TEST>selectt.ts#,s.header_file,s.header_block2fromv$tablespacet,dba_segments3wheres.segment_name='T'4andt.name=s.tablespace_name;TS#HEADER_FILEHEADER_BLOCK-------------------------------4445834从上面的查询结果来看,可行的参数值为4.4.45834。检查段:[oracle@rhel6?]$dbvuserid=system/123456segment_id=4.4.4.45834dbverify:Release11.2.0.2.0.1.0-productiononmonmay2220:58:332017copyright(c):8TotalPagesProcessed(Data):5TotalPagesFailing(Data):0TotalPagesProcessed(Index):0TotalPagesFailing(Index):0TotalPagesProcessed(Other):2TotalPagesProcessed(Seg):1TotalPagesFailing(Seg):0TotalPagesEmpty:0TotalPagesMarkedCorrupt:0TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:3518579(0.3518579)下面人为制造坏块,用dbv检查。创建测试表zx@TEST>createtablebbed(idnumber,namevarchar2(20))tablespaceusers;Tablecreated.zx@TEST>insertintobbedvalues(1,'zhaoxu');1rowcreated.zx@TEST>commit;Commitcomplete。当前数据文件没有坏块[oracle@rhel6~]$dbvfile=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY:Release11.2.0.1.0-ProductiononMonMay2221:03:402017Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.DBVERIFY-Verificationstarting:FILE=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY-VerificationcompleteTotalPagesExamined:155520TotalPagesProcessed(数据):66397TotalPagesFailing(数据):0TotalPagesProcessed(索引):52TotalPagesFailingPagesProcessed:0Total(Other):88898TotalPagesProcessed(Seg):0TotalPagesFailing(Seg):0TotalPagesEmpty:173TotalPagesMarkedCorrupt:0TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:3764775(0.3764775)获取表在文件中的存储信息zx@TEST>setserveroutputonzx@TEST>declarerfnonumber;2rtypenumber;3ononumber;4blknonumber;5rownonumber;6ridvarchar2(30);7begin8selectrowidintoridfrombbed;9dbms_rowid.rowid_info(ROWID_IN=>rid,RELATIVE_FNO=>rfno,BLOCK_NUMBER=>blkno,ROW_NUMBER=>rowno,ROWID_TYPE=>rtype,OBJECT_NUMBER=>ono);10dbms_output.put_line(rfno||','||blkno||','||rowno);11end;12/4,45844,0PL/SQLproceduresuccessfullycompleted.使用bbed修改块信息[oracle@rhel6bbed]$bbedparfile=bbed.parPassword:BBED:Release2.0.0.0.0-LimitedProductiononMay2221:17:182017版权所有(c)1982,2009,Oracle和/或其分支机构。保留所有权利。***************!!!ForOracleInternalUseonly!!!***************BBED>setdba4,4??5844DBA0x0100b314(168230604,45844)BBED>find/czhaoxuFile:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314--------------------------------------------------------------------7a68616f787501065873<32bytesperline>BBED>dump/vdba4,4??5844offset8182count32File:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314-----------------------------------------------------7a68616f787501065873lzhaoxu..Xs<16bytesperline>BBED>modify100dba4,4??5844Warning:contentsofpreviousBIFILEwillbelost.Proceed?(Y/N)yFile:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314-------------------------------------------------------------------6468616f787501065873<32bytesperline>BBED>dump/vdba4,4??5844offset8182count32File:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314------------------------------------------------------6468616f787501065873ldhaoxu..Xs<16bytesperline>BBED>退出再次使用dbv检查文件[oracle@rhel6bbed]$dbvfile=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY:Release11.2.0.1.0-ProductiononMay2221:18:462017Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.DBVERIFY-Verificationstarting:FILE=/u01/app/oracle/oradata/test/users01.dbfPage45844ismarkedcorruptCorruptblockrelativedba:0x0100b314(file4,block45844)Badcheckvaluefoundduringdbv:Datainbadblock:type:6format:2rdba:0x0100b314lastchangescn:0x0000.00397358seq:0x1flg:0x04spare1:0x0spare2:0x0spare3:0x0consistencyvalueintail:0x73580601checkvalueinblockheader:0x7c2dcomputedblockchecksum:0x1eDBVERIFY-VerificationcompleteTotalPagesExamined:155520TotalPagesProcessed(Data):66396TotalPagesFailing(Data):0TotalPagesProcessed(Index):52TotalPagesFailing(Index):0TotalPagesProcessed(Other):88898TotalPagesProcessed(Seg):0TotalPagesFailing(Seg):0TotalPagesEmpty:173TotalPagesMarkedCorrupt:1TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:3764775(0.3764775)报告一个坏块,TotalPagesMarkedCorrupt:1再次查询测试表:sys@TEST>select*fromzx.bbed;IDNAME---------------------------------------------------------------------1zhaoxu查询正常,因为block缓存在buffer_cache中,而修改后的问题是现在文件中的两个block不一致。清除buffercache后,再次查询test表。zx@TEST>altersystemflushbuffer_cache;Systemaltered.zx@TEST>select*frombbed;select*frombbed*ERRORatline1:ORA-01578:ORACLEdatablockcorrupted(文件#4,block#45844)ORA-01110:datafile4:'/u01/app/oracle/oradata/test/users01.dbf'查询报告错误ORA-01578。使用dbv查看ASM文件中的数据文件,需要指定userid参数[oracle@rac1~]$dbvfile=+DATA/orcl/datafile/users.259.925306091userid=sys/123456DBVERIFY:Release11.2.0.4.0-ProductiononMonMay2216:48:222017Copyright(c)1982,2011,Oracleand/oritsaffiliates.Allrightsreserved.DBVERIFY-Verificationstarting:FILE=+DATA/orcl/datafile/users.259.925306091DBVERIFY-VerificationcompleteTotalPagesExamined:640TotalPagesProcessedPagesData:16(PagesTotalPagesProcessedData):16(处理总页数)索引):2TotalPagesFailing(索引):0TotalPagesProcessed(其他):593TotalPagesProcessed(Seg):0TotalPagesFailing(Seg):0TotalPagesEmpty:29TotalPagesMarkedCorrupt:0TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:0(0.0)