【问题标题】:11g get invalid invalid rowid through v$logminer_content11g 通过 v$logminer_content 获取无效的无效 rowid
【发布时间】:2017-10-11 08:56:10
【问题描述】:

我使用 logminer 从归档日志中获取更改数据,但得到无效的 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';

【问题讨论】:

  • 这是一道编程题吗?如果是这样,您可以分享任何代码吗?
  • 请看我的更新

标签: oracle oracle-cdc


【解决方案1】:

我相信你现在已经解决了这个问题,但最近不得不处理同样的问题。

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

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

  2. 如果您启用了闪回,则此修复显然已被处理。如果您查看 FLASHBACK_TRANSACTION_QUERY 中的同一事务或表上的版本查询,您将看到正确的 ROWID 并且没有“AAAA..”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2020-08-31
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多