Restauration d’un OCR dans ASM (11GR2)

ASM, Cluster RAC pas de Commentaire »

Contrairement au versions précédentes, pour la 11GR2, on a la possibilité de stocker l’OCR et les Voting Disks dans un diskgroup ASM.

Après avoir installé un cluster utilisant cette nouvelle fonctionnalité, et faisant quelques tests de recette qui comprennent notamment la restauration de l’OCR, je me suis demandé comment pouvait on restaurer l’OCR quand le cluster est arrêté et donc ASM où il est stocké ?

Attention, ce qui suit est valable uniquement pour la version 11.2.0.1, en 11.2.0.2 les choses sont un petit peu différentes

1. Arrêter le  clusterware sur chaque noeud :

crsctl stop cluster -all

2. On vérifie que les deux clusterware sont bien arrêtés sur chaque noeud

3. Sur le noeud sur lequel est présent le backup de l’OCR démarrer manuellement les ressources css et asm

[root@rac1 bin]# ./crsctl start res ora.cssd -init
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac1'
CRS-2676: Start of 'ora.cssdmonitor' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'rac1'
CRS-2672: Attempting to start 'ora.diskmon' on 'rac1'
CRS-2676: Start of 'ora.diskmon' on 'rac1' succeeded
CRS-2676: Start of 'ora.cssd' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start res ora.asm -init
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'rac1'
CRS-2672: Attempting to start 'ora.ctssd' on 'rac1'
CRS-2676: Start of 'ora.ctssd' on 'rac1' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'rac1'
CRS-2676: Start of 'ora.asm' on 'rac1' succeeded

4. Restaurer l’OCR depuis le backup qui nous intéresse

[root@rac1 bin]# ./ocrconfig -showbackup

rac1     2010/12/22 12:53:13     /app/product/11.2.0/grid/cdata/rac-cluster/backup00.ocr

rac1     2010/12/22 08:53:11     /app/product/11.2.0/grid/cdata/rac-cluster/backup01.ocr

rac1     2010/12/22 04:53:11     /app/product/11.2.0/grid/cdata/rac-cluster/backup02.ocr

rac1     2010/12/21 20:53:10     /app/product/11.2.0/grid/cdata/rac-cluster/day.ocr

rac1     2010/12/21 20:53:10     /app/product/11.2.0/grid/cdata/rac-cluster/week.ocr

rac1     2011/03/03 14:54:21     /app/product/11.2.0/grid/cdata/rac-cluster/backup_20110303_145421.ocr

[root@rac1 bin]# ./ocrconfig -restore /app/product/11.2.0/grid/cdata/rac-cluster/backup_20110303_145421.ocr

5. Démarrer manuellement les ressources manquantes du cluster evmd et crsd.

 [root@rac1 bin]# ./crsctl start res ora.evmd –init
CRS-2672: Attempting to start 'ora.evmd' on 'rac1'
CRS-2676: Start of 'ora.evmd' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start res ora.crsd –init
CRS-2672: Attempting to start 'ora.crsd' on 'rac1'
CRS-2676: Start of 'ora.crsd' on 'rac1' succeeded

6. Démarrer le clusterware sur les autres noeuds : crsctl start cluster –all

[root@rac1 bin]# ./crsctl start cluster –all
CRS-2672: Tentative de drmarrage de 'ora.cssdmonitor' sur 'rac2'
CRS-2676: 'ora.cssdmonitor' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.cssd' sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.diskmon' sur 'rac2'
CRS-2676: 'ora.diskmon' a été démarré sur 'rac2'
CRS-2676: 'ora.cssd' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.ctssd' sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.cluster_interconnect.haip' sur 'rac2'
CRS-2676: 'ora.ctssd' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.evmd' sur 'rac2'
CRS-2676: 'ora.evmd' a été démarré sur 'rac2'
CRS-2676: 'ora.cluster_interconnect.haip' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.asm' sur 'rac2'
CRS-2676: 'ora.asm' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.crsd' sur 'rac2'
CRS-2676: 'ora.crsd' a été démarré sur 'rac2'
CRS-4690: Oracle Clusterware is already running on 'rac1'
CRS-4000: Command Start failed, or completed with errors

7. Vérification

 [root@rac1 bin]# ./crs_stat –t
Name           Type           Target    State     Host
ora.DGDATA.dg  ora....up.type ONLINE    ONLINE    rac1
ora.DGFRA.dg   ora....up.type ONLINE    ONLINE    rac1
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac1
ora....TING.dg ora....up.type ONLINE    ONLINE    rac1
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1
ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac1
ora.gsd        ora.gsd.type   OFFLINE   OFFLINE
ora....network ora....rk.type ONLINE    ONLINE    rac1
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    OFFLINE   OFFLINE
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    OFFLINE   OFFLINE
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2
ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac1
ora.setra.db   ora....se.type ONLINE    ONLINE    rac1

Un peu plus compliqué que dans les versions précédentes, mais ASM oblige ….

Migration couche RAC 10G vers 11G

ASM, Cluster RAC pas de Commentaire »

