Migration Oracle Grid Infrastructure 11 vers 12c

Un peu de relâchement lors de ces mois d’été pour prendre le temps de regarder de plus près la mise en œuvre d’une migration d’une Grid Infrastructure version 11.2.0.4 vers la version 12C. Passage vers la  12.1.0.1  d’abord puis après un retour arrière , vers le dernier patchset ou dernière release en data du 22 juillet 2014: 12.1.0.2. Soit comment installer une Grid Infrastructure 12C sur un linux 6 redhat quand une version 11.2 existe déjà.
1) L’environnement utilisé
Mon bac à sable est constitué de deux VM Virtual Box avec  linux redhat 6.4 x86_64, j’utilise la capacité de partage des disques VDI des additions de Virtual Box (VM Guests)  pour  mes espaces de stockage ASM.
J’ai constitué une configuration Grid Infrastructure 11.2.0.4 avec un cluster deux nœuds, nommés  rac112a et rac112b; la méthode de construction s’inspire directement de nos amis d’oracle-base.
Voici l’inventaire des produits installés :

[oracle@rac112a ~]$ $ORACLE_HOME/OPatch/opatch lsinventory
Oracle Interim Patch Installer version 11.2.0.3.4
Copyright (c) 2012, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/11.2.0.4/grid
Central Inventory : /u01/app/oraInventory
from : /u01/app/11.2.0.4/grid/oraInst.loc
OPatch version : 11.2.0.3.4
OUI version : 11.2.0.4.0
Log file location : /u01/app/11.2.0.4/grid/cfgtoollogs/opatch/opatch2014-07-09_14-50-45PM_1.log
Lsinventory Output file location : /u01/app/11.2.0.4/grid/cfgtoollogs/opatch/lsinv/lsinventory2014-07-09_14-50-45PM.txt
--------------------------------------------------------------------------------
Installed Top-level Products (1):
Oracle Grid Infrastructure 11g 11.2.0.4.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
Rac system comprising of multiple nodes
Local node = rac112a
Remote node = rac112b

2) Les distributions
Les deux versions sont téléchargeables dans leur intégralité sur le site technet d’Oracle ,  Pour la version 12.1.0.1  il y a le choix pour les plateformes : Windows 64bits, linux x86_64, Solaris (SPARC64 et x86 64), HP-UX Itanium, AIX ou zLinux 64.
Pour  La version 12.1.0.2 seule les versions pour linux  x86_64 et Solaris sont disponibles, vous trouverez  les fichiers linux ici.
Les deux zips constituant le produit sont  :

  • linuxamd64_12c_grid_1of2.zip , taille de 1,673,544,724 octets
  • linuxamd64_12c_grid_2of2.zip , taille de 646,972,897 octets

une fois dézipper la distribution prend :  2,5   Go
3) Les nouveaux pré-requis
La vérification des pré-requis peut se faire à l’aide de l’utilitaire « cluster verify » avec la commande suivante  :

./runcluvfy.sh stage -pre crsinst -upgrade -src_home /u01/app/11.2.0.4/grid -dest_home /u01/app/12.1.0.1/grid -dest_version 12.1.0.1.0 -fixup -verbose >/tmp/premig.txt

On tombe cependant d’abord sur l’erreur :

Reference data is not available for verifying prerequisites on this operating system distribution
Verification cannot proceed

Ce qui correspond au Bug 15973656
La correction se trouve en pièce jointe de la note MOS 1514012.1
pour que « runcluvfy.sh » puisse s’exécuter, téléchargement et installation du rpm redhat-release-6Server-1.noarch.rpm.
Le pré-requis pour la mémoire disponible a changé , il faut maintenant disposer d’un serveur avec au moins 4 Go de RAM :

Check: Total memory
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac112b 2.7799GB (2914932.0KB) 4GB (4194304.0KB) failed
rac112a 2.8199GB (2956916.0KB) 4GB (4194304.0KB) failed

Les pré-requis d’espace disques sont eux aussi en erreur :

