Cloner un ORACLE_HOME d'une base de données RAC 10g

Avant d’appliquer un Patch Set, en place ou dans un autre ORACLE_HOME, cloner le logiciel de base de données dans un autre répertoire est une méthode simple et rapide pour permettre une mise à jour ou un retour arrière. Dans le cas de RAC, vous pouvez procéder comme ci-dessous; on supposera que vous avez ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 et que vous voulez le cloner dans ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_2. Pour simplifier, nous considèrerons que vous avez un RAC 4 nœuds constitué de rac-server1, rac-server2, rac-server3 et rac-server4.

Pour chacun des serveurs, effectuer les 4 opérations ci-dessous:

  • Connectez-vous Oracle et copier le ORACLE_HOME
$ cd /u01/app/oracle/product/10.2.0
$ cp -r db_1 db_2
  • Changez le chemin, l’inventory et « re-linkez » le nouveau ORACLE_HOME(Changez LOCAL_NODE pour chacun des serveurs)
$ cd db_2/clone/bin
$ perl clone.pl
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_2
ORACLE_HOME_NAME=Ora102Db2
'-O"CLUSTER_NODES={rac-server1,rac-server2,rac-server3,rac-server4}"'
'-O"LOCAL_NODE=rac-server1"'
  • Vous pouvez exécuter le script root.sh
$ su -

# /u01/app/oracle/product/10.2.0/db_2/root.sh
  • Vous pouvez vérifier dans l’inventory local dans le fichier ContentsXML/inventory.xml ou avec OPatch que le nouvel ORACLE_HOME est enregistré
$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_2
$ cd $ORACLE_HOME/OPatch
$ ./opatch lsinv

Quand vous avez terminé avec l’un des ORACLE_HOME, vous pouvez le détacher de l’inventory avec une commande comme celle ci-dessous:

$ cd /u01/app/oracle/product/10.2.0/db_1

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

$ export INVENTORY=`./opatch lsinv|
grep "Central Inventory"|
cut -d ":" -f 2`

$ cd $INVENTORY/ContentsXML

$ grep "$ORACLE_HOME" inventory.xml

$ cd $ORACLE_HOME/oui/bin

$ ./runInstaller -silent -detachHome
ORACLE_HOME=$ORACLE_HOME
ORACLE_HOME_NAME=Ora102Db1

Noter que dans ce cas, vous ne devez exécuter la commande que sur un seul nœud; une fois le ORACLE_HOME détaché, vous pouvez faire un tarball, le supprimer ou le conserver pour le rattacher ultérieurement.

Pour rattacher l’ORACLE_HOME de nouveau, utiliser runInstaller -attachHome comme ci-dessous:

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

$ cd $ORACLE_HOME/oui/bin

$ ./runInstaller -silent -attachHome
-invPtrLoc ../../oraInst.loc
ORACLE_HOME=$ORACLE_HOME
ORACLE_HOME_NAME="Ora102Db1"
"CLUSTER_NODES={rac-server1,rac-server2,rac-server3,rac-server4}"
LOCAL_NODE="rac-server1"

Une fois le ORACLE_HOME rattaché, vous pouvez vérifier avec OPatch qu’il est correctement positionné sur l’ensemble des nœuds du cluster:

$ cd $ORACLE_HOME/OPatch
$ ./opatch lsinv

Voila: Accélérez et fiabiliser encore vos mises à jour de vos environnements RAC.