August 20 2014

oracle dbv

Dbv 全名DBVERIFY 意思和名字一样,验证数据文件

当你遇到数据损坏问题 dbv是恢复或辅助诊断的手段也可以使用DBV来确保用户管理的备份数据文件是有效的

语法如下:

关键字      说明                   (默认值)

—————————————————-

FILE       要验证的文件                 (无)

START       起始块                   (文件的第一个块)

END         结束块                     (文件的最后一个块)

BLOCKSIZE   逻辑块大小             (8192)

LOGFILE     输出日志                     (无)—你可以指定一个文件 那么输出信息就到了这个文件里。

FEEDBACK   显示进度               (0)

PARFILE     参数文件                 (无)

USERID     用户名/口令              (无)

SEGMENT_ID 段 ID (tsn.relfile.block) (无)

HIGH_SCN   要验证的最高块 SCN   (无)

(scn_wrap.scn_base 或 scn)

 

 

如果您要验证的文件是一个Oracle ASM文件自动存储管理,那么你必须提供一个用户标识。这是因为DBV需要连接Oracle实例访问Oracle ASM文件。

 

这是我做的一个例子

[oracle@rm orcl]$ dbv file=users01.dbf FEEDBACK=100

 

DBVERIFY: Release 11.2.0.3.0 – Production on Tue Aug 19 22:31:58 2014

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

 

DBVERIFY – Verification starting : FILE = /u01/app/oracle/oradata/orcl/users01.dbf

.Block Checking: DBA = 16777391, Block Type = KTB-managed data block

data header at 0x2ac99c4fb064

kdbchk: row locked by non-existent transaction

table=0   slot=0

lockid=65   ktbbhitc=2

Page 175 failed with check code 6101

……

 

DBVERIFY – Verification complete

 

Total Pages Examined         : 640 –检查的页总数

Total Pages Processed (Data) : 41     –处理的页总数 (数据)

Total Pages Failing   (Data) : 1       –失败的页总数 (数据)

Total Pages Processed (Index): 19     –处理的页总数 (索引)

Total Pages Failing   (Index): 0         –失败的页总数 (索引)

Total Pages Processed (Other): 570     –处理的页总数 (其他)

Total Pages Processed (Seg) : 0       –处理的总页数 (段)

Total Pages Failing   (Seg) : 0       –失败的总页数 (段)

Total Pages Empty           : 10   –空的页总数

Total Pages Marked Corrupt   : 0       –标记为损坏的总页数:

Total Pages Influx           : 0       –流入的页总数

Total Pages Encrypted       : 0     –加密的总页数

Highest block SCN           : 1383640 (0.1383640)   –最高块 SCN

 

(接下来我又找了一个10G的数据文件进行测试。这是一个很耗费内存的操作 我8G的内存 没执行之前的内存使用是40%不到 执行的瞬间飙升到99%)

 

 

根据官方文档的说明 其实Pages = Blocks。

 

同样也可以使用DBVERIFY验证段

在这种模式下,DBV允许指定一个表段或索引段验证。它检查以确保连续链指针段内被证实。

它还要求登录到数据库SYSDBA特权,因为信息必须从数据库检索。  –如果没有sysdba权限不会报错但是输出的信息不是准确的。

在这种模式下,段是锁着的。如果指定的段是一个索引,那么父表是锁着的。

所以这种的数据库要求打开

 

dbv USERID=username/passwordSEGMENT_ID=tsn.relfile.block

可以通过sys_dba_segs表获取tablespace_id,header_file, header_block三个字段,他们分别对应tsn,relfile,block.

CREATETABLE TESTdate(

d DATE

)

INSERTINTO TESTdate VALUES(sysdate);

 

SELECT*FROM TESTdate;

 

SELECT*FROM TESTdate WHERE d<to_date(‘2014-08-20′,’yyyy-mm-dd hh24:mi:ss’);

 

SELECT*from DBA_SEGMENTS where segment_name =’TESTDATE’;

 

select tablespace_id,header_file, header_block from sys_dba_segs where segment_name =’TESTDATE’;

0              1              89944

 

 

C:\Users\UcJmh>dbv segment_id=0.1.89944 userid=system/oracle

 

DBVERIFY: Release 11.2.0.1.0 – Production on 星期三 8月 20 11:00:22 2014

 

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

 

DBVERIFY – 开始验证: SEGMENT_ID = 0.1.89944

Extent info: et = (0x00415f61.0x00000007)

ktsgvsh: Extent (0) not in dictionary

 

 

DBVERIFY – 验证完成

 

检查的页总数: 9

处理的页总数 (数据): 0

失败的页总数 (数据): 0

处理的页总数 (索引): 0

失败的页总数 (索引): 0

处理的页总数 (其他): 0

处理的总页数 (段) : 1

失败的总页数 (段) : 0

空的页总数: 8

标记为损坏的总页数: 0

流入的页总数: 0

加密的总页数       : 0

最高块 SCN           : 1098013503 (0.1098013503)



Copyright 2019. All rights reserved.

Posted 2014年8月20日 by ucjmh in category "oracle

Leave a Reply

Your email address will not be published. Required fields are marked *