Check: Free disk space for "rac112b:/usr,rac112b:/var,rac112b:/etc,rac112b:/u01/app/11.2.0.4/grid,rac112b:/sbin,rac112b:/tmp"
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
/usr rac112b / 4.0049GB 7.9635GB failed
/var rac112b / 4.0049GB 7.9635GB failed
/etc rac112b / 4.0049GB 7.9635GB failed
/u01/app/11.2.0.4/grid rac112b / 4.0049GB 7.9635GB failed
/sbin rac112b / 4.0049GB 7.9635GB failed
/tmp rac112b / 4.0049GB 7.9635GB failed
Result: Free disk space check failed for "rac112b:/usr,rac112b:/var,rac112b:/etc,rac112b:/u01/app/11.2.0.4/grid,rac112b:/sbin,rac112b:/tmp"
Check: Free disk space for "rac112a:/usr,rac112a:/var,rac112a:/etc,rac112a:/u01/app/11.2.0.4/grid,rac112a:/sbin,rac112a:/tmp"
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
/usr rac112a / 3.3279GB 7.9635GB failed
/var rac112a / 3.3279GB 7.9635GB failed
/etc rac112a / 3.3279GB 7.9635GB failed
/u01/app/11.2.0.4/grid rac112a / 3.3279GB 7.9635GB failed
/sbin rac112a / 3.3279GB 7.9635GB failed
/tmp rac112a / 3.3279GB 7.9635GB failed
Result: Free disk space check failed for "rac112a:/usr,rac112a:/var,rac112a:/etc,rac112a:/u01/app/11.2.0.4/grid,rac112a:/sbin,rac112a:/tmp"

C’est une anomalie de la vérification,  hors /tmp et le système de fichier de destination du Grid HOME , il n’y a pas besoin de vérifier l’espace disponible ailleurs. Par contre il est important d’avoir :

  • 1Go espace libre sous /tmp
  • 7Go au moins d’espace disque (7,065Mo) sous le système de fichier de destination de la Grid infrastructure , sinon l’installation ne va pas au bout et cela même avec les options -ignoreSysPrereqs ou  -ignorePrereq positionnées. Oracle recommande maintenant un espace de 100Go pour les installations de GI (afin de provisionner suffisamment d’espace pour les futurs patchset).

Pour information les tailles des binaires une fois ceux ci  installés sont :

  • GI 12.1.0.1 :  6,1 Go
  • GI 12.1.0.2 :  7 Go

Pré-requis spécifique 12.1.2.0.2
La commande de vérification par l’utilitaire « cluster verify » a légèrement changé :

[oracle@rac112a grid]$ ./runcluvfy.sh stage -pre crsinst -upgrade -src_crshome /u01/app/11.2.0.4/grid -dest_crshome /u01/app/gi/12.1.0.2 -dest_version 12.1.0.2.0 -fixup -verbose >/tmp/premig1202.out

Noter la transformation entre les deux  versions des paramètres src_home et dest_home qui sont devenus src_crshome et dest_crshome.
En dehors des conditions identiques pour la mémoire et l’espace de stockage, il faut maintenant positionner la valeur 1 pour le paramètre noyau panic_on_oops ce qui force un reboot en cas d’occurrence de oops (équivalent à l’erreur ORA-600 pour le noyau linux) .

Check: Kernel parameter for "panic_on_oops"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac112a 1 unknown 1 failed (ignorable) Configured value incorrect.
rac112b 1 unknown 1 failed (ignorable) Configured value incorrect.
PRVG-1206 : Check cannot be performed for configured value of kernel parameter "panic_on_oops" on node "rac112a"
PRVG-1206 : Check cannot be performed for configured value of kernel parameter "panic_on_oops" on node "rac112b"
******************************************************************************************
Following is the list of fixable prerequisites selected to fix in this session
******************************************************************************************
-------------- --------------- ----------------
Check failed. Failed on nodes Reboot required?
-------------- --------------- ----------------
OS Kernel Parameter: rac112b,rac112a no
panic_on_oops

On peut utiliser le script de fixup généré pour corriger cela , ou éditer le fichier /etc/sysctl.conf  pour ajouter la ligne :

kernel.panic_on_oops = 1

Puis rebooter ou faire

#/sbin/sysctl -p

 
4) Mise à jour en 12.1.0.1
Création des répertoires pour les binaires sur les nœuds du cluster :

