Resincronizar un dataguard bastante desactualizado

Hoy veremos rapidamente una entrada de como podemos volver a dejar una PHYSICAL standby de nuevo sincronizada .
Supongamos que entramos a ver el estado de nuestro dataguard y nos encontramos con esto.

Configuration - TEST_SNDBY
  Protection Mode: MaxPerformance
  Members:
  TEST- Primary database
    Error: ORA-16724: cannot resolve gap for one or more members
    TEST_STBY- Physical standby database
      Warning: ORA-16809: multiple warnings detected for the member
Fast-Start Failover:  Disabled
Configuration Status:
ERROR   (status updated 50 seconds ago)

DGMGRL> show database 'TEST_STBY';
Database - TEST_SNDBY
  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      104 days 20 hours 8 minutes 57 seconds (computed 1 second ago)
  Apply Lag:          104 days 20 hours 8 minutes 58 seconds (computed 2 seconds ago)
  Average Apply Rate: 0 Byte/s
  Real Time Query:    OFF
  Instance(s):
    TEST
  Database Warning(s):
    ORA-16853: apply lag has exceeded specified threshold
    ORA-16855: transport lag has exceeded specified threshold
Database Status:
WARNING
 

Que hacemos ahora?

Llevamos mas de tres meses de retraso, lo que probablemente significara casi el rehacer la database. La solucion desde la 19 es muy sencilla, y es resincronizar mediante red con el comando RECOVER STANDBY DATABASE FROM SERVICE TEST_DGMGRL; Los pasos exactos serian
$ORACLE_HOME/bin/sqlplus "/as sysdba" << EOF
 recover managed standby database cancel;
 alter system set dg_broker_start=false;
 shutdown immediate;
 startup nomount;
 alter database mount standby database;
EOF
 
$ORACLE_HOME/bin/dgmgrl /  << EOF
RECOVER STANDBY DATABASE FROM SERVICE TEST_DGMGRL;
EOF

$ORACLE_HOME/bin/sqlplus "/as sysdba" << EOF
 alter system set dg_broker_start=true;
EOF