RFS[X]: Possible network disconnect with primary database

oracle-error

En algun momento me afronte a esta alerta, la cual fue bastante compleja, debido a que estaba sucediendo muy frecuentemente, sin embargo, esto me ayudo a identificar diferentes puntos de solucion para la misma.

Problema RFS[X]: Possible network disconnect with primary database

La alerta «RFS[X]: Possible network disconnect with primary database» aparecía desde el alert log de la base de datos standby.

Los detalles de la alerta, salían de la siguiente manera:

RFS[75]: Assigned to RFS process (PID:27001196)
RFS[75]: Selected log 20 for T-2.S-1149339 dbid 161980802 branch 1011916927
CORRUPTION DETECTED: In redo blocks starting at block 31961count 2048 for T-2.S-1149339
Fri Aug 05 22:20:46 2022
RFS[75]: Possible network disconnect with primary database

Estos errores indican que la red/firewall se cuelga o agota el tiempo de espera, lo que hace que el proceso ARCx se bloquee en la red sobre la primaria. Tenga en cuenta que estos errores/advertencias no indican ningún problema permanente en la red/firewall (bajo mi experiencia con la alerta). Esto indica problemas como lentitud o bloqueos sobre estos.

Solucion RFS[X]: Possible network disconnect with primary database

Como comentaba con anterioridad, encontré varias formas de solucion, en las cuales identifique que se debían ir ejecutando una tras otra, si la anterior no resolvía el problema.

Primer intento

Les dejo aquí los diferentes comandos para bajar y subir el MRP

-- Bajar
alter database recover managed standby database cancel;

-- Subir por archive
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

--Subir por redos
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Segundo intento

Este segundo intento, es un poco mas agresivo que el anterior y por lo general fue el que mas me funcionaba para no tener que pasar hasta los siguientes pasos

Lo que debemos realizar es bajar el MRP

alter database recover managed standby database cancel;

Posterior, vamos a realizar una limpieza de los redos standby

begin
for log_cur in ( select group# group_no from v$standby_log )
loop
execute immediate 'alter database clear logfile group '||log_cur.group_no;
end loop;
end;
/

Tras realizar la limpieza de redos, subimos nuevamente el MRP

-- Subir por archive
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

--Subir por redos
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Tercer intento

Aquí ya se complica un poco la cosa, pues para lograr continuar debemos solicitar un reinicio de la base de datos standby, veremos los pasos a continuación.

Como apoyo de lo que continua, se encuentra la siguiente nota de Oracle, la cual contiene algunos pasos adicionales, que bajo mi experiencia no me fueron necesarios, sin embargo te la dejo para que la puedas detallar con mayor facilidad (Doc ID 1130523.1)

Vamos a detener el envío de los datos a la base de datos standby, esto se ejecuta desde la primaria, teniendo en cuenta que depende de donde este configurado tu log_archive_dest_state, en este caso sera 2

alter system set log_archive_dest_state_2=DEFER scope=both sid='*';

Detenemos el MRP

alter database recover managed standby database cancel;

Aquí es donde viene el problema si no es fácil solicitar un reinicio, puesto que para continuar debemos solicitar un reinicio de la base de datos

Posterior, subiremos el MRP

-- Subir por archive
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

--Subir por redos
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Finalmente, volvemos a habilitar el parametro log_archive_dest_state

alter system set log_archive_dest_state_2=ENABLE scope=both sid='*';

Ultimo intento

Ya como ultimo intento, lo que debemos realizar es un backup incrementar de la base de datos productiva y restaurarlo sobre la standby.

Para esto, les dejare unas notas de Oracle, con las cuales se pueden realizar la restauracion de manera exitosa.

Para bases de datos 11g

11g Steps to perform for Rolling Forward a Physical Standby Database using RMAN Incremental Backup. (Doc ID 836986.1)

Para bases de datos 12c

How to Roll Forward a Standby Database Using Recover Database From Service (Doc ID 2850185.1)

Para bases de datos 18c o superior

Roll Forward Physical Standby Using RMAN Incremental Backup in Single Command (Doc ID 2431311.1)

Básicamente se adjunta para diferentes versiones, pues por cada versión se realizaba mejoras para facilitar un restore incremental, con lo que es muy útil tenerlos a la mano.

 

Acerca de JulianOrtiz0506

Soy administrador de bases de datos y desarrollador web, desde mis inicios en el mundo de la informática, he implementando proyectos personales y empresariales. Por consiguiente esto me ha permitido contar con una amplia calificación y destreza sobre mis áreas de conocimiento. Sobre todo suelo estar en constante aprendizaje, diariamente me estoy informando sobre nuevas tecnologías. Ya queme gusta estar actualizado en la tecnología de punta para todas las plataformas que me apasionan y con las cuales trabajo día a día.

Ver todas las entradas de JulianOrtiz0506 →

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *