ITPub博客

首页 > 数据库 > Oracle > Oracle技术嘉年华的一个案例,redo的那些事,连载一

Oracle技术嘉年华的一个案例,redo的那些事,连载一

原创 Oracle 作者:sundog315 时间:2011-10-31 10:08:11 0 删除 编辑

电梯

Oracle技术嘉年华的一个案例,redo的那些事,连载二

Oracle技术嘉年华的一个案例,redo的那些事,连载三

在刚刚结束的Oracle技术嘉年华大会上,eygle大师的演讲中提到了有关于数据安全的一个案例,大致的意思是数据库管理员修改了自己账户的金额。但是,奇怪的是,通过logminer挖掘日志时,居然挖掘不到修改记录,显示如下状况:
1.jpg



SQL_REDO的内容是Unsupported,但是,通过logfile dump,可以看到此次修改,如下图:
2.jpg

将金额从0修改为40000。
在大会上,主要讨论的是数据安全方面的议题,但是,我确感到很奇怪,为什么此处的redo记录Oracle的logminer居然无法解析呢?
于是,管eygle大师要来了这部分的归档日志,决定一探究竟。

拿到日志以后,首先看了一下日志头信息,在第二个512字节的块里,有一些系统的信息:
3.jpg

可以看到,这个数据库的compatible参数设置的是9.2.0,应该是一个9i的库,这个系统应该是big endian的系统,猜测应是AIX。在AIX上先logminer一下,看看到底是什么情况:
SQL> begin
dbms_logmnr.add_logfile('/1_12446.dbf');
end;
/

PL/SQL procedure successfully completed.

SQL> begin
dbms_logmnr.start_logmnr();
end;
/

PL/SQL procedure successfully completed.

SQL> select t.RBABLK,t.RBABYTE,t.DATA_OBJ#,t.ROW_ID,t.OPERATION,t.SQL_REDO,t.INFO from v$logmnr_contents t where t.RBABLK=166733;

166733 16 66237 AAAQXKAAAAAAAAAAAA UNSUPPORTED Unsupported Object or Data type Unsupported

依然是Unsupported,INFO中显示Object or Data type Unsupported,并且,ROWID也很奇怪,这个ROWID根本不是一个有效的ROWID

Oracle的log miner工具是不支持一些情况的,例如:

1) Simple and nested abstract datatypes (ADTs)
2) Collections (nested tables and VARRAYs)
3) Object Refs
4) Index organized tables (IOTs)
5) CREATE TABLE AS SELECT of a table with a clustered key

第5条明显不满足,所以,首先怀疑这个表是否有特殊字段。

于是,又骚扰了一下eygle大师,不久,便有了回音,没有特殊的字段,都是标准的类型,看来不是这个原因,metalink了一下,有一个文章符合这种情况:

UNSUPPORTED Value In Sql_redo,Operation Columns Of V$Logmnr_contents [ID 282994.1]


Cause


Logminer cannot always populate all the fields of the v$logmnr_contents this is because the redo may/may not have all the information that we need for every column.

Fix


Enable supplemental logging on the database

Oracle认为这种情况不是个BUG,当打开附加日志时,将得到足够的信息, logminer也就能够正确的得到SQL结果。[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19423/viewspace-1056057/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-01-05

  • 博文量
    126
  • 访问量
    540259