Datalbi  
Créé le 20/05/2021 par Laurent Bourcier

Installation d'Oracle 19c RAC sous VirtualBox - Partie 1

Sommaire
1. Introduction
2. Création de la première VM
3. Installation de Centos sur la première VM
4. Configuration système de la première VM
5. Création de la deuxième VM par clonage
6. Création des disques partagés
7. Modification Centos vers Red Hat

Introduction

Cet article est le premier d'une série d'articles sur l'installation d'Oracle RAC 19c sous virtualbox, à des fins de test.

Ce premier article traite de la création des VM et leur configuration Système, Réseau et Stockage.

Les logiciels requis pour l'ensemble des opérations seront :

Création de la première VM

Créer une VM sous VirtualBox avec la configuration suivante :

Configurer les cartes réseau de la VM.

Installation de Centos sur la première VM

Sous VirtualBox, aller dans Configuration / Stockage de la VM et insérer le DVD Centos 8 dans le lecteur optique.

DVD Centos : CentOS-8.2.2004-x86_64-dvd1.iso

Démarrer la VM.

Suivre les instructions d'installation comme suit :

Il convient de redémarrer la VM pour terminer la configuration.

Au redémarrage, accepter les termes de licence présentés.

Configuration système de la première VM

Ici, nous allons configurer tous les prérequis système pour Oracle RAC.

Comme il faudra installer des paquetages supplémentaires, il faut un accès internet, grace à l'interface réseau NAT que l'on a déjà configuré.

L'ensemble des actions peut être scriptée dans le shell présenté ci-dessous. Il sera à lancer sous root.

Il comporte entre autre :

Fichier /root/configure_oracle_rac.sh :
#!/usr/bin/bash

# ====================
# runLevel
# ====================
function runLevel
{
  echo "runLevel ..."
  
  currentLevel=`runlevel | awk '{ print $NF }'`
  [[ "$currentLevel" = "3" ]] && echo "Rien a faire" && return 0
  
  init 3
  [[ $? -ne 0 ]] && echo "Erreur init 3" && return 1
  ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
  [[ $? -ne 0 ]] && echo "Erreur ln -sf ..." && return 1
  
  return 0
}

# ====================
# changeEtcHosts
# ====================
function changeEtcHosts
{
  echo ""
  echo "Modify /etc/hosts ..."
  
  racCount=`grep "rac" /etc/hosts | wc -l`
  [[ ${racCount} -ge 9 ]] && echo "Rien a faire" && return 0
  
  echo "# public"                                       >> /etc/hosts
  echo "192.168.56.11 rac1      rac1.localdomain"       >> /etc/hosts
  echo "192.168.56.12 rac2      rac2.localdomain"       >> /etc/hosts
  echo "# virtual"                                      >> /etc/hosts
  echo "192.168.56.21 rac1-vip  rac1-vip.localdomain"   >> /etc/hosts
  echo "192.168.56.22 rac2-vip  rac2-vip.localdomain"   >> /etc/hosts
  echo "# private"                                      >> /etc/hosts
  echo "10.0.1.1      rac1-priv rac1-priv.localdomain"  >> /etc/hosts
  echo "10.0.1.2      rac2-priv rac2-priv.localdomain"  >> /etc/hosts
  echo "# scan"                                         >> /etc/hosts
  echo "192.168.56.31 rac-scan rac-scan.localdomain"    >> /etc/hosts
  echo "192.168.56.32 rac-scan rac-scan.localdomain"    >> /etc/hosts
  echo "192.168.56.33 rac-scan rac-scan.localdomain"    >> /etc/hosts
  
  return 0
}

