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--
阅读(1841) | 评论(0) | 转发(0) |