[root@rac112a ~]# mkdir -p /u01/app/12.1.0.1/grid
[root@rac112a ~]# chown oracle:dba /u01/app/12.1.0.1/grid
[root@rac112a ~]# ssh rac112b
Last login: Wed Jul 9 18:21:00 2014 from 192.168.31.63
[root@rac112b ~]# mkdir -p /u01/app/12.1.0.1/grid
[root@rac112b ~]# chown oracle:dba /u01/app/12.1.0.1/grid

a) Déploiement des binaires
Lancement du « runInstaller.sh » de la distribution de la version 12.1.0.1 pour le déroulement des étapes de l’installation :

  • Software Update :  Pas de mail ,pas d’information à envoyer
  • Installation Option :  Choix “Upgrade Oracle Grid Infrastructure or Oracle Automatic Storage Management”
  • Product languages :  “En”  au minimum
  • Node Selection :  Tous les nœuds du cluster doivent être automatiquement sélectionnés
  • Grid Infrastructure Management Database 6/16 :  Nouvelle étape qui donne la possibilité de configurer ou pas la base de données pour la fonctionnalité “Cluster Health Monitor”  ; dans la version précédente les informations étaient stockées dans une base de type « Berkeley DB », c’est maintenant une base de données mono instance Oracle nommée MGMT , si vous ne pensez pas utiliser la fonctionnalité, vous pouvez ne pas la mettre en œuvre (ce qui vous économisera de la ressource), mais attention c’est irréversible sans devoir refaire l’installation complète !

Option base CHM
Message sur le choix « No » :
GI12c_002

  • Operating System Groups : rien de spécial , tous les groupes peuvent être positionnés sur “dba”  en ignorant le “warning”
  • Installation Location:  définir les répertoires pour ORACLE_BASE et pour ORACLE_HOME répertoire de destination des binaires de la Grid Infrastructure sur tous les nœuds , le programme vérifie que les droits d’accès au répertoire sont corrects.
  • Root script execution :  Possibilité nouvelle de faire exécuter les scripts par l’installeur ,  nous verrons plus loin ce choix , pour  l’instant je n’ai pas coché la case, je lancerais les scripts « rootupgrade.sh » manuellement.
  • Prerequisite Check  :  Bypass des pré-requis mémoire de 4Go , mes VMs sont configurées chacune à 3Go et je ne peux leur en donner plus.
  • Summary :  Résumé des choix fait , noter maintenant les liens “Edit”  qui permettent de retourner vers l’écran associé si l’on souhaite refaire une modification.

GI12c_003

  • Install product  : Démarrage du déploiement des binaires et du relink sur tous les nœuds

b) Mise à jour du cluster
A 79% de remplissage de la jauge d’exécution,  la boite de dialogue pour le passage des scripts « rootupgrade.sh » apparait. C’est pendant leur lancement que la mise à jour du cluster va vraiment ce faire, ce qui implique l’arrêt complet de la couche clusterware et des ressources associées, mais en mode « rolling upgrade »  (un nœud après l’autre) .
Le script a beaucoup changé et contient maintenant les appels suivant :

[root@rac112a grid]# cat rootupgrade.sh
#!/bin/sh
. /u01/app/gi/12.1.0.1/grid/install/utl/rootmacro.sh "$@"
. /u01/app/gi/12.1.0.1/grid/install/utl/rootinstall.sh
#
# Root Actions related to network
#
/u01/app/gi/12.1.0.1/grid/network/install/sqlnet/setowner.sh
#
# Invoke standalone rootadd_rdbms.sh
#
/u01/app/gi/12.1.0.1/grid/rdbms/install/rootadd_rdbms.sh
/u01/app/gi/12.1.0.1/grid/rdbms/install/rootadd_filemap.sh
/u01/app/gi/12.1.0.1/grid/crs/config/rootconfig.sh -upgrade $@
EXITCODE=$?
if [ $EXITCODE -ne 0 ]; then
exit $EXITCODE
fi

Les fichiers journaux créés sont sous $GRID_HOME/grid/cfgtoollogs/crsconfig de la forme :  rootcrs_<noeud>_YYYY-MM-JJ_hh-mm-ss.log
Passage du script sur le premier nœud:

[root@rac112a grid]# ./rootupgrade.sh
Performing root user operation for Oracle 12c
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/gi/12.1.0.1/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/gi/12.1.0.1/grid/crs/install/crsconfig_params
2014/08/07 16:12:13 CLSRSC-363: User ignored prerequisites during installation
ASM upgrade has started on first node.
OLR initialization - successful
2014/08/07 16:14:15 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.conf'
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
2014/08/07 16:18:54 CLSRSC-343: Successfully started Oracle clusterware stack
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 11g Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
2014/08/07 16:19:41 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Passage du script sur le second et dernier nœud :

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/gi/12.1.0.1/grid/crs/install/crsconfig_params
2014/08/07 16:20:43 CLSRSC-363: User ignored prerequisites during installation
OLR initialization - successful
2014/08/07 16:21:50 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.conf'
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
2014/08/07 16:26:20 CLSRSC-343: Successfully started Oracle clusterware stack
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 12c Release 1.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Start upgrade invoked..
Started to upgrade the Oracle Clusterware. This operation may take a few minutes.
Started to upgrade the OCR.
Started to upgrade the CSS.
The CSS was successfully upgraded.
Started to upgrade Oracle ASM.
Started to upgrade the CRS.
The CRS was successfully upgraded.
Oracle Clusterware operating version was successfully set to 12.1.0.1.0
2014/08/07 16:29:16 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Noter les informations “Configure Oracle Grid Infrastructure for a Cluster … succeeded”  à chaque fois.
La version installée est bien la 12.1.0.1 sans autre patche :

[oracle@rac112a ~]$ /u01/app/gi/12.1.0.1/grid/OPatch/opatch lsinventory -all
Oracle Interim Patch Installer version 12.1.0.1.0
Copyright (c) 2012, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/gi/12.1.0.1/grid
Central Inventory : /u01/app/oraInventory
from : /u01/app/gi/12.1.0.1/grid/oraInst.loc
OPatch version : 12.1.0.1.0
OUI version : 12.1.0.1.0
Log file location : /u01/app/gi/12.1.0.1/grid/cfgtoollogs/opatch/opatch2014-08-08_11-04-49AM_1.log
Lsinventory Output file location : /u01/app/gi/12.1.0.1/grid/cfgtoollogs/opatch/lsinv/lsinventory2014-08-08_11-04-49AM.txt
--------------------------------------------------------------------------------
List of Oracle Homes:
Name Location
OraDb11g_home1 /u01/app/oracle/product/11.2.0.3/db_1
Ora11g_gridinfrahome2 /u01/app/11.2.0.4/grid
OraDb11g_home2 /u01/app/oracle/product/11.2.0.4/db_1
OraGI12Home1 /u01/app/gi/12.1.0.1/grid
Installed Top-level Products (1):
Oracle Grid Infrastructure 12c 12.1.0.1.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
Patch level status of Cluster nodes :
Patching Level Nodes
-------------- -----
0 rac112b,rac112a

Les ressources du cluster (sauf la base de données, non traitée ici) sont ONLINE et STABLE ,  on trouve un nouveau  listener dédié pour la base MGMT (MGMTLSNR) et la présence de cette base en mono instance sur un des nœuds (MGMTDB).

[oracle@rac112b 12.1.0.1]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
                  ONLINE ONLINE rac112a STABLE
                  ONLINE ONLINE rac112b STABLE
ora.OCRETDATA.dg
                  ONLINE ONLINE rac112a STABLE
                  ONLINE ONLINE rac112b STABLE
ora.asm
                  ONLINE ONLINE rac112a Started,STABLE
                  ONLINE ONLINE rac112b Started,STABLE
ora.net1.network
                  ONLINE ONLINE rac112a STABLE
                  ONLINE ONLINE rac112b STABLE
ora.ons
                 ONLINE ONLINE rac112a STABLE
                 ONLINE ONLINE rac112b STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
               1 ONLINE ONLINE rac112b STABLE
ora.LISTENER_SCAN2.lsnr
               1 ONLINE ONLINE rac112a STABLE
ora.LISTENER_SCAN3.lsnr
               1 ONLINE ONLINE rac112a STABLE
ora.MGMTLSNR
               1 ONLINE ONLINE rac112a 169.254.6.128 192.168.1.110,STABLE
ora.cvu
               1 ONLINE ONLINE rac112b STABLE
ora.mgmtdb
               1 ONLINE ONLINE rac112a Open,STABLE
