Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

A PL/SQL to add archived redo log files to logminer

Da HaiJan 19 2010 — edited Jan 19 2010
Hi,
I make a programm to automatically add all archived redo log files to logminer utility, like below,

--logmnr.sql
set serveroutput on

declare

v_redo_dictionary_file VARCHAR2(100);
v_arihived_log_file VARCHAR2(100);

CURSOR logfile_cur IS
select name from v$archived_log WHERE to_char(COMPLETION_TIME,'dd_MM_yyyy') > '18_01_2010' and sequence# not in (select sequence# from v$archived_log WHERE DICTIONARY_BEGIN = 'YES' AND dictionary_end = 'YES');


begin

--Create DICTIONARY file on the SOURCE database's redo files
sys.dbms_logmnr_d.build( OPTIONS => sys.DBMS_LOGMNR_D.store_in_redo_logs);

select name into v_redo_dictionary_file from v$archived_log where DICTIONARY_BEGIN = 'YES' AND dictionary_end = 'YES' and sequence# = (select MAX(sequence#) from v$archived_log WHERE DICTIONARY_BEGIN = 'YES' AND dictionary_end = 'YES');

--add dictionary log files

sys.dbms_logmnr.add_logfile( logfilename=> v_redo_dictionary_file,
options=> sys.dbms_logmnr.new);
--add log files

open logfile_cur;

LOOP

FETCH logfile_cur INTO v_arihived_log_file;

sys.dbms_logmnr.add_logfile( logfilename=> v_arihived_log_file);

EXIT WHEN logfile_cur%NOTFOUND;

END LOOP;

CLOSE logfile_cur;

--start LogMiner, also enable ddl tracking

sys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_redo_logs + sys.dbms_logmnr.ddl_dict_tracking);


EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;
/


##
SQL> @logmnr.sql
ORA-01013: user requested cancel of current operation
ORA-01289: cannot add duplicate logfile /usr/tmp/arch/1_4026_573231463.dbf

##
SQL> select name from v$archived_log WHERE to_char(COMPLETION_TIME,'dd_MM_yyyy') > '18_01_2010' and sequence# not in (select sequence# from v$archived_log WHERE DICTIONARY_BEGIN = 'YES' AND dictionary_end = 'YES');

NAME
--------------------------------------------------------------------------------
/usr/tmp/arch/1_3973_573231463.dbf
/usr/tmp/arch/1_3974_573231463.dbf
/usr/tmp/arch/1_3975_573231463.dbf
/usr/tmp/arch/1_3977_573231463.dbf
/usr/tmp/arch/1_3978_573231463.dbf
/usr/tmp/arch/1_3979_573231463.dbf
/usr/tmp/arch/1_3981_573231463.dbf
/usr/tmp/arch/1_3982_573231463.dbf
/usr/tmp/arch/1_3983_573231463.dbf
/usr/tmp/arch/1_3984_573231463.dbf
/usr/tmp/arch/1_3986_573231463.dbf

NAME
--------------------------------------------------------------------------------
/usr/tmp/arch/1_3987_573231463.dbf
/usr/tmp/arch/1_3988_573231463.dbf
/usr/tmp/arch/1_3989_573231463.dbf
/usr/tmp/arch/1_3990_573231463.dbf
/usr/tmp/arch/1_3991_573231463.dbf
/usr/tmp/arch/1_3992_573231463.dbf
/usr/tmp/arch/1_3994_573231463.dbf
/usr/tmp/arch/1_3995_573231463.dbf
/usr/tmp/arch/1_3996_573231463.dbf
/usr/tmp/arch/1_3997_573231463.dbf
/usr/tmp/arch/1_3999_573231463.dbf

NAME
--------------------------------------------------------------------------------
/usr/tmp/arch/1_4001_573231463.dbf
/usr/tmp/arch/1_4003_573231463.dbf
/usr/tmp/arch/1_4004_573231463.dbf
/usr/tmp/arch/1_4005_573231463.dbf
/usr/tmp/arch/1_4006_573231463.dbf
/usr/tmp/arch/1_4007_573231463.dbf
/usr/tmp/arch/1_4009_573231463.dbf
/usr/tmp/arch/1_4010_573231463.dbf
/usr/tmp/arch/1_4011_573231463.dbf
/usr/tmp/arch/1_4012_573231463.dbf
/usr/tmp/arch/1_4013_573231463.dbf

NAME
--------------------------------------------------------------------------------
/usr/tmp/arch/1_4015_573231463.dbf
/usr/tmp/arch/1_4017_573231463.dbf
/usr/tmp/arch/1_4018_573231463.dbf
/usr/tmp/arch/1_4019_573231463.dbf
/usr/tmp/arch/1_4020_573231463.dbf
/usr/tmp/arch/1_4022_573231463.dbf
/usr/tmp/arch/1_4023_573231463.dbf
/usr/tmp/arch/1_4025_573231463.dbf
/usr/tmp/arch/1_4026_573231463.dbf


Why I have error' ORA-01289: cannot add duplicate logfile /usr/tmp/arch/1_4026_573231463.dbf'

Please suggest,

Thanks
Roy
This post has been answered by sb92075 on Jan 19 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 16 2010
Added on Jan 19 2010
2 comments
836 views