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

Oracle 8i LogMiner 完整實戰指南:安裝、字典、日誌分析與跨庫應用

     編輯:Oracle 資料庫基礎

工具定位

LogMiner (8i+) 可離線分析 Redo/Archive Log,解析 DML (INSERT/UPDATE/DELETE) 並產生回滾 SQL,適用審計、回溯特定交易、容量規劃。純 PL/SQL 包 + 動態視圖,無 GUI,免費內建。

安裝步驟 (需 SYS)

@$ORACLE_HOME/rdbms/admin/dbmslmgm.sql  -- 建立 DBMS_LOGMNR 套件
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql   -- 建立 DBMS_LOGMNR_D 套件 (字典匯出)

核心流程四步驟

1. 建立資料字典檔 (關鍵:否則物件名顯示為 16 進位)

-- 1. init.ora 設定 UTL_FILE_DIR = '/oracle/logs'
-- 2. 重啟實例
-- 3. 匯出字典
EXEC DBMS_LOGMNR_D.BUILD(
    DICTIONARY_FILENAME => 'v816dict.ora',
    DICTIONARY_LOCATION => '/oracle/logs');

表結構變更或跨庫分析時必須重建字典。

2. 建立待分析日誌清單

-- Online Redo
EXEC DBMS_LOGMNR.ADD_LOGFILE(
    LOGFILENAME => '/oracle/oradata/sid/redo01.log',
    OPTIONS => DBMS_LOGMNR.NEW);

EXEC DBMS_LOGMNR.ADD_LOGFILE(
    LOGFILENAME => '/oracle/oradata/sid/redo02.log',
    OPTIONS => DBMS_LOGMNR.ADDFILE);

-- Archived Redo
EXEC DBMS_LOGMNR.ADD_LOGFILE(
    LOGFILENAME => '/oracle/oradata/sid/archive/ARC001.001',
    OPTIONS => DBMS_LOGMNR.NEW);
-- 後續 ADDFILE 追加...

移除:OPTIONS => DBMS_LOGMNR.REMOVEFILE。

3. 啟動分析 (設定時間/SCN 範圍)

-- 無限制
EXEC DBMS_LOGMNR.START_LOGMNR(
    DICTFILENAME => '/oracle/logs/v816dict.ora');

-- 指定時間範圍
EXEC DBMS_LOGMNR.START_LOGMNR(
    DICTFILENAME => '/oracle/logs/v816dict.ora',
    STARTTIME => TO_DATE('2001-09-18 00:00:00','YYYY-MM-DD HH24:MI:SS'),
    ENDTIME   => TO_DATE('2001-09-18 23:59:59','YYYY-MM-DD HH24:MI:SS'));

-- 指定 SCN 範圍
EXEC DBMS_LOGMNR.START_LOGMNR(
    DICTFILENAME => '/oracle/logs/v816dict.ora',
    STARTSCN => 20, ENDSCN => 50);

4. 查詢結果視圖 V$LOGMNR_CONTENTS

-- 所有重做 SQL
SELECT SQL_REDO FROM V$LOGMNR_CONTENTS;

-- 特定用戶對特定表的操作
SELECT SQL_REDO FROM V$LOGMNR_CONTENTS
WHERE USERNAME = 'DB_ZGXT' AND TABLE_NAME = 'SB_DJJL';

注意:結果僅存在於啟動 Session 的 PGA 中,Session 結束或執行 DBMS_LOGMNR.END_LOGMNR 即消失。

跨庫分析限制

  1. 必須使用 **被分析庫** 產生的字典檔。
  2. 字符集必須相同。
  3. 平台必須相同 (Unix→Unix, Windows→Windows)。
  4. 僅支援 Oracle 8.0+ 產生的日誌。

實戰建議

  • 每次僅加入一個日誌檔分析,分析完再加下一個,控制 PGA 記憶體。
  • 結合 SQL_UNDO 欄位可直接獲得回滾語句,加速 Point-in-Time Recovery。
  • 定期匯出字典檔備份,應對緊急審計需求。

總結

LogMiner 是 DBA 手中的「時光機」,雖無 GUI 但功能強大,掌握其 PL/SQL API 可應對審計、誤操作回溯、異機日誌分析等核心場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved