insert into "UNKNOWN"."OBJ# 30347"("COL 1") values (HEXTORAW('666a696e'));
根据字典信息解释出来的sql为:
insert into "SYSTEM"."TEST"("ADDR") values ('fjin');
3:添加需要分析的日志文件(可以是inactive的,也可以使active的),如果需要使用当前active的,我们可以通过下面的sql查看当前的redo log,
SQL> col status format A10
SQL> col member format A40
SQL> select log.status, logfile.member
2 from v$log log, v$logfile logfile
3 where log.group#=logfile.group#;
STATUS MEMBER
---------- ----------------------------------------
CURRENT D:\ORACLE\ORADATA\TESTDB\REDO01.LOG
INACTIVE D:\ORACLE\ORADATA\TESTDB\REDO02.LOG
INACTIVE D:\ORACLE\ORADATA\TESTDB\REDO03.LOG
好了,我们看到当前的日志文件是REDO01.LOG,把它加入到logMiner中来
SQL> exec dbms_logmnr.add_logfile( logfilename => 'D:\oracle\oradata\TestDB\redo01.log', options => dbms_logmnr.new);
4:启动logMiner,
SQL> exec dbms_logmnr.start_logmnr( options => dbms_logmnr.dict_from_online_catalog);
5:根据指定的条件分析日志,
SQL> col sql_redo format a30
SQL> col xid format A10
SQL> col usr format A10
SQL> SELECT USERNAME AS usr,(XIDUSN || '.' || XIDSLT || '.' || XIDSQN) as XID, SQL_REDO FROM V$LOGMNR_CONTENTS WHERE username='SYSTEM';
我们可以通过sqlplus插入一条记录,如下:
SQL> insert into test values('fjin');
1 row created.
SQL> commit;
Commit complete.
插入这条记录后,我们可以在通过logMiner发现和该纪录相关的transaction信息如下:
SYSTEM 5.26.26758 set transaction read write;
SYSTEM 5.26.26758 insert into "SYSTEM"."TEST"("ADDR") values ('fjin');
SYSTEM 5.26.26758 commit;
6:结束logMiner,
SQL>EXEC DBMS_LOGMNR.END_LOGMNR();
这里只是给出了个大概步骤,具体的参数(5中的query condition),需要我们详细参考oracle的Oracle Database Utilities,以便根迅捷的定位出具体我们需要的信息。
注意:对于Oracle 10g,默认情况下LogMiner是不可用的,原文如下:
"By default, Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable. Therefore, you must enable at least minimal supplemental logging prior to generating log files which will be analyzed by LogMiner."
所以,要在10g上使用LogMiner,我们必须修改如下的参数,
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
参数修改后的redo log才会纪录LogMiner需要的信息。参考note110301.1
posted on 2009-06-09 13:39 走走停停又三年 阅读(1870) 评论(0) 编辑 收藏 所属分类: Database