| Oracle 版本 | 分析 DML | 分析 DDL | 備註 |
|---|---|---|---|
| 8i | ✓ | ✗ | 僅 DML |
| 9i+ | ✓ | ✓ | 完整功能 |
可分析舊版(8.0+)日誌,但工具需安裝於 8i+ 資料庫。
@$ORACLE_HOME/rdbms/admin/dbmslm.sql -- 建立 DBMS_LOGMNR 套件
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql -- 建立 DBMS_LOGMNR_D 套件(字典產生)
EXEC DBMS_LOGMNR_D.BUILD('dict.ora', '/path', DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);EXEC DBMS_LOGMNR_D.BUILD(options => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);EXEC DBMS_LOGMNR.START_LOGMNR(
startScn => 123456,
endScn => 789012,
DictFileName => '/path/dict.ora',
Options => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
SELECT scn, timestamp, operation, sql_redo, sql_undo, seg_owner, seg_name
FROM v$logmnr_contents
WHERE seg_owner = 'SCOTT'
AND operation IN ('INSERT','UPDATE','DELETE');
EXEC DBMS_LOGMNR.END_LOGMNR;V$ARCHIVED_LOG)。OPERATION='DELETE' 且 SEG_NAME='TARGET_TABLE'。SQL_UNDO 欄位(即反向 INSERT),直接執行即可恢復。DBMS_ALERT 或外部表實現近即時異常警報(如大量刪除、DDL 變更)。