这期内容当中小编将会给大家带来有关Oracle中DBV命令行工具如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

特点:

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

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

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

这个工具可以检查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=<last_block_number>。可以在v$datafile视图中用bytes字段除以块大小来获得END值。

参数 含义 缺省值

FILE 要检查的数据文件名 没有缺省值

START 检查起始数据块号 数据文件的***个数据块

END 检查的***一个数据块号 数据文件的***一个数据块

BLOCKSIZE 数据块大小,这个值要和数据库的DB_BLOCK_SIZE参数值一致 缺省值8192

LOGFILE 检查结果日志文件 没有缺省值

FEEDBAK 显示进度 0

PARFILE 参数文件名 没有缺省值

USERID 用户名、密码 没有缺省值

SEGMENT_ID 段ID,参数格式<tsn.segfile.segblock> 没有缺省值

使用示例:

[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-Verificationstarting:FILE=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY-VerificationcompleteTotalPagesExamined:155520TotalPagesProcessed(Data):144530TotalPagesFailing(Data):0TotalPagesProcessed(Index):52TotalPagesFailing(Index):0TotalPagesProcessed(Other):1248TotalPagesProcessed(Seg):0TotalPagesFailing(Seg):0TotalPagesEmpty:9690TotalPagesMarkedCorrupt:0TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:3559792(0.3559792)

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

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

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

zx@TEST>selectt.ts#,s.header_file,s.header_block2fromv$tablespacet,dba_segmentss3wheres.segment_name='T'4andt.name=s.tablespace_name;TS#HEADER_FILEHEADER_BLOCK---------------------------------4445834

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

[oracle@rhel6~]$dbvuserid=system/123456segment_id=4.4.45834DBVERIFY:Release11.2.0.1.0-ProductiononMonMay2220:58:332017Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.DBVERIFY-Verificationstarting:SEGMENT_ID=4.4.45834DBVERIFY-VerificationcompleteTotalPagesExamined: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(Data):66397TotalPagesFailing(Data):0TotalPagesProcessed(Index):52TotalPagesFailing(Index):0TotalPagesProcessed(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-LimitedProductiononMonMay2221:17:182017Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.*************!!!ForOracleInternalUseonly!!!***************BBED>setdba4,45844DBA0x0100b314(168230604,45844)BBED>find/czhaoxuFile:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314------------------------------------------------------------------------7a68616f787501065873<32bytesperline>BBED>dump/vdba4,45844offset8182count32File:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314-------------------------------------------------------7a68616f787501065873lzhaoxu..Xs<16bytesperline>BBED>modify100dba4,45844Warning:contentsofpreviousBIFILEwillbelost.Proceed?(Y/N)yFile:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314------------------------------------------------------------------------6468616f787501065873<32bytesperline>BBED>dump/vdba4,45844offset8182count32File:/u01/app/oracle/oradata/test/users01.dbf(4)Block:45844Offsets:8182to8191Dba:0x0100b314-------------------------------------------------------6468616f787501065873ldhaoxu..Xs<16bytesperline>BBED>exit

再次使用dbv检查文件

[oracle@rhel6bbed]$dbvfile=/u01/app/oracle/oradata/test/users01.dbfDBVERIFY:Release11.2.0.1.0-ProductiononMonMay2221: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)

报告一个坏块,Total Pages Marked Corrupt : 1

再次查询测试表:

sys@TEST>select*fromzx.bbed;IDNAME----------------------------------------------------------------------1zhaoxu

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

zx@TEST>altersystemflushbuffer_cache;Systemaltered.zx@TEST>select*frombbed;select*frombbed*ERRORatline1:ORA-01578:ORACLEdatablockcorrupted(file#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:640TotalPagesProcessed(Data):16TotalPagesFailing(Data):0TotalPagesProcessed(Index):2TotalPagesFailing(Index):0TotalPagesProcessed(Other):593TotalPagesProcessed(Seg):0TotalPagesFailing(Seg):0TotalPagesEmpty:29TotalPagesMarkedCorrupt:0TotalPagesInflux:0TotalPagesEncrypted:0HighestblockSCN:0(0.0)

上述就是小编为大家分享的Oracle中DBV命令行工具如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。