Dataguard Broker | ORA-16801: redo transport-related property is inconsistent with database setting

database schema
database schema (Photo credit: gnizr)

WARNING ORA-16801: redo transport-related property is inconsistent

En una tarea cotidiana me toca recrear el sitio de contingencia, finalizada la misma y confirmando que se estan aplicando los logs y que todo estaba sincronizado, me encuentro con un warning el DGBROKER. Revisando desde la consola del Grid Control y la consola dgmrl lo confirmo, ORA-16801.

DGMGRL> show database verbose "DAPRO";
Database
  Name:            DAPRO
  Role:            PRIMARY
  Enabled:         YES
  Intended State:  ONLINE
  Instance(s):
    DAPRO1
    DAPRO4
   ...
   ...
    LogArchiveTrace(*)
    LogArchiveFormat(*)
    LatestLog(*)
    TopWaitEvents(*)
    (*) - Please check specific instance for the property value

Current status for "DAPRO":
Warning: ORA-16809: multiple warnings detected for the database

Como tengo esta base en un RAC con dos nodos, y configurado con el DGBROKER, paso a utilizar las bondades de la linea de comandos, desde una de las instancias primarias.

DGMGRL> show instance verbose "DAPRO1" ON DATABASE "DAPRO";

Instance 'DAPRO1' of database 'DAPRO'
Host Name:       saturno01lx
PFILE:
Properties:
HostName                        = 'saturno01lx'
SidName                         = 'DAPRO1'
LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=saturno01lx-vip)(PORT=1530))'
StandbyArchiveLocation          = 'dgsby_DAPRO'
AlternateLocation               = ''
LogArchiveTrace                 = '0'
LogArchiveFormat                = '%t_%s_%r.dbf'
LatestLog                       = '(monitor)'
TopWaitEvents                   = '(monitor)'

Current status for "DAPRO1":
Warning: ORA-16801: redo transport-related property is inconsistent with database setting

El primer paso ante el error es verificar si existen los standby logs:

SQL> select group# ||' - '|| type ||' - '|| member
from v$logfile where type='STANDBY';

no rows selected

Confirmado, no existen.
Cuando creamos la instancia stanby a partir de un backup tomado en la instancia primaria, un paso importante es la creacion de los standby logs.
Es por ello que rapidamente arme los pasos a seguir para solucionar el problema.

1) DESACTIVAR ENVIOS DE LOGS EN EL SITIO PRIMARIO.

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

2) DESACTIVAR BROKER EN EL SITIO SECUNDARIO.

SQL> sho parameter broker

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1		     string	 /u06/dgbroker/dr1_DADGPRO.dat
dg_broker_config_file2		     string	 /u07/dgbroker/dr2_DADGPRO.dat
dg_broker_start 		     boolean	 TRUE
SQL> alter system set dg_broker_start=FALSE  scope=both sid='*';

System altered.

3) DESACTIVAR APLICACION DE LOGS EN SITIO SECUNDARIO.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

4) CREACION DE LOS STANDBY LOGS

Atención, no usemos los mismos grupos que en el sitio primario por que trajimos un backup generado del mismo lugar y surgira el error ORA-01184 al querer agregarlos:

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
GROUP 1 SIZE 200M,
GROUP 2 SIZE 200M,
GROUP 3 SIZE 200M,
GROUP 4 SIZE 200M,
GROUP 5 SIZE 200M;  2    3    4    5    6
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
*
ERROR at line 1:
ORA-01184: logfile group 1 already exists

Reintentamos con nuevamente con grupos distintos

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
GROUP 50 SIZE 100M,
GROUP 51 SIZE 100M,
GROUP 52 SIZE 100M,
GROUP 53 SIZE 100M,
GROUP 54 SIZE 100M;   2    3    4    5    6

5) ACTIVAMOS EL BROKER EN EL SITIO SECUNDARIO Y ESTE MISMO VA A CAMBIAR EL PARAMETRO EN EL SITIO PRIMARIO PARA EL ENVIO DE LOGS

SQL> sho parameter broker

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1		     string	 /u06/dgbroker/dr1_DADGPRO.dat
dg_broker_config_file2		     string	 /u07/dgbroker/dr2_DADGPRO.dat
dg_broker_start 		     boolean	 FALSE
SQL> alter system set dg_broker_start=TRUE scope=both sid='*';

System altered.

6) VERIFICAMOS QUE EL ESTEN APLICANDO LOS LOGS

SQL> select NAME, THREAD#, SEQUENCE#, APPLIED, registrar
from v$archived_log where APPLIED='NO' order by sequence#;  2

NAME
--------------------------------------------------------------------------------
THREAD#  SEQUENCE# APP REGISTR
---------- ---------- --- -------
+DADGPRO_DG4/DADGPRO/archivelog/2010_01_22/thread_2_seq_10750.7311.708953859
2	10750 NO  RFS

+DADGPRO_DG4/DADGPRO/archivelog/2010_01_22/thread_2_seq_10750.7150.708953859
2	10750 NO  RFS

Cuando podemos confirmar que termino de aplicar bien podemos loguearmos al DG_BROKER y verificar que ya no hay mas warnings.

DGMGRL> show instance verbose "DAPRO1" ON DATABASE "DAPRO";Instance 'DAPRO1' of database 'DAPRO'
Host Name:       saturno01lx.bancocredicoop.coop
PFILE:
Properties:
HostName                        = 'saturno01lx'
SidName                         = 'DAPRO1'
LocalListenerAddress            = '(ADDRESS=(PROTOCOL=TCP)(HOST=saturno01lx-vip)(PORT=1530))'
StandbyArchiveLocation          = 'dgsby_DAPRO'
AlternateLocation               = ''
LogArchiveTrace                 = '0'
LogArchiveFormat                = '%t_%s_%r.dbf'
LatestLog                       = '(monitor)'
TopWaitEvents                   = '(monitor)'Current status for "DAPRO1":
SUCCESS

Damos por finalizada la tarea exitosamente.

2 thoughts on “Dataguard Broker | ORA-16801: redo transport-related property is inconsistent with database setting

Comments are closed.