Gestion de l’oraInventory – Partie 2 : RAC

Dans mon précédent article « Gestion de l’oraInventory – Partie 1 : Standalone », je vous ai montré la démarche pour recréer l’inventaire Oracle sur une Standalone.

Dans cet article, dans le même cas de figure que le précédent, je vais vous montrer comment gérer l’inventaire Oracle sur un RAC (Real Applications Clusters).

Existe-t-il une différence ?

L’inventaire Oracle permet de référencer toutes les informations des produits Oracle installés sur votre système. Cet inventaire est requis et partagé avec tous les logiciels Oracle du système. Il est utilisé par Oracle à travers les utilitaires OUI (Oracle Universal Installer) et OPatch. Il est identique sur tous les nœuds qui composent le RAC.
Il est localisé au même endroit sous /etc/oraInst.loc.
Il contient les mêmes paramètres :

  • inventory_loc spécifie le répertoire d’inventaire (/app/oraInventory)
  • inst_group spécifie le groupe propriétaire des installations (oinstall)

A quoi ressemble le fichier inventory.xml ?

La différence avec l’inventaire Oracle d’une Standalone se situe dans le fichier inventory.xml. Nous retrouvons des balises <NODE_LIST> qui référencent la liste des nœuds du RAC.
Sous /app/oraInventory/ContentsXML/inventory.xml.

<INVENTORY>
<VERSION_INFO>
   <SAVED_WITH>12.1.0.2.0</SAVED_WITH>
   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDB12Home1" LOC="/app/oracle/product/12.1.0/dbhome_1" TYPE="O" IDX="2">
   <NODE_LIST>
     <NODE NAME="rac1"/>
     <NODE NAME="rac2"/>
     <NODE NAME="rac3"/>
   </NODE_LIST>
</HOME>
<HOME NAME="Ora12g_gridinfrahome1" LOC="/app/1210/grid" TYPE="O" IDX="1" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>

Les balises les plus importantes sont :

  • <HOME_LIST> contient la liste des Oracle Home / Grid Home
  • <NODE_LIST> contient la liste des nœuds du cluster

Recréer l’inventaire Oracle en cas de corruption (RAC)

Si vous rencontrez l’erreur « The Central Inventory is corrupted », vous risquez de devoir reconstruire l’inventaire Oracle.

OPatch failed to locate Central Inventory.
Possible causes are:
   The Central Inventory is corrupted
   The oraInst.loc file specified is not valid.
LsInventorySession failed: OPatch failed to locate Central Inventory.
Possible causes are:
   The Central Inventory is corrupted
   The oraInst.loc file specified is not valid.
OPatch failed with error code 73
   The oraInst.loc file specified is not valid.
OPatch failed with error code 73

Sur RAC, il faut, sur chacun des nœuds, recréer le répertoire de l’orainventory en le sauvegardant au préalable.

[root@rac1]# mkdir /app/oraInventory
[root@rac1]# chmod 770 /app/oraInventory
[root@rac1]# chown grid:oinstall /app/oraInventory (si la Grid Infrastructure est installée sous l’utilisateur “grid”)

Dans un environnement RAC, vous allez devoir recréer l’inventaire en deux étapes avec l’utilitaire OUI (Oracle Universal Installer). Il n’est pas nécessaire de le faire sur chaque nœud car l’inventaire Oracle sera réparti sur tous les nœuds du cluster spécifiés.

1. Attacher l’ORACLE_HOME

$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/app/1210/grid" ORACLE_HOME_NAME="Ora12g_gridinfrahome1" LOCAL_NODE="rac1" CLUSTER_NODES="rac1,rac2" CRS=true

2. Attacher le GRID HOME

$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/app/oracle/product/12.1.0/dbhome_1" ORACLE_HOME_NAME="OraDb12g_home1" LOCAL_NODE="rac1" CLUSTER_NODES="rac1,rac2"

Vérification de l’inventaire Oracle

Le moyen de vérifier le fonctionnement de nos manipulations précédentes est de relancer une commande « lsinventory ». Vous pouvez vérifier dans le résultat de la commande que tous les nœuds du cluster sont présents.

Rac system comprising of multiple nodes
Local node = rac1
Remote node = rac2

A partir de maintenant, vous êtes capable de recréer un inventaire Oracle sur une Standalone et un RAC.