Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2038
  • Last Modified:

WAITING FOR DICTIONARY REDO: FILE /u0/archivelog/db1/DB1_675367766.1.ARC

Hi

We have setup replication  for table from DB1 to DB2. And see capture status as

WAITING FOR DICTIONARY REDO: FILE /u0/archivelog/make/938_675367766.1.ARC

As it is a DEV box we removed archive logs and now Archive logs are missing and process is waiting for this archive logs.

What steps I need to perform such that it capture changes from current archive logs insted of old.

Thanks
0
basirana
Asked:
basirana
  • 5
  • 4
  • 3
1 Solution
 
schwertnerCommented:
ALTER DATABASE REGISTER LOGICAL LOGFILE <file spec> FOR <capture name>;
according
http://forums.oracle.com/forums/thread.jspa?threadID=551658

Also consider ALTER CAPTURE procedure in DBMA_ADMIN_CAPTURE package.
0
 
basiranaAuthor Commented:
Thanks for your reply. I din't understand the link which u provided can you pls help me with steps.
0
 
schwertnerCommented:
Almost same situation is described there. Or I am wrong?
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
basiranaAuthor Commented:
I followed the steps but it is not working for some reason.
I will see same message in capture status.

Thanks





SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/u0/archivelog/make/945_675367766.1.ARC' FOR 'STREAMS_CAPTURE';
Database altered.
 
SQL> exec dbms_capture_adm.prepare_table_instantiation('SCOTT.EMP');
PL/SQL procedure successfully completed.
 
I still see capture status as
WAITING FOR DICTIONARY REDO: FILE /u0/archivelog/make/938_675367766.1.ARC

Open in new window

0
 
mrjoltcolaCommented:
The logfile you registered is not the one it is waiting for.

945 vs 938

0
 
basiranaAuthor Commented:
Is there a way I skip the archive logs which capture process is waiting and start the capture process from the file which is available?

How can I do that?
0
 
mrjoltcolaCommented:
Are you saying you deleted archived logs that the capture needs?
0
 
mrjoltcolaCommented:
I think you have to start over. I am not a streams expert, but I know that deleting the archive logs before the capture used them is not correct.

The docs say:

WAITING FOR DICTIONARY REDO - Waiting for redo log files containing the dictionary build related to the first SCN to be added to the capture process session. A capture process cannot begin to scan the redo log files until all of the log files containing the dictionary build have been added.


See, it says it cannot begin. You cannot just skip them, I think, since they are dictionary REDO. They are not optional.

The error was deleting archive logs in the first place, so I think reconfiguring the streams setup is the only option. Sorry, thats all I can suggest.

http://download.oracle.com/docs/cd/B28359_01/server.111/b28321/strms_trouble.htm#i1006114

Read the part that is titled "Are Required Redo Log Files Missing"

One suggestion is to make sure not to store archive logs in the FRA so RMAN will not delete them prior to capture.
0
 
basiranaAuthor Commented:
Actually we donot having the backup of the archivelog which has been deleted.
How can I skip all those archive logs which are not available and start from the one which is available instead of waiting.

Thanks
0
 
schwertnerCommented:
In such cases, stop and drop the capture and apply  process
and manually sync both the databases.


exec DBMS_CAPTURE_ADM.STOP_CAPTURE('<CAPTURE_NAME>');
exec DBMS_APPLY_ADM.STOP_APPLY('<APPLY_NAME>');

exec DBMS_CAPTURE_ADM.DROP_CAPTURE('<CAPTURE_NAME>')
exec DBMS_APPLY_ADM.DROP_APPLY('<APPLY_NAME>');


Manually re-sync both the databases by using exp/imp utility or TTS or RMAN.
Make sure all the replicated objects are in sync.
 Create the capture and apply process.
  Perform instantiation.




On the Source DB
============

begin
DBMS_CAPTURE_ADM.PREPARE_SCHEMA_INSTANTIATION('<Schema_Name>');
end;
/

set serveroutput on
DECLARE
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_OUTPUT.PUT_LINE ('Instantiation SCN is: ' || iscn);
END;
/

On the Target DB
===========

BEGIN
DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(
source_schema_name => '<Schema_Name>',
source_database_name => '<Source_DB_Name>',
recursive => TRUE,
instantiation_scn => &iscn); <== iscn from the Source DB.
END;
/

 

Start the capture and apply process.


exec DBMS_CAPTURE_ADM.START_CAPTURE('<CAPTURE_NAME>');
exec DBMS_APPLY_ADM.START_APPLY('<APPLY_NAME>');

Verify the setup
0
 
mrjoltcolaCommented:
In addition to schwertner's instructions, you might want to read:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28321/strms_capture.htm#i1007010

Read section "Instantiation in an Oracle Streams Environment"

0
 
basiranaAuthor Commented:
Thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 5
  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now