1. 程式人生 > >Oracle 11g之LogMiner常用場景

Oracle 11g之LogMiner常用場景

LogMiner常用場景

1.1 LogMiner跟蹤特定使用者所做的更改

本節例子,查出使用者joedevo在特定時間範圍內對資料庫所做的所有操作,步驟如下:

1.建立LogMiner字典

   使用LogMiner分析joedevo相關的資料,必須在joedevo對它的所有表做任何的更改操作前建立LogMiner字典或者直接使用線上字典,本例使用已提取到重做日誌檔案中的LogMiner字典。

2.新增重做日誌檔案

在joedevo對資料庫做了一些更改操作之後,可以指定對應的重做日誌檔案來分析:

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -

   LOGFILENAME => 'log1orc1.ora', -

   OPTIONS => DBMS_LOGMNR.NEW);

根據需要新增其他的重做日誌檔案:

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -

   LOGFILENAME => 'log2orc1.ora', -

   OPTIONS => DBMS_LOGMNR.ADDFILE);

3.開啟LogMiner並限制查詢範圍

SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR( -

   DICTFILENAME => 'orcldict.ora', -

   STARTTIME => TO_DATE('01-Jan-1998 08:30:00','DD-MON-YYYY HH:MI:SS'), - ENDTIME => TO_DATE('01-Jan-1998 08:45:00', 'DD-MON-YYYY HH:MI:SS'));

4.查詢V$LOGMNR_CONTENTS

SQL> SELECT SQL_REDO, SQL_UNDO FROM V$LOGMNR_CONTENTS

   WHERE USERNAME = 'joedevo' AND SEG_NAME = 'salary';

5.停止LogMiner

SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR();

1.2 LogMiner做表的訪問統計

   本節案例中,假設你管理者一個直營資料庫,想確定1月份2周內客戶帶來的生產效益,假定你已經建立了LogMiner字典並添加了相關的重做日誌檔案,接下來的步驟如下:

1.開始LogMiner並限制查詢範圍

SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR( -

   STARTTIME => TO_DATE('07-Jan-2003 08:30:00','DD-MON-YYYY HH:MI:SS'), -

   ENDTIME => TO_DATE('21-Jan-2003 08:45:00','DD-MON-YYYY HH:MI:SS'), -

   DICTFILENAME => '/usr/local/dict.ora');

2.查詢V$LOGMNR_CONTENTS

查詢V$LOGMNR_CONTENTS確定指定時間範圍內哪些表發生了變化:

SQL> SELECT SEG_OWNER, SEG_NAME, COUNT(*) AS Hits FROM

   V$LOGMNR_CONTENTS WHERE SEG_NAME NOT LIKE '%$' GROUP BY

   SEG_OWNER, SEG_NAME ORDER BY Hits DESC;

3.停止LogMiner

SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR();