【发布时间】:2015-05-18 06:05:56
【问题描述】:
enter code here我在通过时间间隔读取 Oracle 日志时遇到问题。
问题: 在 oracle 中,当通过某些外部应用程序插入数据时,如果我使用日志挖掘器读取 oracle 日志,它会给我重复记录。 例如,假设是否存在时间间隔 t1,t2,t3。 数据从 t1 插入到 t3。 同时,如果我使用 log miner 将数据从 t1 读取到 t2,然后从 t2 读取到 t3。然后有一些记录会出现在两个区间内。
一个观察:显示重复的记录在第一个间隔的末尾和第二个间隔的开头。
我正在使用的查询:
begin dbms_logmnr.start_logmnr(STARTTIME => t1,ENDTIME =>t2,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE + DBMS_LOGMNR.COMMITTED_DATA_ONLY);end;
select sql_redo from V$LOGMNR_CONTENTS WHERE OPERATION IN('INSERT','UPDATE','DELETE') and table_name = xyz
begin dbms_logmnr.start_logmnr(STARTTIME => t2,ENDTIME =>t3,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE + DBMS_LOGMNR.COMMITTED_DATA_ONLY);end;
select sql_redo from V$LOGMNR_CONTENTS WHERE OPERATION IN('INSERT','UPDATE','DELETE') and table_name = xyz
我用来启动矿工的日期格式:DD-MON-YYYY HH24:MI:SS
注意:数据一插入就被提交。
【问题讨论】:
-
您是否观察到日期范围的边界与“重复”记录的时间戳之间的关系?
-
是的!在 t2 实例插入的记录在这两种情况下都会出现。
-
根据oracle文档,在logminr中,开始时间大于等于,结束时间小于等于。所以logminer就是这样设计的。