一、简介
kddv 是对 K-DB 数据库的数据文件进行一致性检查的简单工具,它可对脱机的数据文件进行检查。(不适用于控制文件、redo文件、临时文件,归档文件)
kddv 对各个数据块执行下面的检查。
● 数据块地址 (DBA) 是否正确 ;
● 数据块的校验和 (checksum) 是否匹配 ;
● 数据块的可用空间和已用空间的合计是否等于块的大小 ;
● 数据行片 (row-piece) 有没有重叠 。
上述检查中有任何一项失败都可以判定故障,要执行介质恢复 (media recovery) 恢复数据库。
二、使用
$ kddv [-s BLKSIZE] [-l CHECK_LENGTH] /path/to/datafile
-s,指定块的大小,默认为 8192byte。 (此参数很重要,要根据建库时的值设定)
-l,如果只想针对文件的前面一部分进行检查,可通过 CHECK_LENGTH 指定长度,缺省为对整个文件执行检查。
RAW Device 时必需写入RAW Device的大小,否则将发生错误。
三、举例
[kdb@kdbtest kdb01]$ kddv -s 8192 -l 2M tbs_test001.dtf
==================================================================
= Database Verifier (DV) starts =
= =
= =
==================================================================
Datafile blk cnt = 256
Multiblock cnt = 1
Verifying ‘tbs_test001.dtf’…
Verifying complete.
Total blocks: 257
Processed blocks: 23
Empty blocks: 234
Corrupt blocks: 0
[kdb@kdbtest kdb01]$
四、注意事项
1、如果不写-s,默认是8192byte;不写-l,默认是整个文件。如果-s指定了不正确的大小,则会报很多的misplaced.dba differs错误。
2、在使用kddv工具时-s大小要与建库时时指定的数据块大小一致。
五、常见报错
1、发现数据块中写入 dba 的部分发生损坏,输出类似下面的错误
block #2351 is misplaced.dba differs (expected=16779567, real=16779551)
2、在数据文件中发现块损坏/不完整,输出类似下面的错误
block #2311 isn’t consistent.
3、发现可用空间和块大小的剩余空间发生差异时,输出类似下面的错误
block #2004 has incorrect freespace.




