1

我使用 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';

在此处输入图像描述

4

1 回答 1

0

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

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

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

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

于 2020-09-11T11:22:05.437 回答