天天看點

oracle10g logminer

做oracle方面的工作也很久了,一直沒有用過logmnr,這幾天就研究了下,發現Oracle10G logmnr和以前版本還是有些差別:

1、oracle10g必須打開附加日志,否則你可能挖掘不出記錄,打開附件日志語句:

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

Database altered

SQL> SELECT SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;

SUPPLEMENTAL_LOG_DATA_PK SUPPLEMENTAL_LOG_DATA_UI

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

YES                      YES

 2、添加要分析的日志(可以是一個也可以是多個)

SQL> execute sys.dbms_logmnr.add_logfile(LogFileName => 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SJZDX\REDO02.LOG');

如果需要添加多個,繼續添加就可以,文法一樣

3、開始分析日志:

分析日志一般要使用dictionary file否則分析出的sql語句是很難讀取的

使用online catalog dictionary file:

SQL> execute sys.dbms_logmnr.start_logmnr(Options =>sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);

 PL/SQL procedure successfully completed

 使用flat file:

SQL> execute sys.dbms_logmnr.start_logmnr(DictFileName =>'d:/oracle/utl/dictionary.ora' );

 PL/SQL procedure successfully completed

儲存解析出的内容:

SQL> create table log_table as select * from v$logmnr_contents;

4、結束挖掘

SQL> execute sys.dbms_logmnr.end_logmnr;

 PL/SQL procedure successfully completed

在整個挖掘過程中,可以查詢你想要的資訊,主要語句如下:

select * from V$LOGMNR_DICTIONARY

select * from V$LOGMNR_PARAMETERS

select * from V$LOGMNR_LOGS

疑問:在預設情況下,附加日志是不開啟的,而且我接觸的客戶的資料庫附加日志也不是開啟的,這樣如果需要Logmnr找回資料,那如果表上沒有主鍵或者唯一索引,豈不是無法通過Logmnr找回資料?