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 :-))