ora.oc4j
               1 ONLINE ONLINE rac112b STABLE
ora.orcl.db
               1 OFFLINE OFFLINE Instance Shutdown,STABLE
               2 OFFLINE OFFLINE Instance Shutdown,STABLE
ora.rac112a.vip
               1 ONLINE ONLINE rac112a STABLE
ora.rac112b.vip
               1 ONLINE ONLINE rac112b STABLE
ora.scan1.vip
               1 ONLINE ONLINE rac112b STABLE
ora.scan2.vip
               1 ONLINE ONLINE rac112a STABLE
ora.scan3.vip
               1 ONLINE ONLINE rac112a STABLE
--------------------------------------------------------------------------------

5) Retour arrière vers la version 11.2.0.4
A titre d’exercice et au cas ou la nécessité se présenterait un jour,  voici la  procédure de retour en arrière vers la version précédente.
Au préalable, Il faut repérer le nœud sur lequel le script « rootupgrade.sh » a été passé en premier. Pour le retrouver c’est le seul qui contient des fichiers de type ocr*  sous le répertoire $NEW_GRID_HOME/cdata
a)  Sur tous les nœuds sauf le premier en tant qu’utilisateur root

[root@rac112b ~]# /u01/app/gi/12.1.0.1/grid/crs/install/rootcrs.pl –downgrade     # ajouter l’option –f , force, si l’upgrade ne c’était pas déroulée correctement
Using configuration parameter file: /u01/app/gi/12.1.0.1/grid/crs/install/crsconfig_params
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'rac112b'
CRS-2673: Attempting to stop 'ora.crsd' on 'rac112b'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'rac112b'
CRS-2673: Attempting to stop 'ora.OCRETDATA.dg' on 'rac112b'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'rac112b'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'rac112b'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'rac112b'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.rac112b.vip' on 'rac112b'
CRS-2677: Stop of 'ora.scan1.vip' on 'rac112b' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'rac112a'
CRS-2677: Stop of 'ora.rac112b.vip' on 'rac112b' succeeded
CRS-2672: Attempting to start 'ora.rac112b.vip' on 'rac112a'
CRS-2676: Start of 'ora.scan1.vip' on 'rac112a' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'rac112a'
CRS-2676: Start of 'ora.rac112b.vip' on 'rac112a' succeeded
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'rac112a' succeeded
CRS-2677: Stop of 'ora.OCRETDATA.dg' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'rac112b'
CRS-2677: Stop of 'ora.asm' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'rac112b'
CRS-2677: Stop of 'ora.ons' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'rac112b'
CRS-2677: Stop of 'ora.net1.network' on 'rac112b' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac112b' has completed
CRS-2677: Stop of 'ora.crsd' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.storage' on 'rac112b'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'rac112b'
CRS-2673: Attempting to stop 'ora.ctssd' on 'rac112b'
CRS-2673: Attempting to stop 'ora.gpnpd' on 'rac112b'
CRS-2673: Attempting to stop 'ora.evmd' on 'rac112b'
CRS-2673: Attempting to stop 'ora.crf' on 'rac112b'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'rac112b'
CRS-2677: Stop of 'ora.storage' on 'rac112b' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'rac112b' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'rac112b' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'rac112b' succeeded
CRS-2677: Stop of 'ora.crf' on 'rac112b' succeeded
CRS-2677: Stop of 'ora.evmd' on 'rac112b' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'rac112b'
CRS-2677: Stop of 'ora.asm' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'rac112b'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'rac112b'
CRS-2677: Stop of 'ora.cssd' on 'rac112b' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'rac112b'
CRS-2677: Stop of 'ora.gipcd' on 'rac112b' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac112b' has completed
CRS-4133: Oracle High Availability Services has been stopped.
Successfully downgraded Oracle Clusterware stack on this node

A la fin de cette étape :

  • La couche clusterware n’est plus active sur le noeud
  • Les entrées correspondantes du fichier /etc/oratab ont été nettoyées
  • La version du logiciel crs sur le nœud est :
[root@rac112b ~]# /u01/app/gi/12.1.0.1/grid/bin/crsctl query crs softwareversion
Oracle Clusterware version on node [rac112b] is [11.2.0.4.0]
  • Version active non accessible depuis ce noeud (mais toujours en 12.1.0.1)
