我需要将一个数据库A的归档日志文件放在另一个数据库B里面用Logmnr进行解析。
现在还存在一个头疼的问题,就是解析出来的脚本不能唯一确定一条记录。
比如:
我修改的语句为
update table1 set col1='test' where id=1;
结果解析出来的就成了(加了Options=>dbms_logmnr.NO_ROWID_IN_STMT):
update table1 set col1='test' where col1='oldvalue';
这样是不对的。
加Options=>dbms_logmnr.NO_ROWID_IN_STMT的原因是不同数据库的rowid是不同的,所以rowid我不能用。
有谁知道这个问题怎么解决啊?!!
先谢了!!

解决方案 »

  1.   

    你的意思是,解析出来放在另一台数据库中使用这些dml是不是?
      

  2.   

    从v$logmnr_contents查结果的时候,你选了sql_undo,选sql_redo就好了
      

  3.   

    他说的是rowid的事.两个不同的物理库,当然是不同的rowid. rowid由data_object_id#+rfile#+block#+row#组成
      

  4.   

    你先看清楚他到底说什么,呵呵我修改的语句为
    update   table1   set   col1='test'   where   id=1;
    结果解析出来的就成了(加了Options=> dbms_logmnr.NO_ROWID_IN_STMT):
    update   table1   set   col1='test'   where   col1='oldvalue';
    这样是不对的。 
      

  5.   

    本来第一次回他的帖的时候就想说redo的事,结果没提:)因为重点想关注的是他是不是想在另外一个库通过rowid来作dml.
      

  6.   

    不好意思,周末没上来看,非常感谢liuyi8903和NinGoo的回复。
    刚才我已经找到问题了,我需要修改源数据库:
    alter database add supplemental log data (primary key, unique index) columns;
    这样写在redo里面的语句就会包含id字段了。
    再将解析出来的脚本在另一个数据库里面执行的时候就可以去掉rowid也能唯一确定修改的是那条记录了。
    还有,我是“她”不是“他”
    对了,你们能帮我看看
    http://topic.csdn.net/u/20071130/16/79ac8058-38b6-4f2c-af43-aecf5a9e0464.html 吗?