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

eric0435發表於2012-01-09
使用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);

PL/SQL 過程已成功完成。
設定 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;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-714608/,如需轉載,請註明出處,否則將追究法律責任。

相關文章