[root@rac112b ~]# /u01/app/gi/12.1.0.1/grid/bin/crsctl query crs activeversion
Oracle Cluster Registry initialization failed accessing Oracle Cluster Registry device: PROC-26: Error while accessing the physical storage
ORA-29701: unable to connect to Cluster Synchronization Service

b)  Sur le premier nœud , connexion avec le compte root

# /u01/app/12.1.0/grid/crs/install/rootcrs.pl -downgrade –lastnode # ajouter l’option –f , force, si l’upgrade ne c’était pas déroulée correctement
…/….
CRS-2676: Start of 'ora.ctssd' on 'rac112a' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'rac112a' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'rac112a'
CRS-2676: Start of 'ora.asm' on 'rac112a' succeeded
2014/08/08 11:29:02 CLSRSC-338: Successfully downgraded OCR to 11.2.0.4.0
CRS-2672: Attempting to start 'ora.crsd' on 'rac112a'
CRS-2676: Start of 'ora.crsd' on 'rac112a' succeeded
Successfully downgraded Oracle Clusterware stack on this node
Run '/u01/app/11.2.0.4/grid/bin/crsctl start crs' on all nodes to complete downgrade

c) Depuis n’importe lequel des nœuds, connexion avec l’utilisateur de l’installation (oracle)
Invalidation du répertoire Grid Home de la version 12.1.0.1
Exécution runInstaller depuis les binaires de la version 12.1.0.1

[oracle@rac112b]$ cd /u01/app/gi/12.1.0.1/grid/oui/bin
[oracle@rac112b bin]$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/gi/12.1.0.1/grid
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 3023 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'UpdateNodeList' was successful.

Ce qui donne dans la suppression de l’information « CRS=true » dans le fichier inventory.xml pour les lignes correspondant au « HOME_NAME » de la version 12.1.0.1
Revalidation Grid Home de la version 11.2.0.4

[oracle@rac112b bin]$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=true ORACLE_HOME=/u01/app/11.2.0.4/grid
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 3023 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'UpdateNodeList' was successful.

Ce qui remet l’information « CRS=true » dans le fichier inventory.xml pour les lignes correspondant au « HOME_NAME « de la version 11.2.0.4 :

<HOME NAME="Ora11g_gridinfrahome2" LOC="/u01/app/11.2.0.4/grid" TYPE="O" IDX="3" CRS="true">
<NODE_LIST>
<NODE NAME="rac112a"/>
<NODE NAME="rac112b"/>
</NODE_LIST>
</HOME>

d)  Démarrage du clusterware
Sur chacun des noeuds avec les binaires de la version précédente, connexion root :

[root@rac112a ~]# /u01/app/11.2.0.4/grid/bin/crsctl check cluster
CRS-4639: Could not contact Oracle High Availability Services
CRS-4000: Command Check failed, or completed with errors.
[root@rac112a ~]# /u01/app/11.2.0.4/grid/bin/crsctl check crs
CRS-4639: Could not contact Oracle High Availability Services
[root@rac112a ~]# /u01/app/11.2.0.4/grid/bin/crsctl start crs
CRS-4123: Oracle High Availability Services has been started.
[root@rac112a ~]# /u01/app/11.2.0.4/grid/bin/crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[root@rac112a ~]# /u01/app/11.2.0.4/grid/bin/crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[root@rac112a ~]# /u01/app/11.2.0.4/grid/bin/crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.4.0]

Sur le second noeud :

[root@rac112b ~]# /u01/app/11.2.0.4/grid/bin/crsctl start crs
CRS-4123: Oracle High Availability Services has been started.
[root@rac112b ~]# /u01/app/11.2.0.4/grid/bin/crsctl check cluster -all
**************************************************************
rac112a:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
rac112b:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************

    e)   Suppression complète des informations de l’inventaire pour la version
Depuis n’importe lequel des nœuds, connexion utilisateur de l’installation:

[oracle@rac112b bin]$ pwd
/u01/app/gi/12.1.0.1/grid/oui/bin
[oracle@rac112b bin]$ ./runInstaller -detachHome -silent ORACLE_HOME=/u01/app/gi/12.1.0.1/grid
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 3022 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.

    f)  Suppression complète des binaires
