Evitar mensajes SWITCHOVER de dataguard en el alert log

Hoy vamos a ver un caso sencillo que puede dar algun susto si no sabemos de donde viene.

Ultimamente habreis visto que en el alert log de vuestras bases de datos donde tenemos Dataguards activados, tenemos unos sospechosos mensajes relativos al SWIRCHOVER del estilo

 Mem# 0: +REDO1/WINTRA_STBY/ONLINELOG/group_12.430.1176371311
  Mem# 1: +REDO2/ORCL_SITE2/ONLINELOG/group_12.448.1176371317
2024-12-09T12:04:01.654207+01:00
ARC4 (PID:22664): Archived Log entry 1874 added for T-6.S-29707 ID 0xf4a75427 LAD:1
2024-12-09T12:04:02.545651+01:00
 rfs (PID:3350): Selected LNO:10 for T-5.S-22376 dbid 4104620583 branch 722623079
2024-12-09T12:04:02.595323+01:00
PR00 (PID:22983): Media Recovery Waiting for T-5.S-22376 (in transit)
2024-12-09T12:04:02.609412+01:00
Recovery of Online Redo Log: Thread 5 Group 10 Seq 22376 Reading mem 0
  Mem# 0: +REDO1/ORCL_SITE2/ONLINELOG/group_10.419.1176369743
  Mem# 1: +REDO2/ORCL_SITE2/ONLINELOG/group_10.437.1176369749
2024-12-09T12:04:02.973552+01:00
ARC1 (PID:22656): Archived Log entry 1875 added for T-5.S-22375 ID 0xf4a75427 LAD:1
2024-12-09T12:47:21.593967+01:00
 rfs (PID:5113): krsr_rfs_atc: Identified database type as 'PHYSICAL STANDBY': Client is Foreground (PID:26765)
2024-12-09T12:47:23.731609+01:00
SWITCHOVER VERIFY BEGIN
SWITCHOVER VERIFY COMPLETE
2024-12-09T13:32:28.283411+01:00
 rfs (PID:5336): krsr_rfs_atc: Identified database type as 'PHYSICAL STANDBY': Client is Foreground (PID:29093)
2024-12-09T13:32:30.524186+01:00
SWITCHOVER VERIFY BEGIN
SWITCHOVER VERIFY COMPLETE
2024-12-09T14:17:29.627321+01:00
 rfs (PID:3408): krsr_rfs_atc: Identified database type as 'PHYSICAL STANDBY': Client is Foreground (PID:540)
2024-12-09T14:17:31.443773+01:00
SWITCHOVER VERIFY BEGIN
SWITCHOVER VERIFY COMPLETE

La primera pregunta que nos hacemos es

Quien demonios esta haciendo el SWITHVER VERIFY en nuestro dataguard?

La respuesta es, que lo hace el propio Oracle.
Parece ser que, a Oracle se les ha escapado sin avisar un cambio que hace que el TFA ejecute periodicamente DGMGRL VALIDATE DATABASE, lo que nos genera estos mensajes en el alert.log.

Esta previsto que esto se solucione en AHF 24.8 , donde el comando validate no estara en el schedule del TFA.

Tenemos que esperarnos a que se libere esa version?

Afortunadamente no, ya que podemos eliminar esa ejecucion de nuestro profile de ejecucion con con el comando

# tfactl modifyprofile db_dataguard disable 

Limpiando el CONTROLFILE AUTOBACKUP en rman

Hoy vamos a ver una entrada extremadamente sencilla.

Como limpiamos el parametero de rman para el controlfile autobackup

Conocemos el clomando CLEAR pero en las configuraciones largas, siempre es farragoso saber como usarlo.

Para limpiar la configuracion del controlfile es tan sencillo como

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;

Comoo siempre, mas informacion en la documentacion de oracle:
Setting Up and Configuring Backup and Recovery

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

CRS falla al arrancar con el error CRS-6706: Oracle Clusterware Release patch level

Hoy vamos a ver una sencilla entrada que puede ocurrirnos al parchear el ASM

Los recursos de crs no levantan y recibimos el eror

[testserver]$ sudo $ORACLE_HOME/bin/crsctl start has
CRS-6706: Oracle Clusterware Release patch level ('3930441427') does not match Software patch level ('526767740'). Oracle Clusterware cannot be started.
CRS-4000: Command Start failed, or completed with errors.

En este caso oracle nos recomienda que desbloqueemos el crs y repitamos los pasos .
Aunque en la nota de oracle nos indiquen ejecutar

# /crs/install/roothas.sh -patch

Este es un comando muy vago, por lo que, mi recomendacion es, sabiendo donde ha fallado, ejecutar el pre o ppost pach

[testserver]$ sudo $ORACLE_HOME/crs/install/roothas.sh -prepatch
Using configuration parameter file: /u01/app/oracle/product/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/oracle/crsdata/icdbstst01/crsconfig/hapatch_2023-08-09_10-55-17AM.log
2023/08/09 10:55:29 CLSRSC-347: Successfully unlock /u01/app/oracle/product/19c/grid
2023/08/09 10:55:29 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.

[testserver]$ sudo $ORACLE_HOME/crs/install/roothas.sh -postpatch
Using configuration parameter file: /u01/app/oracle/product/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/oracle/crsdata/icdbstst01/crsconfig/hapatch_2023-08-09_10-55-36AM.log
2023/08/09 10:55:40 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'
2023/08/09 10:58:01 CLSRSC-672: Post-patch steps for patching GI home successfully completed.

[testserver]$ sudo $ORACLE_HOME/bin/crsctl start has
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

Como veis, nada de que asustarse con los comandos indicados

Mas information en soporte con la nota

  • CRS-6706: Oracle Clusterware Release patch level (‘nnn’) does not match Software patch level (‘mmm’) (Doc ID 1639285.1)