Tag Archives: Oracle dataguard

RFS[4]: No standby redo logfiles created for T-1 dataguard

RFS[4]: No standby redo logfiles created for T-1

In Standby Environment of dataguard Server, We are getting following alert log error:

RFS[4]: No standby redo logfiles created for T-1
RFS[4]: Opened log for T-1.S-57586 dbid 618415567 branch 953210132

It show that No standby redo log file of thread 1 is present as per message, it also mention Thread number as 1.
On checking the Primary and Secondary database with thread column in views:

1. Check Primary Redo Thread Number:

SELECT thread#, group#, sequence#, bytes, archived ,status FROM v$log ORDER BY thread#, group#;

THREAD# GROUP# SEQUENCE# BYTES     ARC STATUS
------- ------ --------- --------- --- ----------
1  	1      57586  	 209715200 NO  CURRENT  
1  	2      57584  	 209715200 YES INACTIVE  
1  	3      57585  	 209715200 YES INACTIVE  

2. Check Standby Thread number for Standby redo logs configured for DR Server.

SELECT thread#, group#, sequence#, bytes, archived, status FROM v$standby_log order by thread#, group#;

THREAD# GROUP# SEQUENCE#  BYTES     ARC  STATUS 
------- ------ --------- ---------- ---   ----------
0       4      0         52428800  YES  UNASSIGNED  
0       5      0         52428800  YES  UNASSIGNED  
0  	6      0         52428800  YES  UNASSIGNED  
0  	7      0         52428800  YES  UNASSIGNED  
0  	8      0         52428800  YES  UNASSIGNED  
0  	9      0         52428800  YES  UNASSIGNED  

Note:Both Thread Number is different in value, so we need to drop and recreate the Standby with specify the THREAD caluse.

3. Stop the dataguard recovery process in Standby database:

-- for standby db which is under recovery, recovery needs to be stopped first
alter database recover managed standby database cancel;

4. Drop the existing Standby redo files:
Note: There is rule to configure standby redo log file Standby redolog file: N+1 and N stand for redo log files in primary.
In this example we configure 6 standby redo files.

ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;

5. Create new Standby logfile with THREAD Clauses.

alter database add standby logfile thread 1 group 4 size 200m;

alter database add standby logfile THREAD 1 group 4 ('D:\ORACLEXE\STANDBYREDO04.log') SIZE 200M;
alter database add standby logfile THREAD 1 group 5 ('D:\ORACLEXE\STANDBYREDO05.log') SIZE 200M;
alter database add standby logfile THREAD 1 group 6 ('D:\ORACLEXE\STANDBYREDO05.log') SIZE 200M;
alter database add standby logfile THREAD 1 group 7 ('D:\ORACLEXE\STANDBYREDO06.log') SIZE 200M;

--Example for two members
--alter database add standby logfile THREAD 1 group 5 ('D:\ORACLEXE\STANDBYREDO01A.log','D:\ORACLEXE\STANDBYREDO01B.log') SIZE 200M;

--Example for ASM
--alter database add standby logfile THREAD 1 group 7 ('+DATA(ONLINELOG)','+FRA(ONLINELOG)') SIZE 200M;

Note: in my case standby redo size(50M) is different with primary redo size(200M). so I corrected that one also while created new standby.

6. Now verify the thread number and redo log

SELECT thread#, group#, sequence#, bytes, archived, status FROM v$standby_log order by thread#, group#;

7. Start the Recovery of the dataguard in oracle.

alter database recover managed standby database disconnect from session;

Advertisements