# ====================
# installRpm
# ====================
function installRpm
{
  echo ""
  echo "Install RPM ..."
  
  for pkg in \
  bc \
  binutils \
  elfutils-libelf \
  elfutils-libelf-devel \
  fontconfig-devel \
  glibc \
  glibc-devel \
  ksh \
  libaio \
  libaio-devel \
  libXrender \
  libX11 \
  libXau \
  libXi \
  libXtst \
  libgcc \
  libnsl \
  librdmacm \
  libstdc++ \
  libstdc++-devel \
  libxcb \
  libibverbs \
  make \
  smartmontools \
  sysstat \
  libvirt-devel \
  libvirt-libs \
  net-tools
  do
    rpm -q --queryformat '%{ARCH} %{NAME}\n' $pkg > /dev/null 2>&1
    if [ $? -ne 0 ]
    then
      printf "%-25s%-10s\n" "${pkg}" "not installed"
      yum -y install ${pkg} > /dev/null 2>&1
    else
      printf "%-25s%-10s\n" "${pkg}" "Ok"
    fi
  done
  
  return 0
}

# ====================
# configureUdev
# ====================
function configureUdev
{
  echo ""
  echo "Configure UDEV ..."
  
  rpm -q --queryformat '%{ARCH} %{NAME}\n' udev > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    yum -y install udev > /dev/null 2>&1
  else
    echo "pkg udev deja installe"
  fi
  
  udevadm control --reload-rules > /dev/null 2>&1
  [[ $? -ne 0 ]] && echo "Erreur reload rules" && return 1
  
  udevadm trigger > /dev/null 2>&1
  [[ $? -ne 0 ]] && echo "Erreur trigger rules" && return 1
  
  return 0
}

# ====================
# selinux
# ====================
function selinux
{
  echo ""
  echo "Configure SELINUX ..."
  
  sed -i.bak "s/^SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
  [[ $? -ne 0 ]] && echo "Erreur sed selinux" && return 1
  
  return 0
}

# ====================
# configureSysctl
# ====================
function configureSysctl
{
  echo ""
  echo "Configure sysctl ..."
  
  grep oracle /etc/sysctl.conf > /dev/null 2>&1
  [[ $? -eq 0 ]] && echo "Rien a faire" && return 0
  
  echo "# Oracle"                                      >> /etc/sysctl.conf
  echo "fs.aio-max-nr = 1048576"                       >> /etc/sysctl.conf
  echo "fs.file-max = 6815744"                         >> /etc/sysctl.conf
  echo "kernel.shmall = 2097152"                       >> /etc/sysctl.conf
  echo "kernel.shmmax = 4294967295"                    >> /etc/sysctl.conf
  echo "kernel.shmmni = 4096"                          >> /etc/sysctl.conf
  echo "kernel.sem = 250 32000 100 128"                >> /etc/sysctl.conf
  echo "net.ipv4.ip_local_port_range = 9000 65500"     >> /etc/sysctl.conf
  echo "net.core.rmem_default = 262144"                >> /etc/sysctl.conf
  echo "net.core.rmem_max = 4194304"                   >> /etc/sysctl.conf
  echo "net.core.wmem_default = 262144"                >> /etc/sysctl.conf
  echo "net.core.wmem_max = 1048576"                   >> /etc/sysctl.conf
  
  sysctl -p > /dev/null 2>&1
  [[ $? -ne 0 ]] && echo "Erreur sysctl -p" && return 1
  
  return 0
}

# ====================
# configureLimits
# ====================
function configureLimits
{
  echo ""
  echo "Configure limits.conf ..."

  grep oracle /etc/security/limits.conf > /dev/null 2>&1
  [[ $? -eq 0 ]] && echo "Rien a faire" && return 0
  
  echo "# grid"                                             >> /etc/security/limits.conf
  echo "grid             soft    nofile          1024"      >> /etc/security/limits.conf
  echo "grid             hard    nofile          65536"     >> /etc/security/limits.conf
  echo "grid             soft    nproc           4096"      >> /etc/security/limits.conf
  echo "grid             hard    nproc           16384"     >> /etc/security/limits.conf
  echo "grid             soft    stack           10240"     >> /etc/security/limits.conf
  echo "grid             hard    stack           10240"     >> /etc/security/limits.conf
  echo "# oracle"                                           >> /etc/security/limits.conf
  echo "oracle           soft    nofile          1024"      >> /etc/security/limits.conf
  echo "oracle           hard    nofile          65536"     >> /etc/security/limits.conf
  echo "oracle           soft    nproc           4096"      >> /etc/security/limits.conf
  echo "oracle           hard    nproc           16384"     >> /etc/security/limits.conf
  echo "oracle           soft    stack           10240"     >> /etc/security/limits.conf
  echo "oracle           hard    stack           10240"     >> /etc/security/limits.conf

  return 0
}

