为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 达梦 8
【操作系统】:
【CPU】:
【问题描述】*:
我在使用达梦数据库的 LogMiner 功能时遇到了问题。即使正确配置 LogMiner 并执行事务后,执行 SELECT COUNT(*) FROM V$LOGMNR_CONTENTS
始终返回 0,无法获取任何 DML 操作记录。
我按照以下顺序执行操作:
-- 清除任何现有的 LogMiner 会话
BEGIN DBMS_LOGMNR.END_LOGMNR(); EXCEPTION WHEN OTHERS THEN NULL; END;
-- 执行插入操作
INSERT INTO TEST.T000011(name) VALUES ('测试名称');
COMMIT;
-- 强制切换日志,使事务进入归档日志
ALTER SYSTEM SWITCH LOGFILE;
-- 稍等几秒钟让系统完成归档
-- 使用匿名块自动获取最新日志文件并设置 LogMiner
DECLARE
v_latest_log VARCHAR2(1000);
BEGIN
-- 获取最新的归档日志文件名
SELECT NAME INTO v_latest_log
FROM V$ARCHIVED_LOG
ORDER BY SEQUENCE# DESC
FETCH FIRST 1 ROW ONLY;
-- 输出找到的日志文件路径
DBMS_OUTPUT.PUT_LINE('添加日志文件:' || v_latest_log);
-- 添加找到的日志文件到 LogMiner
DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => v_latest_log);
-- 启动 LogMiner
DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
END;
-- 查询内容
SELECT COUNT(*) FROM V$LOGMNR_CONTENTS;
执行上述步骤后,V$LOGMNR_CONTENTS
表中没有任何记录(COUNT(*) = 0)。
我使用的是 SYSDBA 账户,也排除了
非常感谢您的帮助!
查询一下数据的dm.ini参数RLOG_APPEND_LOGIC=1,不是的话需要改为1重启生效
SELECT
para_name,
para_value
FROM
v$dm_ini
WHERE
para_name = 'RLOG_APPEND_LOGIC';
我已经测试过了,出现了新的问题
INSERT INTO TEST.TTT(NAME) VALUES ('T1');
COMMIT;
执行后 LogMiner 文件中没有 COMMIT 的信息!
逻辑附加日志开启了吗?
查看下数据库参数RLOG_APPEND_LOGIC是否为1