Streams Capture state is "Waiting for redo" even though the required archivelog is available and registered (Doc ID 829543.1)

Last updated on FEBRUARY 08, 2017

Applies to:

Oracle Server - Enterprise Edition - Version 10.1.0.2 to 11.2.0.0. [Release 10.1 to 11.2]
Information in this document applies to any platform.
Add ***Checked for relevance on 27-Jun-2012***


Symptoms

The Streams Capture process is waiting for a log to process, even though the archived log is available and registered.

SQL> select state from v$streams_capture;
STATE
-------------------------
WAITING FOR REDO
SQL> select s.event, s.seconds_in_wait
from v$session s
where s.sid in (select sid
from v$streams_capture);
EVENT SECONDS_IN_WAIT
-----------------------------------------------

STREAMS capture process waiting for archive log 524


The alert log shows the logminer started and ended mining the file:

Wed May 20 16:54:33 2009
LOGMINER: Begin mining logfile: /apps/oracle/admin/...<filename>
Wed May 20 16:54:34 2009
LOGMINER: End mining logfile: /apps/oracle/admin/...<filename>


The file is present in DBA_REGISTERED_ARCHIVED_LOG data dictionary view.

SQL> select name from dba_registered_archived_log;
NAME
--------------------------------
/apps/oracle/admin/...<filename>

Changes

The archivelog file changed its status to "X" - expired in v$archived_log.

This change took place because:
- The archivelog file was physically removed from the disk
- The RMAN command "crosscheck copy of archivelog all" was issued

RMAN>  crosscheck copy of archivelog all


As a result, RMAN marked the non-existing file as X

SQL> select name, status  from v$archived_log;
NAME                                    STATUS
--------------------------------------------------------------------
/apps/oracle/admin/...<filename>            X

- The Streams Capture process requested this file and went into "WAITING FOR REDO" status, so the file was copied back to the expected location on the disk
- The RMAN command "crosscheck copy of archivelog all" was NOT issued again, so the STATUS in V$ARCHIVED_LOG remained 'X' (expired)

SQL> select name, status
from v$archived_log;
NAME
-------------------------------
STATUS
------
/apps/oracle/admin/...<filename>
X

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms