11g通过v $ logminer_content获取无效的无效rowid

时间:2017-10-11 08:56:10

标签: oracle oracle-cdc

我使用logminer从archivelog获取更改数据,但获取无效的rowid'AAAAAAAAAAAAAAAAAA'。怎么会发生这种情况。它只是一个插入操作。

  • 复制目录 begin sys.dbms_logmnr_d.build(options => dbms_logmnr_d.STORE_IN_REDO_LOGS); end; /

  • 添加日志文件 begin sys.dbms_logmnr.add_logfile(LogFileName => '/arch/archlog/SZO1ABS9/ARC0000286133_0846017616.0001', Options => sys.dbms_logmnr.NEW); end; /

  • 启动logmnr begin sys.dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_REDO_LOGS + sys.dbms_logmnr.COMMITTED_DATA_ONLY); end; /

  • 获取结果 select scn,start_scn,commit_scn,timestamp,operation,row_id,sql_redo,sql_undo from v$logmnr_contents where row_id = 'AAAAAAAAAAAAAAAAAA' and scn = '7590067871061';

enter image description here

1 个答案:

答案 0 :(得分:0)

我确定您现在已经解决了这个问题,但是最近不得不处理相同的问题。

我不确定是什么根本原因,但我想出了两种方法来解决它。

  1. 在后处理过程中,我通过发出新查询以通过MINE_VALUE获取表的pkey值来固定了这些rowid,然后可以使用该查询通过其pkey查询表中的rowid。

  2. 如果启用了闪回,则显然已经解决了此修复程序。如果您在FLASHBACK_TRANSACTION_QUERY或表中的版本查询中查看同一笔交易,则会看到正确的ROWID且没有“ AAAA ..”。