我有一个我管理的 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;
我运行了所有这些脚本一次,并且能够查询v$logmnr_contents
并获得我想要的结果。当我打开另一个 SQLPlus 窗口并再次运行所有脚本时,我收到上面提到的 Missing Log File 错误。
我不确定我在这里做错了什么。我也试过
DBMS_LOGMNR_D.BUILD(dictionary_filename=>'lgmnrdict.ora',dictionary_location=>'LOGMNRLOGS');
LOGMNRLOGS
我之前创建的字典文件夹在哪里,然后在调用时add_logfile
我指向数据库中存在的 4 个 onlinelogs .log 文件而不是 redologs ,然后运行命令
EXECUTE DBMS_LOGMNR.START_LOGMNR(dictfilename=>'/rdsdbdata/userdirs/o1/logmnrdict.ora');
这将启动 Logminer,但是当我进行任何更改并提交到数据库时,当我查询v$logmnr_contents
这些更改时不会返回。
我意识到我可能在这一点上漫无边际,但我觉得我非常接近解决方案;我只是想念一些东西。任何帮助表示赞赏。