Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244940
  • 博文数量: 64
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 565
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-18 10:54
文章分类

全部博文(64)

文章存档

2011年(4)

2010年(60)

我的朋友

分类: Oracle

2010-04-07 21:44:55

DBVERIFY工具用来验证数据文件的物理结构, 包括数据文件是否损坏, 是否存在逻辑坏块, 以及数据文件中包含何种类型的数据. 它可以验证ONLINE或OFFLINE的数据文件. 不管数据库是否打开, 都可以访问数据文件.


1.1 dbv用法

$ dbv

DBVERIFY: Release 10.2.0.4.0 - Production on Fri Mar 19 14:41:52 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Keyword     Description                    (Default)

----------------------------------------------------

FILE        File to Verify                 (NONE)

START       Start Block                    (First Block of File)

END         End Block                      (Last Block of File)

BLOCKSIZE   Logical Block Size             (8192)

LOGFILE     Output Log                     (NONE)

FEEDBACK    Display Progress               (0)

PARFILE     Parameter File                 (NONE)

USERID      Username/Password              (NONE)

SEGMENT_ID  Segment ID (tsn.relfile.block) (NONE)

HIGH_SCN    Highest Block SCN To Verify    (NONE)

            (scn_wrap.scn_base OR scn)           

            
1.2 最简单例子

$ dbv file=/u01/oradata/YTSTD2/ts_test.dbf

DBVERIFY: Release 10.2.0.4.0 - Production on Fri Mar 19 15:09:54 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = /u01/oradata/YTSTD2/ts_test.dbf

DBVERIFY - Verification complete

Total Pages Examined         : 1280

Total Pages Processed (Data) : 1

Total Pages Failing   (Data) : 0

Total Pages Processed (Index): 0

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 11

Total Pages Processed (Seg)  : 0

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 1268

Total Pages Marked Corrupt   : 0

Total Pages Influx           : 0

Highest block SCN            : 2489181293 (1.2489181293)

dbverify给出的结果包括数据文件包括的Pages数量(即BLOCKS), 其中包括多少个数据块, 多少个索引块, 多少空块, 多少个已经被标志为坏块的块, 多少个坏块.


1.3 验证指定段的用法

DBV工具还有一种在数据库打开的情况下使用的, 验证指定段的用法.

这种方法需要查询表空间ID,段头所在的数据文件ID和以及段头所在块ID, 要获取这个信息可以通过SYS用户查询SYS_DBA_SEGS视图. 需要注意的是, Oracle文档给出的SYS_USER_SEGS视图只能查询SYS用户的段, 要查询普通用户的段信息, 需要访问 SYS_DBA_SEGS.

SQL>  SELECT TABLESPACE_ID, HEADER_FILE, HEADER_BLOCK FROM SYS_DBA_SEGS WHERE SEGMENT_NAME = 'LOG_RECORD_DETAIL_4_BAK';

TABLESPACE_ID HEADER_FILE HEADER_BLOCK

------------- ----------- ------------

           11           9      3114355

           11           9      3114363

           11           9      3254683

...

           

dbv执行时需要指定userid(需sysdba权限), 这种方式要求数据库处于打开的状态.

$ dbv userid=u_test/"xxx" segment_id=11.9.3114355

DBVERIFY: Release 10.2.0.4.0 - Production on Fri Mar 19 15:21:05 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

DBVERIFY - Verification starting : SEGMENT_ID = 11.9.3114355

DBVERIFY - Verification complete

Total Pages Examined         : 3

Total Pages Processed (Data) : 0

Total Pages Failing   (Data) : 0

Total Pages Processed (Index): 0

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 2

Total Pages Processed (Seg)  : 1

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 0

Total Pages Marked Corrupt   : 0

Total Pages Influx           : 0

Highest block SCN            : 0 (0.0)


1.4 验证ASM磁盘的用法

如果是验证ASM磁盘, 那么需要指定userid(需sysdba权限), 因为此时需要登陆Oracle数据库来访问ASM磁盘.

$ dbv file='+DATA1/bi/datafile/estaging_user01.1193.708261065' userid=u_test/"xxx" feedback=100

$ dbv file='+DATA1/bi/datafile/estaging_user01.1193.708261065' userid=u_test/"xxx" start=3496673 end=3496673


1.5 验证数据文件拷贝的用法

由于dbv可以在实例关闭情况下验证数据文件, 因此dbv也可以验证数据文件的拷贝. 这个拷贝指的是通过RMAN的COPY命令或者操作系统命令cp拷贝的数据文件, 而不是RMAN生成的备份集格式.

$ rman target /

RMAN> run

{

copy datafile 'E:\ORACLE\ORADATA\YTK92\USERS01.DBF' to 'e:\userbak.dbf';

}

RMAN> exit

$ dbv file=e:\userbak.dbf


1.6 注意

对于DBVERIFY工具, 高版本可以自动识别低版本数据库, 比如11g的dbv访问9i的数据库, 但是低版本的dbv访问高版本会报错.


--End--
阅读(1809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~