# ====================
# addUsersAndGroups
# ====================
function addUsersAndGroups
{
  echo ""
  echo "Add Groups and Users ..."

  grep "oinstall" /etc/group > /dev/null 2>&1
  [[ $? -ne 0 ]] && groupadd -g 500 oinstall
  
  grep "dba" /etc/group > /dev/null 2>&1
  [[ $? -ne 0 ]] && groupadd -g 501 dba
  
  grep "grid" /etc/passwd > /dev/null 2>&1
  [[ $? -ne 0 ]] && useradd -u 500 -g oinstall -G dba grid
  
  grep "oracle" /etc/passwd > /dev/null 2>&1
  [[ $? -ne 0 ]] && useradd -u 501 -g oinstall -G dba oracle
  
  [[ ! -d /home/grid ]] && echo "Erreur creation user grid" && return 1
  [[ ! -d /home/oracle ]] && echo "Erreur creation user oracle" && return 1
  
  echo "grid" | passwd grid --stdin
  [[ $? -ne 0 ]] && echo "Erreur passwd grid" && return 1
  
  echo "oracle" | passwd oracle --stdin
  [[ $? -ne 0 ]] && echo "Erreur passwd oracle" && return 1
  
  echo "umask 022"                                 >  /home/grid/.bash_profile
  echo "export TMP=/tmp"                           >> /home/grid/.bash_profile
  echo "export TMPDIR=/tmp"                        >> /home/grid/.bash_profile
  echo "export ORACLE_BASE=/u01/app/grid"          >> /home/grid/.bash_profile
  echo "export ORACLE_HOME=/u01/app/19.3.0/grid"   >> /home/grid/.bash_profile
  echo "export PATH=$PATH:$ORACLE_HOME/bin"        >> /home/grid/.bash_profile
  chown grid:oinstall /home/grid/.bash_profile
  chmod 755 /home/grid/.bash_profile
    
  return 0
}

# ====================
# createDirectories
# ====================
function createDirectories
{
  echo ""
  echo "create directories ..."

  mkdir -p /u01/app/oraInventory
  mkdir -p /u01/app/grid
  mkdir -p /u01/app/19.3.0/grid
  mkdir -p /u01/app/oracle
  
  chown -R grid:oinstall /u01
  chown oracle:oinstall /u01/app/oracle
  chmod -R 775 /u01
  
  return 0
}

# ====================
# stopFirewall
# ====================
function stopFirewall
{
  echo ""
  echo "stop firewall ..."

  systemctl stop firewalld > /dev/null 2>&1
  systemctl disable firewalld > /dev/null 2>&1

  return 0
}

# ====================
# main
# ====================
[[ "$USER" != "root" ]] && echo "Vous devez etre root" && exit 1
runLevel
[[ $? -ne 0 ]] && echo "Erreur runLevel" && exit 1
changeEtcHosts
[[ $? -ne 0 ]] && echo "Erreur changeEtcHosts" && exit 1
installRpm
[[ $? -ne 0 ]] && echo "Erreur installRpm" && exit 1
configureUdev
[[ $? -ne 0 ]] && echo "Erreur configureUdev" && exit 1
selinux
[[ $? -ne 0 ]] && echo "Erreur selinux" && exit 1
configureSysctl
[[ $? -ne 0 ]] && echo "Erreur configureSysctl" && exit 1
configureLimits
[[ $? -ne 0 ]] && echo "Erreur configureLimits" && exit 1
addUsersAndGroups
[[ $? -ne 0 ]] && echo "Erreur addUsersAndGroups" && exit 1
createDirectories
[[ $? -ne 0 ]] && echo "Erreur createDirectories" && exit 1
stopFirewall
[[ $? -ne 0 ]] && echo "Erreur createDirectories" && exit 1

echo "Fin normale"

On lance le shell avec le compte root :
cd /root
./configure_oracle_rac.sh

runLevel ...

Modify /etc/hosts ...

Install RPM ...
bc                       Ok
binutils                 Ok
elfutils-libelf          Ok
elfutils-libelf-devel    not installed
fontconfig-devel         not installed
glibc                    Ok
glibc-devel              not installed
ksh                      not installed
libaio                   Ok
libaio-devel             not installed
libXrender               Ok
libX11                   Ok
libXau                   Ok
libXi                    Ok
libXtst                  Ok
libgcc                   Ok
libnsl                   not installed
librdmacm                Ok
libstdc++                Ok
libstdc++-devel          not installed
libxcb                   Ok
libibverbs               Ok
make                     not installed
smartmontools            Ok
sysstat                  not installed
libvirt-devel            not installed
libvirt-libs             Ok
net-tools                Ok

Configure UDEV ...

Configure SELINUX ...

Configure sysctl ...

Configure limits.conf ...

Add Groups and Users ...
Changement de mot de passe pour l'utilisateur grid.
passwd : mise à jour réussie de tous les jetons d'authentification.
Changement de mot de passe pour l'utilisateur oracle.
passwd : mise à jour réussie de tous les jetons d'authentification.

create directories ...

stop firewall ...
Fin normale

On notera la configuration qui a été écrite dans /etc/hosts :

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# public
192.168.56.11 rac1      rac1.localdomain
192.168.56.12 rac2      rac2.localdomain
# virtual
192.168.56.21 rac1-vip  rac1-vip.localdomain
192.168.56.22 rac2-vip  rac2-vip.localdomain
# private
10.0.1.1      rac1-priv rac1-priv.localdomain
10.0.1.2      rac2-priv rac2-priv.localdomain
# scan
192.168.56.31 rac-scan rac-scan.localdomain
192.168.56.32 rac-scan rac-scan.localdomain
192.168.56.33 rac-scan rac-scan.localdomain

Création de la deuxième VM par clonage

Le deuxième noeud de notre cluster RAC sera créé à partir du premier.

Sous VirtualBox, arrêter la machine rac1 et cloner la machine rac1 en rac2 en prenant soin de choisir la politique d'adresse MAC "Générer de nouvelles adresses MAC pour toutes les interfaces réseau".

Démarrer rac2 uniquement et changer les hostname et le réseau comme suit :
hostnamectl set-hostname rac2.localdomain

cd /etc/sysconfig/network-scripts
    
vi ifcfg-enp0s8
    IPADDR=192.168.56.12
    
vi ifcfg-enp0s9
    IPADDR=10.0.1.2

Rebooter la machine rac2

shutdown -r now

vérifier la bonne configuration :
hostnamectl status
   Static hostname: rac2.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ef60bf2a889d48bb88d7980d610c4258
           Boot ID: edeef5db18724b9ba162f95adbe68746
    Virtualization: oracle
  Operating System: CentOS Linux 8 (Core)
       CPE OS Name: cpe:/o:centos:centos:8
            Kernel: Linux 4.18.0-193.el8.x86_64
      Architecture: x86-64

ping -c 1 rac2
PING rac2 (192.168.56.12) 56(84) bytes of data.
64 bytes from rac2 (192.168.56.12): icmp_seq=1 ttl=64 time=0.037 ms

--- rac2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.037/0.037/0.037/0.000 ms

Démarrer rac1.

Créer les clés SSH pour les users oracle et grid puis configurer les équivalences SSH :
# rac1 & rac2
su - oracle -c "ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<&1 >/dev/null"
su - grid -c "ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<&1 >/dev/null"

