Oracle 追蹤使用者操作 體驗logminer的威力

來源:互聯網
上載者:User

通過SQL的介面來查詢redo日誌的工具。

用途:
1, 使用者在誤刪除資料後,可以通過LogMiner來恢複;雖然也可以通過RMAN來恢複,但需要有之前的備份,要先轉出再query,會比較麻煩;LogMiner比較簡單;

2,可以進行後審計功能,LOG 日誌中包含跟蹤任何DML和DDL的的全部資訊,可以知道執行的順序和有誰來執行;

步驟

1.資料庫的supplemental的狀態調整
2.建立資料庫層級的觸發器,用以記錄客戶的登入資訊
3.安裝logminer
4.建立logminer資料字典(如果沒有建立資料自己,而是線上分析,看見的不是原始sql,而是
                       被Oracle格式化的sql語句)
5.添加需要分析的日誌
6.分析日誌
7.查看結果(v$logmnr_contents)

一,我們需要查看v$logmnr_contents中的用戶端的資訊,看是否開啟支援logminer。

select name,supplemental_log_data_min from v$database

我們就要設定  supplemental_log_data_min 為on

YES為開啟狀態,會記錄session_info,username等資訊
NO為關閉狀態,不會記錄sesion_info,username等資訊

開啟方式:

 alter database add supplemental log data;

關閉方式

alter database drop supplemental log data;

此參數是記錄到控制檔案中的,如果重新建立了資料庫控制檔案,我們需要重新設定。

二,建立庫基本的觸發器:

SQL> create or replace trigger on_logon_tigger
  2  after logon on database
  3  begin
  4  dbms_application_info.set_client_info(sys_context('userenv','ip_address'));
  5  end;
  6  /


現在,我們就可以在V$SESSION視圖的CLIENT_INFO列中看到新登入的用戶端IP地址了。那麼現在就可以在
session_info 中看用戶端的ip了

三,安裝logminer:


四、分析

exec dbms_logmnr.start_logmnr(dictfilename=>'C:\oracle\logs\dictionary.ora'); 

exec dbms_logmnr.start_logmnr;

例子:
select timestamp,commit_timestamp,table_space,session#,serial#,username,session_info,sql_redo,operation,table_name,seg_name,seg_owner
from v$logmnr_contents
where seg_owner=upper('scott)
and   operation=upper('insert');


六、結束分析
SQL> execute dbms_logmnr.end_logmnr;

建議使用非SYSTEM TABLESPACE來存放LogMiner的資訊:
exec DBMS_LOGMNR_D.SET_TABLESPACE(’logmnrts$’);

1.logminer實際上是由兩個pl/sql內建包(dbms_logmnr和dbms_logmnr_d)和4個v$動態效能檢視組成的.

v$logmnr_logs
v$logmnr_contents
v$logmnr_parameters

  安裝logminer首先要以sys管理員的身份運行這個pl/sql指令碼

  sql> conn /as sysdba

  sql> @/rdbms/admin/dbmslm.sql

  sql> @/rdbms/admin/dbmslmd.sql

2. 修改參數 utl_file_dir參數

這個參數是靜態參數,修改後需要資料庫,才會起作用。

SQL> alter system set utl_file_dir='c:\logminerlog' scope=spfile;

系統已更改。

SQL> host mkdir c:\logminerlog

SQL> exec dbms_logmnr_d.build(dictionary_filename=>'logminer',dictionary_location=>'c:\logminerlog');

PL/SQL 過程已成功完成。

SQL> begin
  2  dbms_logmnr_d.build(dictionary_filename=>'logminer',dictionary_location=>'c:\logminerlog');
  3  end;
  4  /

PL/SQL 過程已成功完成。

SQL> show parameter utl_file_dir

NAME                                 TYPE        VALUE                         
------------------------------------ ----------- ------------------------------
utl_file_dir                         string      c:\logminerlog          

SQL> exec dbms_logmnr_d.build(dictionary_filename=>'dictionary.ora',dictionary_location=>'c:\logminerlog');

PL/SQL 過程已成功完成。

 

SQL> exec dbms_logmnr.add_logfile(logfilename=>'D:\app\Gavin\oradata\orcl\redo03.log',options=>dbms_logmnr.new);

PL/SQL 過程已成功完成。

SQL> exec dbms_logmnr.add_logfile(logfilename=>'D:\app\Gavin\oradata\orcl\redo01.log',options=>dbms_logmnr.addfile);

PL/SQL 過程已成功完成。


為了減少視圖的資料量,加快分析的時間,可以把分析過的日誌從視圖中刪除


SQL> exec dbms_logmnr.add_logfile(logfilename=>'D:\app\Gavin\oradata\orcl\redo03.log',options=>dbms_logmnr.removefile);

PL/SQL 過程已成功完成。

SQL> exec dbms_logmnr.add_logfile(logfilename=>'D:\app\Gavin\oradata\orcl\redo01.log',options=>dbms_logmnr.removefile);

PL/SQL 過程已成功完成。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.