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

电梯

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

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

f0dc35573170eeeee331cd71f3d3448c.png

2011-10-31 09:38 上传下载附件 (50.08 KB)

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

1d6569fbbbddb9bb5fdd325ef4dba941.png

2011-10-31 09:38 上传下载附件 (44.58 KB)

将金额从0修改为40000。

在大会上,主要讨论的是数据安全方面的议题,但是,我确感到很奇怪,为什么此处的redo记录Oracle的logminer居然无法解析呢?

于是,管eygle大师要来了这部分的归档日志,决定一探究竟。

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

b97455334bcf51d8f4afc7b0607cc673.png

2011-10-31 09:38 上传下载附件 (53.57 KB)

可以看到,这个数据库的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@]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值