Oracle LOGMNR挖掘日志与DUMP日志对比

2014-11-24 18:01:10 · 作者: · 浏览: 0

很多人都知道使用LOGMNR来分析日志,但是很少有人来使用DUMP来分析日志,具体是因为LOGMNR分析出来的信息方便查阅,也便于理解.


但是有些时候我们还是需要DUMP来分析日志文件,因为它记录的更详细,更真实。(其实一般的LOGMNR分析的日志不是很全的)


有次LOGMNR日志分析后,我发现挖掘的信息十分诡异,我是根据ROWID查询LOGMNR分析出来的记录的,发现某个ROWID有INSERT、DELETE,却没有UPDATE操作,


而实际上根据业务分析确实是有UPDATE操作的(注意这里我也想过会有ROWID改变的情况,譬如发生行迁移等,但根据SCN及ROWID的检测发现ROWID根本没有改变),于是我开始怀疑LOGMNR分析日志的正确性,我开始了一个小测验来验证我的想法,测验如下:


首先查到现在使用的日志文件


select a.status,b.member from v$log a,v$logfile b where a.group#=b.group#;


得到当前活动(CURRENT)的日志文件为:G:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG


--创建测试表


00:41:20 scott@orcl> create table dump_a(id number,tt varchar2(20));


表已创建。


已用时间: 00: 00: 00.40


--当前的SCN号


00:41:22 scott@orcl> select dbms_flashback.get_system_change_number() a from dual;



A
-------------
1257368


已选择 1 行。


--插入一条数据


00:42:47 scott@orcl> insert into dump_a values(1,'w');


已创建 1 行。


已用时间: 00: 00: 00.11


--更新一条数据
00:43:44 scott@orcl> update dump_a set id=2 where id=1;


已更新 1 行。


已用时间: 00: 00: 00.14


--现在的SCN号


00:43:52 scott@orcl> select dbms_flashback.get_system_change_number() a from dual;



A
-------------
1267898


已选择 1 行。



--以上记SCN号是为了DUMP日志用的