Depuis chacun des noeuds connexions root :

[root@rac112b ]# cd /u01/app/gi/12.1.0.1
[root@rac112b 12.1.0.1]#/bin/rm –r grid
[root@rac112a ]# cd /u01/app/gi/12.1.0.1
[root@rac112a 12.1.0.1]#/bin/rm –r grid

Idéalement faire un reboot d’un noeud puis de l’autre pour bien valider que tout va bien.
 
6) Mise à jour Grid Infrastructure en 12.1.0.2
Maintenant que nous sommes revenus en version 11.2.0.4 et que toute trace de la version 12.1.0.1 a disparu ,   c’est le moment de passer définitivement notre logiciel Grid Infrastructure en version 12.1.0.2.
a)  Configuration et déploiement des binaires
Pour rappel il existe un nouveau pré requis concernant le paramètre noyau « oops » (voir ci dessus)
L’exécution de l’installeur de la version est similaire à celui de la 12.1.0.1,  nous en profiterons cependant pour regarder comment il se débrouille pour exécuter seul les scripts « rootupgrade.sh » .
Reprenons le déroulement des étapes  suite au lancement de « runInstaller.sh » :

  • Software Update :  Toujours pas de mail ,ni d’information à envoyer
  • Installation Option :  Choix “Upgrade Oracle Grid Infrastructure or Oracle Automatic Storage Management”
  • Product languages :  “En”  au minimum
  • Node Selection :  Tous les nœuds du cluster doivent être automatiquement sélectionnés
  • Management Options :  Choix de l’enregistrement du cluster avec une infrastructure EM Cloud Control existante, en précisant le nom du serveur de l’application OMS, le port d’écoute utilisé, l’utilisateur et le mot de passe.  Disparition complète de la possibilité de configurer ou non la base de données pour « Cluster Health Monitor »  ,  la base MGMT est installée systématiquement !
  • Operating System Groups :  toujours rien de spécial , tous les groupes peuvent être positionnés sur “dba”  en ignorant le “warning”
  • Installation Location:  définir les répertoires pour ORACLE_BASE et pour ORACLE_HOME répertoire de destination des binaires de la Grid Infrastructure sur tous les nœuds , le programme vérifie que les droits d’accès au répertoire sont corrects.
  • Root script execution : Demande de l’exécution automatique par l’installeur en précisant le mot de passe du compte « root »  :

GI12c_004
Ce qui ouvre l’étape 8,  « Select Batch for nodes » ,  qui va permettre de définir une exécution par lot du script « rootupgrade.sh » , intéressant pour avoir le choix dans l’ordre de mise à jour des nœuds , donc pour gérer plus facilement les arrêts de service associés :
GI12c_005
Pour mon petit cluster de test , je fais simplement l’un puis l’autre.

  • Prerequisite Check  :  Bypass des pré-requis mémoire de 4Go , mes VMs sont configurées chacune à 3Go et je ne peux leur en donner plus.  Erreur supplémentaire concernant le fichier /etc/resolv.conf pour ma configuration car je n’utilise pas de DNS :

GI12c_006
Détail de l’erreur :
GI12c_007

  • Summary :  Résumé des choix fait , noter maintenant les liens “Edit”  qui permettent de retourner vers l’écran associé si l’on souhaite refaire une modification:

GI12c_008
b)  Exécution automatique des scripts de mises à jour
Lorsque la jauge de progression affiche 81%  l’installeur demande confirmation pour l’exécution des scripts de mise à jour :
GI12c_009
Une fois le lancement validé, ce qui va déclencher l’exécution du premier lot (batch1)  sur les noeuds on trouve les fichiers journaux sous $GRID_HOME/cfgtoollogs/crsconfig :

[root@rac112a crsconfig]# pwd
/u01/app/gi/12.1.0.2/cfgtoollogs/crsconfig
 
[root@rac112a crsconfig]# ls -ltr
total 596
drwxr-x--- 2 oracle oinstall   4096 Aug 8 15:24 oracle
-rwxrwxr-x 1 oracle oinstall   9129 Aug 8 15:25 srvmcfg1.log
-rwxrwxr-x 1 oracle oinstall 233860 Aug 8 15:38 srvmcfg2.log
-rwxrwxr-x 1 oracle oinstall 11991 Aug 8 15:38 srvmcfg3.log
-rwxrwxr-x 1 oracle oinstall   9569 Aug 8 15:38 srvmcfg4.log
-rwxrwxr-x 1 oracle oinstall 324491 Aug 8 15:38 rootcrs_rac112a_2014-08-08_03-24-36PM.log

