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