Realizando una tarea que consistía en cambiar el compatible.rdbms de los diskgroups de ASM a versión 18c me encontré que la GIMR se vió afectada, a pesar de ser la GI versión 19c.

ORA-00202: control file: '+DGMGMTDB/_MGMTDB/CONTROLFILE/current.262.1018190533'
ORA-17503: ksfdopn:2 Failed to open file +DGMGMTDB/_MGMTDB/CONTROLFILE/current.262.1018190533
ORA-15001: diskgroup "DGMGMTDB" does not exist or is not mounted
ORA-15204: database version 12.2.0.0.0 is incompatible with diskgroup DGMGMTDB

Llama la atención que no haya ninguna mención en la documentación de Oracle sobre dicha compatibilidad más allá de notas en soporte como respuesta a operaciones de movimiento de la GIMR de diskgroup, donde a grandes rasgos mencionan

NOTE: It's recommended to set both compatible.asm and compatible.rdbms to 12.1 for the new ASM diskgroup when creating or altering and existing diskgroup.
Ex: CREATE DISKGROUP … ATTRIBUTE 'compatible.rdbms' = '12.1', 'compatible.asm' = '12.1';

Una vez encontrada la desagradable sorpresa no me queda otra que recrear la GIMR y el diskgroup con la compatibilidad indicada tras la incidencia, así que comenzamos.

El primer paso consiste en detener y deshabilitar en ambos nodos el Cluster Health Monitor

[root@nodo01 ~]# . oraenv <<< +ASM1
ORACLE_SID = [root] ? The Oracle base has been set to /u01/app/oracle
[root@nodo01 ~]# crsctl stop res ora.crf -init
CRS-2673: Attempting to stop 'ora.crf' on 'nodo01'
CRS-2677: Stop of 'ora.crf' on 'nodo01' succeeded
[root@nodo01 ~]# crsctl modify res ora.crf -attr ENABLED=0 -init


[root@nodo02 ~]# . oraenv <<< +ASM2
ORACLE_SID = [root] ? The Oracle base has been set to /u01/app/oracle
[root@nodo02 ~]# crsctl stop res ora.crf -init
CRS-2673: Attempting to stop 'ora.crf' on 'nodo02'
CRS-2677: Stop of 'ora.crf' on 'nodo02' succeeded
[root@nodo02 ~]# crsctl modify res ora.crf -attr ENABLED=0 -init

Una vez deshabilitado y detenido procedemos a eliminar la base de datos de la GIMR si seguimos la documentación de Oracle al pie de la letra, pero no seremos capaces puesto que nos dará un error

[oracle@nodo01 ~]$ srvctl remove mgmtdb
¿Desea eliminar la base de datos _mgmtdb? (y/[n]) y
PRKO-3077 : Fallo al eliminar base de datos _mgmtdb: PRCD-1032 : Fallo al eliminar el recurso de la base de datos _mgmtdb
PRCR-1028 : Fallo al eliminar el recurso ora.mgmtdb
PRCR-1072 : Fallo al anular el registro resource ora.mgmtdb
CRS-2730: Resource 'ora.rhpserver' depends on resource 'ora.mgmtdb'

Existe una dependencia con el recurso relativo a Rapid Home Provisioning Server, el cual eliminaremos ya que fué instalado por defecto con la GI y no lo precisamos en nuestro entorno.

[root@nodo01 ~]# srvctl remove rhpserver
PRCT-1470 : failed to reset the Rapid Home Provisioning (RHP) repository
 PRCT-1011 : Failed to run "mgmtca". Detailed error: [MGTCA-1105 : The GIMR is not running in this cluster.]
[root@node1 ~]# srvctl remove rhpserver -f

Una vez eliminado estaremos en disposición de eliminar la BBDD

[oracle@nodo01 ~]$ srvctl remove mgmtdb
¿Desea eliminar la base de datos _mgmtdb? (y/[n]) Y

En mi caso recreo el DG, por lo que lo desmonto en todos los nodos menos uno y procedo a su eliminación y recreación

[oracle@nodo02 ~]$ asmcmd umount DGMGMTDB
[oracle@nodo01 ~]$ asmcmd dropdg -r DGMGMTDB

