DM7_dmdbchk 使用
1 功能简介
dmdbchk 是 DM 提供的用于检查数据库完整性、正确性的命令行工具。在服务器正常关
闭后的脱机情况下,用户可以使用 dmdbchk 对数据库进行校验,包括校验 DM 数据库内部的
物理存储结构是否正常,对象信息是否合法等。
检验的内容具体包括三方面:
1. 数据文件合法性检验。
数据文件校验只校验数据文件大小。如果数据库文件实际大小大于或等于文件头中记录
的大小,则合法。
2. 索引正确性校验。
索引检验包括:普通表 B 树索引校验、LIST 表扁平 B 树索引校验、列存储表索引校验。校
验内容具体包括:B 树的层次、层次关系,每层的内部页、叶子页以及页之间的前后链接关
系,每个页的页头信息(如页类型等)等。
3. 对象 ID 合法性校验。
对象 ID 校验包括数据库内的所有对象的 ID 检验。对象包括:索引、表、约束、存储过程、
模式、同义词、用户等。如果从系统表中查出的对象 ID 小于库的 ID 预留页中记录的该类型
对象的下一分配 ID,则合法。因为库的 ID 预留页中记录的是各类型对象下一个新分配对象
将使用的 ID,因此若系统表中的对象 ID 大于或等于该 ID,说明库已损坏。
注意:dmdbchk并不能检查出用户实际数据的正确性,如果数据文件被手动人为
修改,正好修改到的是用户数据部分,是检查不出来的。
校验完毕后,dmdbchk 会在当前目录下(dmdbchk 所在目录)生成一个名为
dbchk_err.txt 的检查报告,供用户查看。
该工具位于安装目录的/dmdbms/bin 目录下。
2 使用 dmdbchk
dmdbchk 工具需要从命令行启动。找到 dmdbchk 所在安装目录/dmdbms/bin,输入
dmdbchk 和参数后回车。
语法如下:
dmdbchk ini_file_path
ini_file_path:dm.ini 绝对路径或者当前目录的 dm.ini。
注意:经过初始化,且正常关闭的数据库,才能被 dmdbchk 工具校验,
否则 dmdbchk 会报错退出。
例如,正常关闭/home/test/dmdbms 目录下数据库后,使用 dmdbchk 对数据库进行
校验。
./dmdbchk PATH=/home/test/dmdbms/dm.ini
如果 dm.ini 在 dmdbchk 当前目录,也可以写成这样:
./dmdbchk PATH=dm.ini
3 查看 dmdbchk 参数
dmdbchk 使用简单灵活。用户可使用“dmdbchk HELP”快速查看参数用法。
./dmdbchk HELP
格式: ./dmdbchk ini_file_path
例程: ./dmdbchk path=/opt/dmdbms/bin/dm.ini
关键字说明(默认)
-----------------------------------------------------------------------------
PATH
dm.ini 绝对路径或者当前目录的 dm.ini
DCR_INI
dmdcr.ini 的路径
HELP
打印帮助信息
START_INDEXID
最小检查索引号
END_INDEXID
最大检查索引号
4dmdbchk 报告解读
dmdbchk 校验的过程对用户不可见,校验的结果以报告的形式呈现给用户。
dmdbchk 报告内容分为七部分:一 dmdbchk 版本信息;二开始标志;三数据文件校验
结果;四索引校验结果;五对象 ID 校验结果;六结束标志;七错误总数。
数据文件校验结果、索引校验结果、对象 ID 校验结果三部分内容伸缩性较大,内容多
少由数据库大小决定。对于数据文件校验结果和索引校验结果,如果校验成功,直接打印出
具体校验的对象;如果校验失败,则打印出具体错误信息。对于对象 ID 校验结果,如果校
验成功,不打印出具体校验的对象;如果校验失败,则打印出具体错误信息。
https://eco.dameng.com