使用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;