注册
达梦数据库dmctl命令使用
培训园地/ 文章详情 /

达梦数据库dmctl命令使用

我不是小样 2026/06/15 610 0 0

达梦数据库dmlcvt工具介绍及使用
1、dmlcvt功能简介
DMLCVT是DM数据库提供的一个工具,专门用于解析和修改日志文件,包括联机日志和归档日志。当系统或介质因意外情况发生故障时,日志文件成为了分析故障原因和进行修复的关键。这时,管理员可以调用DMLCVT这一日志分析工具,通过指定日志文件的类型和存储路径,从中获取详尽的日志信息,进而分析系统故障的根源。值得注意的是,如果在数据库配置中未开启逻辑附加日志功能(即RLOG_APPEND_LOGIC=0),那么DBMS_LOGMNR工具将无法通过日志挖掘获取相关信息。然而,若想了解某特定时间段内是否对某个表进行了数据操作(DML操作),管理员依然可以利用DMLCVT工具对归档日志进行分析,从而获取所需信息。
通常DMLCVT解析日志需要指定读入的日志文件类型、具体路径以及结果输出路径等。指定日志文件路径有四种方式:
一、指定归档目录,程序会解析目录下所有归档日志文件
二、指定单个归档日志文件,程序只解析指定的归档日志文件
三、指定单个联机日志文件,程序只解析指定的联机日志文件
四、指定dm.ini文件,程序会解析dm.ini中指定的控制文件找出所有练级日志文件使用DMLCVT的前提条件是目标数据库要处于关闭状态。DMLCVT工具会对第一种方式(指定dm.ini文件)做检测,保证数据库处于关闭状态;其他三种情况需要用户负责检测。最终结果会以文件报告的形式给出,存放在输出路径下。不同操作生成的报告有所不同,所有可能的报告分别为file_infoxxx.txt、page_infoxxx.txt、rec_infoxxx.txt、warn_infoxxx.txt,其中xxx是文件后缀,从000开始。

2、dmlcvt具体语法
DMLCVT工具需要从命令行启动。找到dmlcvt所在安装/opt/dmdbms/bin,输入dmlcvt和参数后回车。
具体语法如下:
./dmlcvt KEYWORD=value {KEYWORD=value}
KEYWORD:多个参数之间排列顺序无影响,参数之间使用空格间隔
value:参数取值
例:通过解析文件/data/DAMENG/dm.ini,解析指定归档目录
./dmlcvt F_TYPE=1 F_PATH=/tmp/arch REC_LEVEL=3 REC_DATA=1 OUT_PATH=/tmp/rec/aa DM_INI=/data/DAMENG/dm.ini

3、dmlcvt参数说明
DMLCVT使用简单灵活。用户可使用dmlcvt help查看参数用法:
注:以下列举参数为常用参数,其余参数不一一列举,可根据实际情况选择。

F_TYPE 必选,表示读入的日志文件类型,与F_PATH配合使用
1 F_PATH必须指向归档目录
2 F_PATH必须指向某个归档文件
3 F_PATH必须指向单个联机日志文件
4 F_PATH必须指向文件dm.ini
5 F_PATH必须指向ptx->log组成的二进制文件
6 F_PATH必须指向从内存中dump出来的rpkg->data文件
7 F_PATH必须指向从内存中dump出来的buf_ctl->page文件(f_type=7 f_path=/xxx/24272.dat out_path=/xxx/24272 rec_data=1 desc_file=/xxx/desc.txt n_napp_flds=6 rowid_off=12)
F_PATH 必选,对应F_TYPE的路径
当F_TYPE = 6:
1.gdb dump memory /tmp/x.log begin_addr end_addr
2.dmlcvt f_type=6 f_path='/tmp/x.log' out_path='/tmp/log_analyse' rec_data=1
REC_LEVEL 可选,打印日志内容级别,可选值为1,2,3,默认为3
1 仅打印ptx信息
2 仅打印rec信息
3 打印ptx和rec信息
REC_DATA 可选,打印rec数据类型,可选值为0,1,2,默认为0
0 不打印rec数据
1 打印所有类型的rec数据
2 仅打印数据类型的rec数据
OUT_PATH 可选,输出文件路径,默认为当前路径,并包含以下文件: rec_infoxxx.txt, page_infoxxx.txt, file_infoxxx.txt, warn_infoxxx.txt F_TYPE=4并且OP_TYPE=4,则包含ref_pagesxxx.txt
DM_INI 可选,dm.ini的路径

4、dmlcvt具体使用
注:该操作不可在生产环境操作,需要将分析的归档日志拷贝到测试环境进行分析
1)分析归档日志
./dmlcvt F_TYPE=1 F_PATH=/data/ceshi/ REC_LEVEL=3 REC_DATA=1 OUT_PATH=/data/rec/aa
image.png
2)数据库中查询表的id
select * from sysobjects where name=’CC’;
image.png
通过sysobjects视图查询表的id为10进制,需转换为16进制在生成结果文件过滤
以上CC表对应的16进制为3F7
3)生成结果文件过滤
在/data/rec/aa目录中的rec_infoxxx.txt中过滤16进制的id:tabid:0x3F7
image.png
image.png
image.png

注:以上内容是对表进行DML操作
image.png

注:以上标识符UREC_REMOVE_DICT_OBJ表示表已被删除。

5、项目案例
1)项目背景
某项目因现场人员误操作删除了业务用户下所有表,导致业务中断,需立即到场排查并解决问题。
2)排查过程
通过查询数据库SYSOBJECTS视图的CREATE_TIME字段发现,所有业务表的创建时间均为业务中断时间,鉴于此系统已上线并稳定运行一段时间,由此可断定所有业务表均是被统一删除后重新创建。
因数据库暂未开启sqllog日志功能,无法确定具体操作IP及业务用户。同时RLOG_APPEND_LOGCI未开启,无法通过日志挖掘的方式分析归档日志。不过,使用dmlcvt工具可以分析归档日志后,在误操作时间发现UREC_REMOVE_DICT_OBJ操作符,该操作符代表对象被删除。
3)解决办法
为了尽快恢复业务,按照生产库参数创建新的实例,根据误操作前最新的一次全备及误操作前的增备、归档日志等,将数据恢复到误操作之前的数据,恢复完成后业务系统恢复正常。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服