Le journal principal est celui sous la forme rootcrs_<node_name>_YYYY-MM-DD_HH-MI-SS.log
La ligne :

2014-08-08 15:38:46: CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Correspond à une fin de traitement normal et provoque l’affichage de la demande de confirmation d’exécution pour le lot suivant :
GI12c_0010
« Execute Later » permettrait de différer l’exécution au moment le plus opportun pour votre activité.
    c)  Base container pour CHM
Une fois les scripts « rootupgrade.sh » terminés sur tous les noeuds , la suite de la configuration se déroule et on voit très bien l’étape de création de la base MGMT :
GI12c_0011
    d)  Dernières vérifications
La dernière étape de l’installeur est une nouvelle exécution de l’utilitaire « Cluster verify »    qui va dans ma configuration  se retrouvé en état « Failed »   suite à l’absence de la configuration de mon adresse SCAN dans le DNS.
GI12c_0012
Une installation qui se termine dans le rouge, mais qui en réalité est totalement opérationnelle ce que nous confirme la vision des ressources :

[oracle@rac112a grid]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target State       Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE       rac112a                 STABLE
ONLINE ONLINE       rac112b                 STABLE
ora.OCRETDATA.dg
ONLINE ONLINE       rac112a                 STABLE
ONLINE ONLINE       rac112b                 STABLE
ora.asm
ONLINE ONLINE       rac112a                 Started,STABLE
ONLINE ONLINE       rac112b                 Started,STABLE
ora.net1.network
ONLINE ONLINE       rac112a                 STABLE
ONLINE ONLINE       rac112b                 STABLE
ora.ons
ONLINE ONLINE       rac112a                 STABLE
ONLINE ONLINE       rac112b                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1       ONLINE ONLINE       rac112b                 STABLE
ora.LISTENER_SCAN2.lsnr
1       ONLINE ONLINE       rac112a                 STABLE
ora.LISTENER_SCAN3.lsnr
1       ONLINE ONLINE       rac112a                 STABLE
ora.MGMTLSNR
1       ONLINE ONLINE       rac112a                 169.254.6.128 192.168.1.110,STABLE
ora.cvu
1       ONLINE ONLINE       rac112b                 STABLE
ora.mgmtdb
1       ONLINE ONLINE       rac112a                 Open,STABLE
ora.oc4j
1       ONLINE ONLINE       rac112b                 STABLE
ora.orcl.db
1       OFFLINE OFFLINE                               Instance Shutdown,STABLE
2       OFFLINE OFFLINE                               Instance Shutdown,STABLE
ora.rac112a.vip
1       ONLINE ONLINE       rac112a                 STABLE
ora.rac112b.vip
1       ONLINE ONLINE       rac112b                 STABLE
ora.scan1.vip
1       ONLINE ONLINE       rac112b                 STABLE
ora.scan2.vip
1       ONLINE ONLINE       rac112a                 STABLE
ora.scan3.vip
1       ONLINE ONLINE       rac112a                 STABLE
--------------------------------------------------------------------------------

Conclusion
Un bilan positif pour  cette mise à jour avec des opérations  qui se déroulent  correctement,  sans trop d’anicroche et  une certaine souplesse dans l’indisponibilité des nœuds.  La quasi obligation de mettre en œuvre la base MGMT, surtout en 12.1.0.2  semble une contrainte assez lourde pour ceux qui ne souhaite pas (ou ne peuvent pas) utiliser les fonctionnalités associées :  Cluster Health Monitor, Quality Of Service Management et Rapid Home provisionning,  on peut cependant la désactiver après coups.  Il reste à profiter des nouveautés comme Flex Cluster et Flex ASM   et à repenser son infrastructure pour implémenter une gestion du cluster et surtout de ses noeuds au travers des stratégies flexibles (penser « Policy Managed »). Si vous rencontrez de votre coté d’autres pièges n’hésitez pas en faire profitez notre Easy communauté.