天天看點

使用logminer來分析對表所做的修改

使用logminer來分析對表所做的修改

1.設定初始化參數utl_file_dir 以指定一個允許 pl/sql 檔案 i/o 的目錄

utl_file_dir='d:\oracle\log';

2.執行 bms_logmnr_d.build 過程以建立字典檔案

execute dbms_logmnr_d.build('ocp.ora','d:\oracle\log');

指定要分析的日志檔案

3.設定 v$logmnr_contents 視圖:

初始化新清單并指定第一個日志檔案

sql> execute dbms_logmnr.add_logfile('d:\oracle\product\10.2.0\oradata\ocp\redo01.log',dbms_logmnr.new);

pl/sql 過程已成功完成。

向清單中添加其它日志檔案

sql> execute dbms_logmnr.add_logfile('d:\oracle\product\10.2.0\oradata\ocp\redo02.log',dbms_logmnr.addfile);

設定 logminer 會話

一旦建立了字典檔案您就可以開始分析重做日志第一步是使用

dbms_logmnr.add_logfile 過程指定要分析的日志檔案

使用下列常量

? dbms_logmnr.new 建立一個新清單并指定第一個日志檔案

? dbms_logmnr.addfile 向清單中添加其它日志檔案

? dbms_logmnr.removefile 從清單中删除重做日志

logminer 可以分析聯機和歸檔日志檔案

開始分析重做日志檔案

初始化 logminer 會話:

execute dbms_logmnr.start_logmnr(dictfilename=>'d:\oracle\log\ocp.ora');

4.建立一個中間表用來存儲對lv_insr_topay表的dml操作記錄

create table jy_logmnr

(sql_redo varchar2(4000),

sql_undo varchar2(4000)

);

insert into jy_logmnr

select sql_redo,sql_undo from v$logmnr_contents where seg_name = 'lv_insr_topay';

select * from jy_logmnr;

sql> select * from jy_logmnr ;

sql_redo                                                                         sql_undo

-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

insert into "insur_changde"."lv_insr_topay"("pay_info_no","calc_prd","pay_money" delete from "insur_changde"."lv_insr_topay" where "pay_info_no" = '17524467' and

也可以運作

select timestamp, username, sql_redo,sql_undo

from v$logmnr_contents

where seg_name = 'lv_insr_topay';

sql> select timestamp, username, sql_redo,sql_undo

  2  from v$logmnr_contents

  3  where seg_name = 'lv_insr_topay';

timestamp   username                       sql_redo                                                                         sql_undo

----------- ------------------------------ -------------------------------------------------------------------------------- --------------------------------------------------------------------------------

2012-1-1 13                                insert into "insur_changde"."lv_insr_topay"("pay_info_no","calc_prd","pay_money" delete from "insur_changde"."lv_insr_topay" where "pay_info_no" = '17524467' and

5.完成 logminer 會話:

execute dbms_logmnr.end_logmnr;