Oracle RDS Logminer ORA-01291 Отсутствует файл журнала?

У меня есть база данных Oracle RDS, которой я управляю, и мне нужно иметь возможность извлекать изменения из базы данных для репликации в другую систему. После подключения к базе данных ниже приведены команды, которые я запускаю.

      EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'logminerlogs');
set heading off;
set echo off;
set space 0;
set pagesize 0;
set linesize 10000;
set termout off;
set trimout on;
SET TRIMSPOOL ON;
set feedback off;
set newpage NONE;
set define on;
exec dbms_stats.gather_dictionary_stats;
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','UNIQUE');
BEGIN
dbms_logmnr.add_logfile(
logfilename=> 'rdsdbdata/db/ORCL_A/arch?redolog-99999-9-9999999999.arc');
*** REPEAT for all redo logs ***
END
/
EXECUTE dbms_logmnr.start_logmnr(STARTTIME=>SYSDATE-1,ENDDATE=>SYSDATE,OPTIONS=>DBMS_LOGMNR.DICT_FROM_REDO_LOGS+DBMS_LOGMNR.COMMITTED_DATA_ONLY+DBMS_LOGMNR.PRINT_PRETTY_SQL);

Выполнение всего этого дает мне ошибку

      ORA-01291: missing log file
ORA-06512: at "SYS.DBMS_LOGMNR", line 72
ORA-06512: at line 1

Я получаю все файлы «дуги», запрашивая

      SELECT name FROM v$archived_log WHERE first_time > SYSDATE-1 and first_time < systdate ORDER BY 1;

Я запустил все эти сценарии один раз и смог запросить и получить желаемые результаты. Когда я открыл другое окно SQLPlus и снова запустил все сценарии, я получаю сообщение об ошибке «Отсутствует файл журнала», упомянутое выше.

Я не совсем уверен, что я делаю неправильно здесь. я тоже пробовал

      DBMS_LOGMNR_D.BUILD(dictionary_filename=>'lgmnrdict.ora',dictionary_location=>'LOGMNRLOGS');

где LOGMNRLOGS - это папка со словарем, которую я создал ранее, а затем вместо редологов при вызове add_logfileЯ указываю на 4 файла .log onlinelogs, которые существуют в базе данных, а затем запускаю команду

      EXECUTE DBMS_LOGMNR.START_LOGMNR(dictfilename=>'/rdsdbdata/userdirs/o1/logmnrdict.ora');

Это запустит Logminer, но когда я внесу какие-либо изменения и зафиксирую базу данных, когда я запрошу v$logmnr_contents эти изменения не возвращаются.

Я понимаю, что могу быть бессвязным в этот момент, но я чувствую, что очень близок к решению; Я просто что-то упускаю. Любая помощь приветствуется.

1 ответ

Проблема заключалась в том, что для каждой команды add_logfile я устанавливал параметры dbms_logmnr.new для каждого, а не для первого и всех остальных повторных журналов с помощью dbms_logmnr.addfile.

Другие вопросы по тегам