Migration crs 10G vers 11GR2

Les clusters RAC installés ces dernières années en 10g vont devoir être migrés un jour ou l’autre fatalement.

Les éditeurs mettant souvent du temps à valider leurs soft avec la version 11GR2,
on peut prendre de l’avance en ne migrant que les couche CRS et ASM en 11GR2 et en laissant les bases en 10G.

Si vous êtes sur OEL4, vérifier ou upgrader votre OS au minimum en 4.7

Appliquer les pré-requis pour la version 11GR2 sur votre système (note Metalink 880942.1 pour OEL4 et 880989.1 pour OEL5).

Un petit coup de cluster verify permet d’en avoir le coeur net.

runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose

Une fois les binaires du grid 11GR2 copiés, on va utiliser la fonctionnalité « Mettre à niveau Oracle Grid Infrastructure » de l’installer.
Il n’est pas nécéssaire d’arrêter le crs, bien que ça marche quand même si c’est le cas.
On peut sinon passer le script clusterware/upgrade/preupdate.sh qui arrête le crs.

On peut donc théoriquement faire l’upgrade d’un noeud après l’autre, sans coupure de production.

Si vous utilisez ASM, alors arrêtez vos bases et vos instances ASM, l’installeur vous le demandera de toute façon.

Si les pré-requis ont été respecté et l’adresse scan convenablement renseignée, l’installation se déroule comme une installation 11GR2 standard.

Au lieu de lancer le fameux root.sh, on va lancer le rootupgrade.sh qui va arrêter le crs (s’il est démarré), effectuer les mises à jour nécéssaires et relancer la couche cluster.

[root@rac1 tmp]# /app/11.2.0/grid/rootupgrade.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /app/11.2.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.sh script.
Now product-specific root actions will be performed.
2011-03-29 15:23:53: Parsing the host name
2011-03-29 15:23:53: Checking for super user privileges
2011-03-29 15:23:53: User has super user privileges
Using configuration parameter file: /app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
Failure 1 contacting CSS daemon
Command return code of 6 (1536) from command: /app/oracle/product/10.2.0/crs/bin/crsctl check cssd
Cannot communicate with EVM
Cannot communicate with CRS
Command return code of 1 (256) from command: /app/oracle/product/10.2.0/crs/bin/crsctl check crsd
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
  root wallet
  root wallet cert
  root cert export
  peer wallet
  profile reader wallet
  pa wallet
  peer wallet keys
  pa wallet keys
  peer cert request
  pa cert request
  peer cert
  pa cert
  peer root cert TP
  profile reader root cert TP
  pa root cert TP
  peer pa cert TP
  pa peer cert TP
  profile reader pa cert TP
  profile reader peer cert TP
  peer user cert
  pa user cert
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
ADVM/ACFS is not supported on Redhat 4
CRS-2672: Tentative de démarrage de 'ora.mdnsd' sur 'rac1'
CRS-2676: 'ora.mdnsd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.gipcd' sur 'rac1'
CRS-2676: 'ora.gipcd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.gpnpd' sur 'rac1'
CRS-2676: 'ora.gpnpd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.cssdmonitor' sur 'rac1'
CRS-2676: 'ora.cssdmonitor' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.cssd' sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.diskmon' sur 'rac1'
CRS-2676: 'ora.diskmon' a été démarré sur 'rac1'
CRS-2676: 'ora.cssd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.ctssd' sur 'rac1'
CRS-2676: 'ora.ctssd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.crsd' sur 'rac1'
CRS-2676: 'ora.crsd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.evmd' sur 'rac1'
CRS-2676: 'ora.evmd' a été démarré sur 'rac1'
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
rac1     2011/03/29 15:27:32     /app/11.2.0/grid/cdata/rac1/backup_20110329_152732.olr
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
Updating inventory properties for clusterware
Démarrage d'Oracle Universal Installer...
Vérification de l'espace de swap : il doit être supérieur à 500 Mo.   Réel 1567 Mo    Succès
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/oracle/oraInventory
'UpdateNodeList' a réussi.
Démarrage d'Oracle Universal Installer...
Vérification de l'espace de swap : il doit être supérieur à 500 Mo.   Réel 1567 Mo    Succès
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/oracle/oraInventory
'UpdateNodeList' a réussi.

Tout est redémarré sur ce noeud, il ne reste plus qu’à migrer ASM.

Pour cela on lance l’assistant asmca à partir du home grid.

L’assistant va vous proposer de mettre à niveau votre version d’ASM, et va arrêter successivement toutes les instances pour finir par les redémarrer dans la nouvelle version.

On verra apparaitre les ressources correspondantes aux diskgroups au fur et à mesure.

Vous avez maitenant un beau cluster en 11GR2 avec des bases en 10G.

Une bonne partie des actions à réaliser pouvant se faire en amont (pré requis, copie des binaires etc..) et sans arrêt de service, on peut donc s’en tirer avec des arrêts de production relativement courts.

PS : évidemment un retour arrière est à prévoir (et à tester :-))