Чтение журналов оракула, дающих дубликаты записей
enter code here
Я сталкиваюсь с проблемой при чтении журналов оракула через промежуток времени.
Проблема: в oracle, когда данные вставляются через какое-то внешнее приложение, если я использую log miner для чтения журналов 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
Примечание: данные фиксируются, как только они вставляются.
1 ответ
Согласно документации Oracle, в logminr время начала будет больше или равно, а время окончания будет меньше или равно. Таким образом, logmnr разработан таким образом.