操作方法:

首先看是不是要具体记录很多详细的信息,如果需要可以执行:

SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

SUPPLEME

--------

YES

如果没有启用,可执行下面操作:

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Database altered.

 

摘取LogMiner字典到字典文件分析DDL操作 

1、进行DDL操作,以便分析
SQL> conn scott/admin
已连接。
SQL> drop table emp;
表已删除。
SQL> drop table dept;
表已删除。
SQL> conn /as sysdba
已连接。
SQL> alter system switch logfile;
系统已更改。
 
2、使用字典文件,请查看数据库是否配置utl_file_dir,这个参数为字典文件的目录。配置该参数后,需要重启数据库
SQL> show user;
USER 为 "SYS"
SQL> show parameter utl;
NAME                                 TYPE        VALUE                         
------------------------------------ ----------- ------------
create_stored_outlines               string                                    
utl_file_dir                         string                          
SQL> alter system set utl_file_dir='D:/oracle/logminer' scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
SQL> show parameter utl
NAME                                 TYPE        VALUE                         
------------------------------------ ----------- -----------
create_stored_outlines               string                                    
utl_file_dir                         string      D:/oracle/logminer     
 
3、建立字典文件:
SQL> execute dbms_logmnr_d.build ('dict.ora','D:/oracle/logminer',dbms_logmnr_d.store_in_flat_file);
PL/SQL 过程已成功完成。
 
4、建立日志分析列表:
SQL> execute dbms_logmnr.add_logfile(logfilename=>'D:/oracle/arch/TEST/ARCHIVELOG/2009_08_25/O1_MF_1_32_597FQD7B_.ARC',options=>dbms_logmnr.new);
PL/SQL 过程已成功完成。
 
SQL> execute dbms_logmnr.add_logfile(logfilename=>'D:/oracle/arch/TEST/ARCHIVELOG/2009_08_25/O1_MF_1_30_597B5P7B_.ARC',options=>dbms_logmnr.addfile);
PL/SQL 过程已成功完成。
 
5、启动LogMiner
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'D:/oracle/logminer/dict.ora',starttime =>to_date('20130325 09:00:00','yyyymmdd hh24:mi:ss'),endtime =>to_date('20130325 22:00:00','yyyymmdd hh24:mi:ss'));
PL/SQL 过程已成功完成。
 
6、查询分析日志结果:
 
SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents  where lower(sql_redo) like '%table%';
USERNAME                              SCN TIMESTAMP   SQL_REDO
------------------------------ ---------- ----------- --------------------------------------------------------------------------------
UNKNOWN                          45647834 2013/3/25 9 update "SYSMAN"."MGMT_TARGETS" set "CATEGORY_PROP_1" = 'Windows', "CATEGORY_PROP
UNKNOWN                          45647834 2013/3/25 9 Unsupported
UNKNOWN                          45647834 2013/3/25 9 update "SYSMAN"."MGMT_TARGETS" set "CATEGORY_PROP_1" = '11gR2', "CATEGORY_PROP_2
                                              
或者其他的查询:
 
SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where username='SYS';
USERNAME                              SCN TIMESTAMP   SQL_REDO
------------------------------ ---------- ----------- --------------------------------------------------------------------------------
UNKNOWN                          45647834 2013/3/25 9 update "SYSMAN"."MGMT_TARGETS" set "CATEGORY_PROP_1" = 'Windows', "CATEGORY_PROP
UNKNOWN                          45647834 2013/3/25 9 Unsupported
UNKNOWN                          45647834 2013/3/25 9 update "SYSMAN"."MGMT_TARGETS" set "CATEGORY_PROP_1" = '11gR2', "CATEGORY_PROP_2
                         
7、结束LogMiner
SQL> execute dbms_logmnr.end_logmnr;
PL/SQL 过程已成功完成。
 
注意,v$logmnr_contents内容保存了日志的内容,只在当前会话有效,如果想长期保存分析,可以在当前会话用create table tablename as select * from v$logmnr_contents语句来持久保存。