达梦DM8之dmdbchk检查数据库完整性

1. 功能介绍
        dmdbchk 是 DM 提供的用于检查数据库完整性、正确性的命令行工具。在服务器正常关闭后的脱机情况下,用户可以使用 dmdbchk 对数据库进行校验,包括校验 DM 数据库内部的物理存储结构是否正常,对象信息是否合法等。除此之外,dmdbchk 工具还可以检测并删除操作系统中残留的信号量和共享内存,避免达到操作系统上限后数据库服务无法启动。

2. 查看dmdbchk参数信息
[dmdba@dmdb bin]$ ./dmdbchk help
[2022-05-26 13:15:19] dmdbchk V8

格式: ./dmdbchk KEYWORD=value

例程: ./dmdbchk path=/opt/dmdbms/bin/dm.ini

关键字         说明
--------------------------------------------------------------------------------
PATH           dm.ini绝对路径或者当前目录的dm.ini
DCR_INI        dmdcr.ini的路径
HELP           打印帮助信息
START_INDEXID  最小检查索引号
END_INDEXID    最大检查索引号
CHECK_SEMA     检查当前系统信号量使用情况(只适用于LINUX,1:只做检查 2:检查并删除残留信号量)
CHECK_SHM      检查当前系统共享内存使用情况(只适用于LINUX,1:只做检查 2:检查并删除残留共享内存)
[dmdba@dmdb bin]$ 

3. dmdbchk命令测试示例
./dmdbchk path=/opt/dmdbms/data/dm.ini
校验后的报告存在 dmdbchk 工具所在的目录里,名称为 dbchk_err.txt

3.1 示例1:初始化一个数据库,并创建 DM 的示例库 BOOKSHOP,正常关闭后,使用 dmdbchk 工具对该库的数据文件进行校验。
[dmdba@dmdb bin]$ ./dmdbchk /dm8/dmdbms/data/dm02/dm.ini 
/**一 一 dmdbchk  版本信息**/
[2022-05-26 13:19:21] dmdbchk V8

[2022-05-26 13:19:21] file dm.key not found, use default license!
Can not open ini file dmdcr.ini!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
ndct db load finished
/** 二 开始标志 **/
[2022-05-26 13:19:21] DM DB CHECK START......
/** 三 数据文件校验结果 **/
[2022-05-26 13:19:21] --------check dbf file size start---------

[2022-05-26 13:19:21] FILE=(ts_id=0, fil_id=0, path=/dm8/dmdbms/data/dm02/SYSTEM.DBF)
[2022-05-26 13:19:21] FILE=(ts_id=1, fil_id=0, path=/dm8/dmdbms/data/dm02/ROLL.DBF)
[2022-05-26 13:19:21] [FAILED] db file /dm8/dmdbms/data/dm02/ROLL.DBF file size mismatch. file_size=92274688, fsm_file_size=169869312
[2022-05-26 13:19:21] FILE=(ts_id=4, fil_id=0, path=/dm8/dmdbms/data/dm02/MAIN.DBF)
[2022-05-26 13:19:21] --------check dbf file size end-----------
/** 四 索引校验结果 **/
[2022-05-26 13:19:21] --------check indexes start---------------

[2022-05-26 13:19:21] INDEX=(id=33554433, name=SYSINDEXCOLUMNS, table_name=SYSCOLUMNS)
[2022-05-26 13:19:21] INDEX=(id=33554434, name=SYSINDEXINDEXES, table_name=SYSINDEXES)
[2022-05-26 13:19:21] INDEX=(id=33554440, name=SYSINDEXTUSERS, table_name=SYSUSER$)
[2022-05-26 13:19:21] INDEX=(id=33554442, name=SYSINDEXSYSGRANTS, table_name=SYSGRANTS)
......
[2022-05-26 13:19:21] INDEX=(id=33555799, name=INDEX33555799, table_name=T_YUAN)
[2022-05-26 13:19:21] INDEX=(id=33555800, name=INDEX33555800, table_name=T_MUDI)
[2022-05-26 13:19:21] INDEX=(id=33555801, name=INDEX33555801, table_name=T_YUAN_TRIGGER_CDC)
[2022-05-26 13:19:21] INDEX=(id=33555802, name=INDEX33555802, table_name=T_YUAN_SHADOW_CDC)
[2022-05-26 13:19:21] INDEX=(id=33555803, name=INDEX33555803, table_name=T_YUAN_SHADOW)
[2022-05-26 13:19:21] INDEX=(id=33555807, name=INDEX33555807, table_name=T_MUDI1)
[2022-05-26 13:19:21] INDEX=(id=33555809, name=INDEX33555809, table_name=PRODUCT)
[2022-05-26 13:19:21] INDEX=(id=33555810, name=INDEX33555810, table_name=FACTORY)
[2022-05-26 13:19:21] INDEX=(id=33555811, name=INDEX33555811, table_name=PRODUCT_RECALL)
[2022-05-26 13:19:21] --------check indexes end-----------------
/** 五 对象ID校验结果 **/
[2022-05-26 13:19:21] --------check iid start-------------------

[2022-05-26 13:19:21] check cons id ...
[2022-05-26 13:19:21] check index id ...
[2022-05-26 13:19:21] check table id ...
[2022-05-26 13:19:21] check proc id ...
[2022-05-26 13:19:21] check schema id ...
[2022-05-26 13:19:21] check synonym id ...
[2022-05-26 13:19:21] check user id ...
[2022-05-26 13:19:21] --------check iid end---------------------
/** 六 结束标志 **/
[2022-05-26 13:19:21] DM DB CHECK END......
/** 七 错误总数 **/
[2022-05-26 13:19:21] error count is 1
[dmdba@dmdb bin]$ 

3.2 示例2:检测某台 linux 机器上信号量的使用情况 CHECK_SEMA=1
[dmdba@dmdb bin]$ ./dmdbchk CHECK_SEMA=1
[2022-05-26 13:27:59] dmdbchk V8

[2022-05-26 13:27:59] check os semaphore finished:
[2022-05-26 13:27:59] total_cnt:0, active_cnt:0, check_err_cnt:0, need_del:0, real_del:0, del_err_cnt:0!
[dmdba@dmdb bin]$ 

3.3 示例3:检查某台 linux 机器上共享内存的使用情况 CHECK_SHM=1
[dmdba@dmdb bin]$ ./dmdbchk CHECK_SHM=1
[2022-05-26 13:35:18] dmdbchk V8

[2022-05-26 13:35:18] check os shared memory finished:
[2022-05-26 13:35:18] total_cnt:0, active_cnt:0, check_err_cnt:0, need_del:0, real_del:0, del_err_cnt:0!
[dmdba@dmdb bin]$ 


达梦数据库社区地址:https://eco.dameng.com/

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