Upgrade de l'infrastructure Grid Oracle 11gR2 vers Oracle 12C

Introduction

Cet article décrit une des méthodes d’upgrade de RAC 11gR2 vers la dernière version 12C.  On notera que si on veut faire évoluer des RAC antérieurs à la 12C  vers des configurations plus avancées utilisant les nouvelles fonctionnalités 12c, Flex clusters et ou Flex ASM, dont nous reparlerons dans d’autres articles,  il sera nécessaire d’effectuer cet upgrade afin de rendre les disques ASM compatibles avec la version 12c.
L’infrastructure initiale est un RAC 11gR2 (11.2.0.3.0) en ASM à 2  nœuds installé sur OracleEnterpriseLinux6 (OEL6) virtualisé avec Oracle VirtualBox 4.1.14.Les disques ASM sont configurés avec Udev et aucun patch supplémentaire n’a été appliqué à cette plateforme.

Méthode

La procédure suit la méthodologie adoptée par Oracle depuis la version 11.2.0.2.0  pour l’application de patchset des RAC dite  de « out-of-place » et « rolling » upgrade sans arrêt des ressources du cluster.
Les pré-requis de cet upgrade sont identiques à ceux nécessaires à l’installation de la 11.2.0.3 sur OEL6, à l’exception des éléments suivants :

  • Espace nécessaire à l’installation des binaires du grid 12C  (6.5 Go) sur chaque noeud
  • Espace disponible dans les disques OCR : si on choisit d’installer le référentiel de gestion de l’infrastructure grid, il faudra que les disques OCR disposent au minimum de 3.5 Go d’espace libre ( mais de 4 Go dans le cas d’une nouvelle installation ).

Comme en 12C nous disposons toujours de l’utilitaire de vérification CLUVFY, autant l’utiliser:

[oracle@oel6rac3 ~]$ /media/cdrom/grid12C/runcluvfy.sh stage -pre crsinst -upgrade -n oel6rac3,oel6rac4 -rolling -src_crshome /app/11.2.0/grid -dest_crshome /app/12.1.0/grid -dest_version 12.1.0.1.0 -verbose > upgrade_crs.log

Si cette étape est réussie on peut passer à l’installation/upgrade en utilisant OUI ( Oracle Universal Installer) en mode graphique:
Au préalable, retirer toutes les variables d’environnement ORACLE (ORACLE_HOME, ORA_CRS_HOME, ORACLE_SID, LD_LIBRARY_PATH,  etc …)

[oracle@oel6rac3 ~]$ /media/cdrom/grid12C/runInstaller

S’ensuit les écrans d’installation OUI qui diffèrent peu de ceux de la 11gR2:
Lors de l’étape 2 il faudra sélectionner « Upgrade Grid Infrastrcuture or Oracle Automatic Storage Management »;
grdupgradestep2
A l’étape 6 , « Yes » pour « Configure Grid Infrastructure Management Repository ». Ceci va créer une base Oracle mono instance pilotée par la couche clusterware, nommée mgmtdb en configuration ASMM à 500Mo en cible; cette base correspond au » Cluster Health Monitor ( CHM)  repository » de la 11gR2 qui était stockée dans le home de l’infrastructure grid, et qui l’est désormais sur les disques ASM (OCR).
gridupgradestep6
Une fois l’installation des binaires réalisée sur tous les noeuds dans le nouvel emplacement, à environ 87% de la progression, l’exécution du script root.sh est demandée :
grdupgraderoot-sh
C’est la section la plus critique, si un problème survient il faut relancer le shell, puis analyser les logs et revenir vers nous.
Exécution sur le premier serveur, il y a détection de la version précédente et début de la mise à jour:
[root@oel6rac3 ~]# /app/12.1.0/grid/rootupgrade.sh
[root@oel6rac3 ~]# /app/12.1.0/grid/rootupgrade.sh
Performing root user operation for Oracle 12c
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/12.1.0/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: /app/12.1.0/grid/crs/install/crsconfig_params
2013/06/10 19:12:37 CLSRSC-363: User ignored prerequisites during installation
ASM upgrade has started on first node.
OLR initialization - successful
2013/06/10 19:21:46 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.
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'oel6rac3'
CRS-2677: Stop of 'ora.drivers.acfs' on 'oel6rac3' succeeded
2013/06/10 19:28:24 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.
2013/06/10 19:33:34 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

A ce moment là toutes les ressources sont présentes sur le second noeud, elles vont rebasculer ensuite.
Exécution sur le second serveur (correspondant à l’exécution sur le dernier du cluster)
[root@oel6rac4 ~]# /app/12.1.0/grid/rootupgrade.sh
Performing root user operation for Oracle 12c
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /app/12.1.0/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: /app/12.1.0/grid/crs/install/crsconfig_params
2013/06/10 19:34:43 CLSRSC-363: User ignored prerequisites during installation
OLR initialization - successful
2013/06/10 19:37:35 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.
2013/06/10 19:41:17 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
2013/06/10 19:44:49 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Résultats

On retrouve à la fin de cette évolution  la base de données en version 11.2.0.3  fonctionnelle mais sous le contrôle de l’infra grid 12C.
On notera les nouvelles ressources liées au référentiel de gestion du grid 12C ( ora.MGMTLSNR,  ora.mgmtdb, en plus de celles connues en 11gR2 )

Name           Target  State        Server                   State details
——————————————————————————————————–
ora.MGMTLSNR
1        ONLINE  ONLINE       oel6rac4                 169.254.15.114.87 192.168.56.20,STABLE
ora.cvu
1        ONLINE  ONLINE       oel6rac4                 STABLE
ora.gezno.db
1        ONLINE  ONLINE       oel6rac3                 Open,STABLE
2        ONLINE  ONLINE       oel6rac4                 Open,STABLE
ora.mgmtdb
1        ONLINE  ONLINE       oel6rac4                 Open,STABLE

Les mêmes commandes de gestion des RAC  comme celle de control de cluster, crsctl, sont utilisées en 12c, d’autres ont été rajoutées.
Cependant à la différence des versions précédentes l’état des ressources dans la colonne »State Details » a été complétée:

  • STABLE : indique que la ressource est dans un état normal, fonctionnel.
  • INTERNAL_STATE: indique une action en cours ( arrêt, démarrage, arrêt forcé) acccompagné du mot clé associé ( start, stop, cleaning).

La nouvelle ressource, mgmtdb, associée à un seul serveur ( en l’occurence celui sur lequel on a démarré l’upgrade) bascule  comme les autres ressources sur l’autre serveur lorsqu’on provoque un failover:

ora.MGMTLSNR
1        ONLINE  ONLINE       oel6rac4                 169.254.15.118 192.168.56.16,STABLE
ora.cvu
1        ONLINE  ONLINE       oel6rac4                 STABLE
ora.gezno.db
1        ONLINE  OFFLINE                               STABLE
2        ONLINE  ONLINE       oel6rac4                 Open,STABLE
ora.mgmtdb
1        ONLINE  ONLINE       oel6rac4                 Open,STABLE

Cette base stocke les métriques du système d’exploitation collectées en temps réel par CHM ( Cluster Health Monitor).  Elle est gérée comme tout autre base du cluster avec la commande srvctl, par exemple:

  • srvctl config mgmtdb
  • srvctl start mgmtdb -node oel6rac4  -startoption MOUNT
  • srvctl stop mgmtdb -stopoption NORMAL

Noter les mots clé « node, startoption, stopoption » qui remplacent l’ancienne synthaxe ( « -n et -o ») : en fait toutes les options de la commande « srvctl » qui sont référencées par une seule lettre jusqu’en 11gR2 sont remplacées par des mots entiers  en 12C. Des mises à jour de scripts seront donc à prévoir.
Comme en 11gR2 les données de ce référentiel seront accessibles à travers l’utilitaire OCLUMON.

Conclusion

Une évolution de l’infrastructure Grid en 12C assez aisée avec un Installer Oracle de plus en plus stable.
La différence majeure est l’installation du référentiel de gestion de l’infra  grid ( Grid Infrastructure Management Repository)  sur les disques OCR qui permet d’analyser et gérer les performances du cluster. Cette base sera particulièrement utile lors de l’utilisation des nouvelles fonctionnalités Flex Clusters. Cependant, il est recommandé de l’installer, sans quoi les fonctionnalités Cluster Health Monitor, QoS Management, et Memory Guard seront désactivées.