首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

LogMiner 日誌分析工具完整使用指南:字典模式、Redo 模式、跨平台限制與 10g 補充日誌

     編輯:Oracle 資料庫基礎

安裝

@$ORACLE_HOME/rdbms/admin/dbmslm.sql
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
-- 均需 SYS 身分執行

模式一:字典存 Flat File(需重啟)

-- 1. 設定 UTL_FILE_DIR 並重啟
ALTER SYSTEM SET utl_file_dir='/u01/app/oracle/logmnr' SCOPE=SPFILE;
STARTUP FORCE;

-- 2. 建立字典檔
EXEC dbms_logmnr_d.build(
    dictionary_filename => 'dict.ora',
    dictionary_location => '/u01/app/oracle/logmnr',
    options => dbms_logmnr_d.store_in_flat_file
);

-- 3. 加入日誌檔
EXEC dbms_logmnr.add_logfile(logfilename => '/arch/1_3814.dbf', options => dbms_logmnr.new);
EXEC dbms_logmnr.add_logfile(logfilename => '/arch/1_3815.dbf', options => dbms_logmnr.addfile);

-- 4. 啟動分析
EXEC dbms_logmnr.start_logmnr(dictfilename => '/u01/app/oracle/logmnr/dict.ora');

-- 5. 查詢結果
CREATE TABLE logmnr_result AS SELECT * FROM v$logmnr_contents;

-- 6. 結束
EXEC dbms_logmnr.end_logmnr();

模式二:字典存 Redo Log(推薦,免重啟)

-- 1. 字典直接寫入 Redo
EXEC dbms_logmnr_d.build(options => dbms_logmnr_d.store_in_redo_logs);

-- 2. 加入日誌檔(同上)

-- 3. 啟動分析
EXEC dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_redo_logs);

-- 後續查詢與結束同模式一

10g/11g/12c/19c 必須啟用補充日誌

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
-- 關閉
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

跨實例/跨平台分析限制

  1. 必須使用被分析資料庫產生的字典,而非安裝 LogMiner 的資料庫字典。
  2. 字符集必須相同。
  3. 平台必須相同(Unix 產生的 Redo 必須在 Unix 上分析,不可在 Windows)。
  4. 僅支援 Oracle 8.0 以上版本產生的 Redo。

常用查詢範例

-- 查特定表 DML
SELECT sql_redo, sql_undo, timestamp, username
FROM v$logmnr_contents
WHERE seg_name = 'EMP' AND operation IN ('INSERT','UPDATE','DELETE');

-- 查特定用戶活動
SELECT * FROM v$logmnr_contents WHERE username = 'SCOTT';

-- 查 DDL
SELECT sql_redo FROM v$logmnr_contents WHERE operation = 'DDL';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved