DBVERIFY工具的使用
- DBVERIFY工具介绍:
- DBVERIFY is an external command-line utility that performs a physical data structure integrity check. It can be used on offline or online databases, as well on backup files. You use DBVERIFY primarily when you need to ensure that a backup database (or datafile) is valid before it is restored, or as a diagnostic aid when you have encountered data corruption problems;
- DBVERIFY checks are limited to cache-managed blocks (that is, data blocks). Because DBVERIFY is only for use with datafiles, it will not work against control files or redo logs;
- 只支持镜像备份,不支持备份集验证;测试发现控制文件可以验证,但是在线日志不可以;
- DBVERIFY的语法:dbv key=value;
- USERID=Username/Password:指定用户名密码,如果检查的文件是ASM文件系统,需要提供验证信息;
- FILE=file_name:要检查的datafile文件名;
- START=start_block:要检查的文件的开始块号,默认是文件第一个块;
- END=end_block:要检查文件的结束的块号,默认是文件最后一个块;
- BLOCKSIZE=size:指定块的大小,默认是8k,如果使用的不是8k的块需要指定此参数;
- LOGFILE=log_file:指定日志文件,如果不指定就显示在终端;
- FEEDBACK=n:返回检查的进度,n个单位打一个点;
- PARFILE=parameter_file:指定一个参数文件;
- SEGMENT_ID:指定段的id(由三部分组成:tablespace_id.header_file.header_block),可以通过sql语句查询;
- DBVERIFY的用法:
- 对datafile文件进行检查;
- 对segment进行检查;
- 对备份集的检查;
- 对控制文件的检查;
- 检查datafile中的block:
- 这种模式下,会扫描一个datafile中的一个或者多个blocks,并生成一份检查结果;
- 如果datafile是ASM系统文件的话,需要提供USERID连接到这个ASM文件;
- 检查system表空间:dbv file=$ORACLE_BASE/oradata/PROD/system01.dbf feedback=1000;
- 检查segment:
- 在这种模式下,可以用来检查一个对象(表/索引)使用的segment的可用性,指定segment的所有链表都会被检查;
- 被检查的相应的对象会被加锁,如果是索引的话,则引用的表会被加锁;
- 需要提供sysdba的身份验证,因为需要读取segment的数据字典;
- 检查scott用户下emp表的segment:dbv userid=scott/tiger segment_id=4.4.2003 feedback=10;
- 验证控制控制文件:
- 常规验证,发现错误,因为块大小不对,修改验证语法:dbv file=$ORACLE_BASE/oradata/PROD/control01.ctl feedback=100;
- 验证:dbv file=$ORACLE_BASE/oradata/PROD/control01.ctl blocksize=16384 feedback=100;
- 常规验证,发现错误,因为块大小不对,修改验证语法:dbv file=$ORACLE_BASE/oradata/PROD/control01.ctl feedback=100;
— 查询某个SEGMENT的id;
SELECT a.ts# || ‘.’ || b.header_file || ‘.’ || b.header_block
FROM v$tablespace a, dba_segments b
WHERE a.NAME = b.tablespace_name AND b.segment_name = ‘segment_name’ AND owner = ‘owner’;
FROM v$tablespace a, dba_segments b
WHERE a.NAME = b.tablespace_name AND b.segment_name = ‘segment_name’ AND owner = ‘owner’;
— 块损坏的几种检查;
————————————————————————————–
特性 坏块侦测类型 能否修复损坏块
————————————————————————————————
DBVERIFY 物理 否
ANALYZE 逻辑 否
DB_BLOCK_CHECKING 逻辑 否
DB_BLOCK_CHECKSUM 物理 否
exp 物理 否
FlashBack 逻辑 是
DBMS_REPAIR 逻辑 是
Block media recovery 未知 是
特性 坏块侦测类型 能否修复损坏块
————————————————————————————————
DBVERIFY 物理 否
ANALYZE 逻辑 否
DB_BLOCK_CHECKING 逻辑 否
DB_BLOCK_CHECKSUM 物理 否
exp 物理 否
FlashBack 逻辑 是
DBMS_REPAIR 逻辑 是
Block media recovery 未知 是