# rac1
scp /home/oracle/.ssh/id_rsa.pub rac2:/tmp/id_rsa.pub.oracle.rac1
scp /home/grid/.ssh/id_rsa.pub   rac2:/tmp/id_rsa.pub.grid.rac1
# rac2
scp /home/oracle/.ssh/id_rsa.pub rac1:/tmp/id_rsa.pub.oracle.rac2
scp /home/grid/.ssh/id_rsa.pub   rac1:/tmp/id_rsa.pub.grid.rac2

# rac1
su - oracle
cd .ssh
cat id_rsa.pub > authorized_keys
cat /tmp/id_rsa.pub.oracle.rac2 >> authorized_keys
su - grid
cd .ssh
cat id_rsa.pub > authorized_keys
cat /tmp/id_rsa.pub.grid.rac2 >> authorized_keys

# rac2
su - oracle
cd .ssh
cat id_rsa.pub > authorized_keys
cat /tmp/id_rsa.pub.oracle.rac1 >> authorized_keys
su - grid
cd .ssh
cat id_rsa.pub > authorized_keys
cat /tmp/id_rsa.pub.grid.rac1 >> authorized_keys

Vérifier les équivalences SSH pour les comptes oracle et grid. La première fois, la commande ssh demande une confirmation (yes). La fois suivante, la commande ssh s'exécute sans prompt.
# rac1
su - oracle
ssh rac2 hostname
su - grid
ssh rac2 hostname

# rac2
su - oracle
ssh rac1 hostname
su - grid
ssh rac1 hostname

Création des disques partagés

Nous allons créer les disques suivants :

Cette configuration est minimale pour créer une base vide à des fins de test.

Arrêter les 2 noeuds rac1 et rac2.

shutdown now

Sous VirtualBox, aller sur Fichier / Gestionnaire de medias.

Pour chacun des disques créés, le changer en shareable : Fichier / Gestionnaire de medias, cliquer sur disque, puis choisir type : partageable et appliquer.

Ajouter ensuite sur rac1 et rac2 les disques précédents : Configuration / Stockage / Controler SATA / Ajouter Disque dur.

Chacun des 2 noeuds possède maintenant les disques :

Nous allons maintenant formater les disques créés. Ceci est à faire uniquement depuis rac1.

Démarrer rac1 et formater les disques sdb, sdc, sdd, sde, sdf.
# rac1 uniquement
fdisk -l | grep Disque
Disque /dev/sda : 100 GiB, 107374182400 octets, 209715200 secteurs
Disque /dev/sdb : 2 GiB, 2147483648 octets, 4194304 secteurs
Disque /dev/sdc : 2 GiB, 2147483648 octets, 4194304 secteurs
Disque /dev/sdd : 2 GiB, 2147483648 octets, 4194304 secteurs
Disque /dev/sde : 6 GiB, 6442450944 octets, 12582912 secteurs
Disque /dev/sdf : 6 GiB, 6442450944 octets, 12582912 secteurs
Disque /dev/mapper/cl-root : 50 GiB, 53687091200 octets, 104857600 secteurs
Disque /dev/mapper/cl-swap : 4 GiB, 4265607168 octets, 8331264 secteurs
Disque /dev/mapper/cl-home : 45 GiB, 48343547904 octets, 94420992 secteurs

fdisk /dev/sdb
    n (new)
    p (primary)
    1
    enter
    enter
    w (write)
    
fdisk /dev/sdc
    n (new)
    p (primary)
    1
    enter
    enter
    w (write)
    
fdisk /dev/sdd
    n (new)
    p (primary)
    1
    enter
    enter
    w (write)
    
fdisk /dev/sde
    n (new)
    p (primary)
    1
    enter
    enter
    w (write)
    
fdisk /dev/sdf
    n (new)
    p (primary)
    1
    enter
    enter
    w (write)

# Relecture de la table de partitions
/sbin/partx -u /dev/sdb1
/sbin/partx -u /dev/sdc1
/sbin/partx -u /dev/sdd1
/sbin/partx -u /dev/sde1
/sbin/partx -u /dev/sdf1

