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;