Oracle LogMiner 解析归档

LogMiner Options 选项速查表

选项 作用 是否必需
DICT_FROM_ONLINE_CATALOG 2 使用在线字典 ✅ 必选一个
DICT_FROM_REDO_LOGS 4 使用日志中的字典 ✅ 必选一个
COMMITTED_DATA_ONLY 16384 只显示已提交事务 ✅ 推荐
NO_ROWID_IN_STMT 2048 SQL中不包含ROWID ✅ 推荐
NO_SQL_DELIMITER 4096 SQL末尾不加分号 可选
STRING_LITERALS_IN_STMT 512 使用字面量而非绑定变量 可选
CONTINUOUS_MINE 128 连续挖掘模式 可选
SKIP_CORRUPTION 8 跳过损坏日志块 可选

示例一

直接使用当前数据库的在线数据字典(推荐,实时性好)(适用于挖掘当前数据库仍存在的对象的操作,必须添加数据库补充日志):

SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

BEGIN

DBMS_LOGMNR_D.BUILD(OPTIONS => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

END;

/

BEGIN

DBMS_LOGMNR.ADD_LOGFILE(

LOGFILENAME => 'C:\app\oracle_arch\1_1_1222942331.DBF',

OPTIONS => DBMS_LOGMNR.NEW

);

DBMS_LOGMNR.ADD_LOGFILE(

LOGFILENAME => 'C:\app\oracle_arch\1_2_1222942331.DBF'

);

END;

/

BEGIN

DBMS_LOGMNR.START_LOGMNR(

OPTIONS =>

DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG +

DBMS_LOGMNR.COMMITTED_DATA_ONLY +

DBMS_LOGMNR.NO_ROWID_IN_STMT

);

END;

/

BEGIN

DBMS_LOGMNR.END_LOGMNR();

END;

/

示例二

(使用数据字典文件方式):

CREATE OR REPLACE DIRECTORY ZZH_DIR AS 'C:\app\oracle_dump';

GRANT READ, WRITE ON DIRECTORY ZZH_DIR TO SYS;

BEGIN

DBMS_LOGMNR_D.BUILD(

DICTIONARY_FILENAME => 'logminer_dict.ora',

DICTIONARY_LOCATION => 'ZZH_DIR',

OPTIONS => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE

);

END;

/

BEGIN

DBMS_LOGMNR.ADD_LOGFILE(

LOGFILENAME => 'C:\app\oracle_arch\1_1_1222942331.DBF',

OPTIONS => DBMS_LOGMNR.NEW

);

DBMS_LOGMNR.ADD_LOGFILE(

LOGFILENAME => 'C:\app\oracle_arch\1_2_1222942331.DBF'

);

END;

/

BEGIN

DBMS_LOGMNR.START_LOGMNR(

DICTFILENAME => 'C:\app\oracle_dump\logminer_dict.ora',

OPTIONS =>

DBMS_LOGMNR.COMMITTED_DATA_ONLY +

DBMS_LOGMNR.NO_ROWID_IN_STMT +

DBMS_LOGMNR.NO_SQL_DELIMITER

);

END;

/

BEGIN

DBMS_LOGMNR.END_LOGMNR();

END;

/

查看所有归档日志信息(包括路径、大小、生成时间等),可以通过first_time筛选目标时间范围的归档日志

SELECT name, sequence#, first_time, next_time

FROM v$archived_log

WHERE first_time BETWEEN

TO_DATE('2025-10-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND

TO_DATE('2026-10-27 23:59:59', 'YYYY-MM-DD HH24:MI:SS');

查询分析结果

注意:不管什么分析方式,查询分析结果的方式是一样的。

SELECT SCN,

TIMESTAMP,

OPERATION_CODE,

OPERATION,

SEG_OWNER,

SEG_NAME,

TABLE_NAME,

SEG_TYPE_NAME,

TABLE_SPACE,

ROW_ID,

SESSION_INFO,

TX_NAME,

XIDUSN,

XIDSLT,

XIDSQN,

RBASQN,

RBABLK,

RBABYTE,

SQL_REDO,

SQL_UNDO,

USERNAME,

OS_USERNAME,

MACHINE_NAME

FROM V$LOGMNR_CONTENTS

WHERE OPERATION IN ('INSERT', 'UPDATE', 'DELETE', 'DDL')

ORDER BY SCN ASC, COMMIT_SCN ASC;

相关推荐
倔强的石头10614 小时前
新型电力系统应该用什么数据库?——时序数据库选型与落地实战
数据库·时序数据库
墨神谕14 小时前
关系型数据库与非关系型数据库的区别
数据库·nosql
掌勺者14 小时前
MySQL 事务简介
数据库·mysql
小码吃趴菜14 小时前
服务器预约系统linux小项目-第四节课
数据库·sql·mysql
jnrjian14 小时前
DBA_RECYCLEBIN purge指定日期前的表
oracle
探索宇宙真理.14 小时前
Grafana SQL表达式漏洞 | CVE-2026-27876概念复现&研究
数据库·sql·grafana
jnrjian14 小时前
rman restore preview 和validate ,preview可以查找到archivelog的范围
oracle·dba
jnrjian14 小时前
只有dba_objects 试图显示 回收站中的对象
oracle·dba
七七powerful14 小时前
MySQL 8.0 性能优化利器:Percona Toolkit 实战指南
数据库·mysql·性能优化
渣渣盟17 小时前
Flink Table API与SQL流数据处理实战
大数据·sql·flink·scala