Cómo hacer un upgrade del CRS de Oracle 12.2 a 19c en Oracle Linux 8

Entorno: RAC de 2 nodos con Oracle Linux 8 y un CRS versión 12.2

Primero descargamos el instalador del GRID con el usuario oracle:

$ cd /u01/soft/gi_19c
$ wget --http-user=xxxx@xxxx --http-password=xxxx --no-check-certificate --output-document=V982068-01.zip "https://edelivery.oracle.com/osdc/softwareDownload?fileName=V982068-01.zip&token=ejQxL3hTRllsK1Nway9QQmJCdXk2USE6OiFmaWxlSWQ9MTA0NDg4MDA5JmZpbGVTZXRDaWQ9OTAxMzI3JnJlbGVhc2VDaWRzPTg5OTMzMiZwbGF0Zm9ybUNpZHM9MzUmZG93bmxvYWRUeXBlPTk1NzY0JmFncmVlbWVudElkPTExNjgwOTE1JmVtYWlsQWRkcmVzcz1mYWdyYW5kZUB1YWRlLmVkdS5hciZ1c2VyTmFtZT1FUEQtRkFHUkFOREVAVUFERS5FRFUuQVImaXBBZGRyZXNzPTE3MC4yMzkuMTcwLjEwOCZ1c2VyQWdlbnQ9TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEzNC4wLjAuMCBTYWZhcmkvNTM3LjM2JmNvdW50cnlDb2RlPUFSJmRscENpZHM9MTA2MzIwOQ"

Luego descargamos el último parche RU disponible, en mi caso fue el GI RELEASE UPDATE 19.26.0.0.0

$ cd /u01/soft/gi_19c/parche
$ wget --http-user=xxxx@xxxx --http-password=xxxx --no-check-certificate --output-document=p37257886_190000_Linux-x86-64.zip "https://updates.oracle.com/Orion/Services/download/p37257886_190000_Linux-x86-64.zip?aru=26041193&patch_file=p37257886_190000_Linux-x86-64.zip"

Creamos los directorios necesarios y descomprimimos los nuevos binarios 19c. Previamente debes asegurarte que tengas espacio libre en el /u01:

mkdir -p /u01/app/19.0.0/grid 
chown oracle:oinstall /u01/app/19.0.0/grid 
su - oracle
$ cp V982068-01.zip /u01/app/19.0.0/grid/ 
$ cd /u01/app/19.0.0/grid/ 
$ unzip V982068-01.zip 
$ rm V982068-01.zip

Debido a que en Oracle Linux 8 la versión del OPENSSH es 8, la validación de la conectividad SSH fallará con el siguiente error:

Para evitar este error, debemos aplicar el último RU disponible en el nuevo $GI_HOME, previo a su configuración (ejecución del root.sh) - Fuente: Nota 2555697.1

Pero previamente debemos descargar e instalar la última versión del OPatch para version 19c (Patch 6880880).

Como estamos trabajando en un Oracle Linux 8, al ejecutar el instalador aparecerá el siguiente mensaje de error:

Para evitarlo debemos configurar la variable CV_ASSUME_DISTID con el valor OEL7

$ cd /u01/soft/gi_19c/parche
$ unzip p37257886_190000_Linux-x86-64.zip
$ export CV_ASSUME_DISTID=OEL7
$ export ORACLE_HOME=/u01/app/19.0.0/grid
$ $ORACLE_HOME/gridSetup.sh -applyRU /u01/soft/gi_19c/parche/37257886

Luego verificamos que nuestro ambiente cumpla con todos los requisitos necesarios para realizar el upgrade:

$ /u01/app/19.0.0/grid/runcluvfy.sh stage -pre crsinst -upgrade -rolling -src_crshome /u01/app/12.2.0/grid -dest_crshome /u01/app/19.0.0/grid -dest_version 19.0.0.0.0 -fixupnoexec -verbose > cluverify.log

En mi caso, el cluvfy me indicó que debía descargar y aplicar el parche 27006180 en el $GI_HOME origen (12.2)

$ cd /u01/soft/parches
$ wget --http-user=xxxx@xxxx --http-password=xxxx --no-check-certificate --output-document=p27006180_122010_Linux-x86-64.zip "https://updates.oracle.com/Orion/Services/download/p27006180_122010_Linux-x86-64.zip?aru=21761216&patch_file=p27006180_122010_Linux-x86-64.zip"
$ unzip p27006180_122010_Linux-x86-64.zip

Antes de aplicar el parche, debí descargar e instalar la última versión del OPatch para 12.2

Luego aplicamos el parche con el usuario root en modo rolling (de a un nodo por vez) para evitar pérdida de servicio total:

NODO 1

yum install -y zip
export ORACLE_HOME=/u01/app/12.2.0/grid
$ORACLE_HOME/bin/crsctl stop crs => COMIENZA PERDIDA DE SERVICIO EN EL NODO 1.
(Lo bajo porque sino me devuelve este error:
OPATCHAUTO-72030: Execution mode invalid. OPATCHAUTO-72030: Cannot execute in rolling mode, as CRS home is shared. OPATCHAUTO-72030: Execute in non-rolling mode. OPatchAuto failed.)

$ORACLE_HOME/OPatch/opatchauto apply /u01/soft/parches/27006180 -oh $ORACLE_HOME -analyze
$ORACLE_HOME/OPatch/opatchauto apply /u01/soft/parches/27006180 -oh $ORACLE_HOME
$ORACLE_HOME/bin/crsctl start crs => VUELVE A DAR SERVICIO EL NODO 1.

NODO 2

yum install -y zip
$ORACLE_HOME/bin/crsctl stop crs => COMIENZA PERDIDA DE SERVICIO EN EL NODO 2.
$ORACLE_HOME/OPatch/opatchauto apply /u01/soft/parches/27006180 -oh $ORACLE_HOME -analyze
$ORACLE_HOME/OPatch/opatchauto apply /u01/soft/parches/27006180 -oh $ORACLE_HOME
$ORACLE_HOME/bin/crsctl start crs => VUELVE A DAR SERVICIO EL NODO 2.

Volvemos a ejecutar el CLUVFY para corroborar que ya no figuren errores:

$ /u01/app/19.0.0/grid/runcluvfy.sh stage -pre crsinst -upgrade -rolling -src_crshome /u01/app/12.2.0/grid -dest_crshome /u01/app/19.0.0/grid -dest_version 19.0.0.0.0 -fixupnoexec -verbose > cluverify_2.log

Si ya no se presentan errores, avanzamos con el proceso (para no hacer tan largo este artículo con las imágenes del instalador, resumo los pasos):

$ export CV_ASSUME_DISTID=OEL7 
$ /u01/app/19.0.0/grid/gridSetup.sh -dryRunForUpgrade
    - Upgrade Oracle Grid Infrastructure
    - Next
    - Next
    - Next
    - Verificar que el Oracle Base sea el correcto y luego hacer clic en Next
    - Next
    - Asegurarse que no exista ningún punto con estado Failed. Clic en Next
    - Submit 
    - Ejecutar el /u01/app/19.0.0/grid/rootupgrade.sh como root. Esto demora varios minutos

Por precaución, reinicio los nodos del RAC (de a uno por vez) antes del upgrade para asegurarme que no exista ningún problema previo y que todo levante bien.

Ahora sí, ejecutamos el proceso del upgrade, esto provocará una pérdida de servicio total de la base de datos, con lo cual se deberá realizar en una ventana de trabajo previamente coordinada con el negocio:

$ /u01/app/19.0.0/grid/gridSetup.sh

Consultamos la version del CRS

$ /u01/app/19.0.0/grid/bin/crsctl query crs activeversion

¡Listo! Ya tenemos nuestro CRS en versión 19c 😀

Hasta el próximo post 😀

Saludos desde Buenos Aires, Argentina

0
Subscribe to my newsletter

Read articles from Facundo Ezequiel Grande directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Facundo Ezequiel Grande
Facundo Ezequiel Grande

Soy una persona, luego un ingeniero y magister que posee más de 15 años de experiencia administrando base de datos Oracle y diseñando arquitecturas para satisfacer las necesidades del negocio y también para innovar. Eventos como orador: • Speaker del Oracle Developer Community Tour 2018 • Speaker del Oracle Groundbreakers Tour 2019 LATAM Experiencia Técnica: • Oracle Cloud Infrastructure (OCI). • Exadata Cloud at Customer. • Migración de base de datos utilizando Golden Gate con corte de servicio tendiendo a cero. • Administrador de PDBaaS, dentro de una nube privada interna de Oracle. • Oracle In-Memory. • Oracle Data Masking / Oracle Data Redaction. • Automatización de aplicación de parches PSU utilizando el Cloud Control. • Actualmente me desempeño como Administrador de Bases de Datos, principalmente de Oracle, versiones 11g, 12c, 18c y 19c con arquitectura multitenant. • Utilización del comando DUPLICATE para actualizar ambientes de testeo con información productiva. • Realizo todo lo que concierne a la administración de bases de datos, como ser instalaciones de motores (Single Instance, RAC y RAC Extendido) 11g, 12c, 18c y 19c. Realizo upgrades y, migraciones de bases de datos entre servidores con distintos sistemas operativos, aplicaciones de parches PSU, CPU, OOP, respaldos y recuperaciones a través de RMAN. • Recuperación de objetos rápida y retroceso de la instancia en el tiempo utilizando la tecnología Oracle Flashback. • Creación de ambientes de contingencia utilizando Oracle Data Guard. Pruebas de Switchover y Failover. También utilizo Oracle Snapshot StandBy para aprovechar mejor estos ambientes de contingencia. • Instalación y configuración del Cloud Control 12c/13c. • Administro bases de datos que se alojan en el Oracle Exadata Machine. • Experiencia en la administración de bases de datos que soportan el sistema SAP, realizo tareas como refresh, particionamiento de tablas, etc. • Oracle Golden Gate 11g, 12c, 18c y 19c. • Sistemas operativos: AIX, Unix (HP-UX), Linux (RedHat – Centos), Windows. • Scripting en bash. • He configurado bases espejos (Stand By) de manera manual para motores con licencia Standard.