Nous allons maintenant configurer les règles UDEV pour que les disques partagés soient reconnus et associés à des disques ASM de manière nominative.

Démarrer les deux noeuds rac1 et rac2.

Configurer le fichier /etc/scsi_id.config :
Sur rac1 et rac2
echo "options=-g" >> /etc/scsi_id.config

Lister les identifiants de chaque disque partagé :
# Uniquement sur rac1
/lib/udev/scsi_id -g -u -d /dev/sdb
1ATA_VBOX_HARDDISK_VBad30695d-fbf40945
/lib/udev/scsi_id -g -u -d /dev/sdc
1ATA_VBOX_HARDDISK_VB469cf1b5-0dd6bff1
/lib/udev/scsi_id -g -u -d /dev/sdd
1ATA_VBOX_HARDDISK_VB421b62c6-3cc786e8
/lib/udev/scsi_id -g -u -d /dev/sde
1ATA_VBOX_HARDDISK_VBed201e7f-f3760553
/lib/udev/scsi_id -g -u -d /dev/sdf
1ATA_VBOX_HARDDISK_VB98e98274-cccdfdda

A partir des identifiants obtenus, ajouter les règles UDEV sur rac1 et rac2 :
# rac1 et rac2
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBad30695d-fbf40945", SYMLINK+="asm_crs_01", OWNER="grid", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB469cf1b5-0dd6bff1", SYMLINK+="asm_data_01", OWNER="grid", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB421b62c6-3cc786e8", SYMLINK+="asm_data_02", OWNER="grid", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBed201e7f-f3760553", SYMLINK+="asm_fra_01", OWNER="grid", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB98e98274-cccdfdda", SYMLINK+="asm_fra_02", OWNER="grid", GROUP="dba", MODE="0660"

Redémarrer les 2 noeuds rac1 et rac2 :

shutdown -r now

Après le redémarrage, vérifier que les disques ASM sont bien présents et que les disques /dev/sd[b-f]1 appartiennent à grid :
# sur rac1 et rac2
ls -l /dev/asm*
lrwxrwxrwx. 1 root root 4 21 mai   12:09 /dev/asm_crs_01 -> sdb1
lrwxrwxrwx. 1 root root 4 21 mai   12:09 /dev/asm_data_01 -> sdc1
lrwxrwxrwx. 1 root root 4 21 mai   12:09 /dev/asm_data_02 -> sdd1
lrwxrwxrwx. 1 root root 4 21 mai   12:09 /dev/asm_fra_01 -> sde1
lrwxrwxrwx. 1 root root 4 21 mai   12:09 /dev/asm_fra_02 -> sdf1

ls -l /dev/sd?1
brw-rw----. 1 root disk 8,  1 21 mai   12:09 /dev/sda1
brw-rw----. 1 grid dba  8, 17 21 mai   12:09 /dev/sdb1
brw-rw----. 1 grid dba  8, 33 21 mai   12:09 /dev/sdc1
brw-rw----. 1 grid dba  8, 49 21 mai   12:09 /dev/sdd1
brw-rw----. 1 grid dba  8, 65 21 mai   12:09 /dev/sde1
brw-rw----. 1 grid dba  8, 81 21 mai   12:09 /dev/sdf1

Si un problème subsiste, il est possible de débuger les UDEV au moyen de : udevadm test /block/sdb/sdb1

Modification Centos vers Red Hat

Normalement, Oracle n'est certifié que sur Red Hat et pas sur Centos.Néanmoins, il y a possibilité de faire croire que l'on est sur une Red Hat. Voici la marche à suivre :
# Sur rac1 et rac2

rm -f /etc/redhat-release
echo "Red Hat Enterprise Linux Server release 8.2 (Ootpa)" > /etc/redhat-release

mv /etc/centos-release /etc/centos-release_old

rm -f /etc/system-release
ln -s /etc/redhat-release /etc/system-release

La configuration des deux noeuds du cluster est maintenant terminée.

La deuxième partie de cette série d'article traitera de l'installation d'Oracle Grid Infrastructure et Oracle Database.