[oracle@nodo01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 9 14:37:09 2019
Version 19.3.1.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.1.0.0

SYS@+ASM1> CREATE DISKGROUP DGMGMTDB EXTERNAL REDUNDANCY  
 DISK 'AFD:DGMGMTDB01' SIZE 51199M
 DISK 'AFD:DGMGMTDB02' SIZE 51199M
 DISK 'AFD:DGMGMTDB03' SIZE 51199M
 DISK 'AFD:DGMGMTDB04' SIZE 51199M
 ATTRIBUTE 'compatible.asm'='19.0.0.0','compatible.rdbms'='12.2','compatible.advm'='19.0.0.0','au_size'='4M'

Perfecto, ya hemos eliminado la base de datos, hemos recreado el DG con la compatibilidad correcta así que vamos a recrear la base de datos MGMTDB

[oracle@nodo01 ~]$ /u01/app/19c/grid/bin/dbca -silent -createDatabase -createAsContainerDatabase true -templateName MGMTSeed_Database.dbc -sid -MGMTDB -gdbName _mgmtdb -storageType ASM -diskGroupName DGMGMTDB -datafileJarLocation /u01/app/19c/grid/assistants/dbca/templates -characterset AL32UTF8 -autoGeneratePasswords -skipUserTemplateCheck
Preparar para funcionamiento de base de datos
10% finalizado
Registrando base de datos con Oracle Grid Infrastructure
14% finalizado
Copiando archivos de base de datos
43% finalizado
Creando e iniciando instancia Oracle
45% finalizado
49% finalizado
54% finalizado
58% finalizado
62% finalizado
Terminando creación de base de datos
66% finalizado
69% finalizado
71% finalizado
Ejecutando acciones posteriores a la configuración
100% finalizado
Creación de la base de datos terminada. Consulte los archivos log de /u01/app/oracle/cfgtoollogs/dbca/_mgmtdb
 para obtener más información.
Información de Base de Datos:
Nombre de la Base de Datos Global:_mgmtdb
Identificador del Sistema (SID):-MGMTDB
Para obtener información detallada, consulte el archivo log "/u01/app/oracle/cfgtoollogs/dbca/_mgmtdb/_mgmtdb.log".

Y finalmente creamos la GIMR

[oracle@nodo01 ~]$ /u01/app/19c/grid/bin/mgmtca -local

Comprobamos la configuración y el estado

[oracle@nodo01 ~]$ srvctl config mgmtdb
Nombre único de la base de datos: _mgmtdb
Nombre de la base de datos: 
Directorio raíz de Oracle: <CRS home>
Usuario de Oracle: oracle
Spfile: +DGMGMTDB/_MGMTDB/PARAMETERFILE/spfile.270.1018525787
Archivo de contraseña: +DGMGMTDB/_MGMTDB/PASSWORD/pwd_mgmtdb.257.1018525045
Dominio: 
Opciones de inicio: open
Opciones de parada: immediate
Rol de base de datos: PRIMARY
Política de gestión: AUTOMATIC
Tipo: Management
Nombre de PDB: GIMR_DSCREP_10
Servicio de PDB: GIMR_DSCREP_10
Nombre de cluster: racdummy
Instancia de base de datos: -MGMTDB

[oracle@nodo01 ~]$ srvctl status mgmtdb
La base de datos está activada
La instancia -MGMTDB se está ejecutando en el nodo nodo01

Habilitamos en ambos nodos el CLuster Health Monitor

[root@nodo01 ~]# . oraenv <<< +ASM1
ORACLE_SID = [root] ? The Oracle base has been set to /u01/app/oracle
[root@nodo01 ~]# crsctl modify res ora.crf -attr ENABLED=1 -init
[root@nodo01 ~]# crsctl start res ora.crf -init
CRS-2672: Attempting to start 'ora.crf' on 'nodo01'
CRS-2676: Start of 'ora.crf' on 'nodo01' succeeded


[root@nodo02 ~]# . oraenv <<< +ASM2
ORACLE_SID = [root] ? The Oracle base has been set to /u01/app/oracle
[root@nodo02 ~]# crsctl modify res ora.crf -attr ENABLED=1 -init
[root@nodo02 ~]# crsctl start res ora.crf -init
CRS-2672: Attempting to start 'ora.crf' on 'nodo02'
CRS-2676: Start of 'ora.crf' on 'nodo02' succeeded

Concluimos de esta manera la recreación de la GIMR.

A %d blogueros les gusta esto: