Datalbi  
Créé le 14/08/2015 par Laurent Bourcier

Installation d'Oracle Database 12c sur CentOS 7

Sommaire
1. Introduction
2. Prérequis système
3. Installation du logiciel Oracle Database 12.1.0.2

Introduction

Oracle 12.1.0.2 est certifié sur RHEL 7 et peut donc fonctionner sur Centos 7, qui est une copie conforme de RHEL 7.

L'installation réalisée ici est faite avec Virtual Box pour des besoins de test. En production, il est impératif d'utiliser RHEL 7 sur une machine physique pour des questions de support et de license.

A l'heure où l'article est écrit, la release utilisée pour l'installation est la release 12.1.0.2, ce qui correspond au premier PatchSet d'Oracle 12c.

Les fichiers sont téléchargeable depuis http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

Il faut télacharger :

Prérequis système

Modifier /etc/issue

Pour que Oracle identifie la plate-forme comme compatible Red Hat, il faut modifier le fichier /etc/issue comme suit :
Red Hat Enterprise Linux Server release 7.1 (Maipo)
Kernel \r on an \m

Installer les paquetages RPM requis

Les rpm requis sur CentOS 7 pour Oracle 12c sont :

   openssh (x86_64) ........................... version minimale 1.0.0
   binutils (x86_64) .......................... version minimale 2.23.52.0.1
   compat-libcap1 (x86_64) .................... version minimale 1.10
   gcc (x86_64) ............................... version minimale 4.8.2
   gcc-c++ (x86_64) ........................... version minimale 4.8.2
   glibc (i686) ............................... version minimale 2.17
   glibc (x86_64) ............................. version minimale 2.17
   glibc-devel (i686) ......................... version minimale 2.17
   glibc-devel (x86_64) ....................... version minimale 2.17
   ksh (x86_64) ............................... version minimale 1.0.0
   libaio (i686) .............................. version minimale 0.3.109
   libaio (x86_64) ............................ version minimale 0.3.109
   libaio-devel (i686) ........................ version minimale 0.3.109
   libaio-devel (x86_64) ...................... version minimale 0.3.109
   libgcc (i686) .............................. version minimale 4.8.2
   libgcc (x86_64) ............................ version minimale 4.8.2
   libstdc++ (i686) ........................... version minimale 4.8.2
   libstdc++ (x86_64) ......................... version minimale 4.8.2
   libstdc++-devel (i686) ..................... version minimale 4.8.2
   libstdc++-devel (x86_64) ................... version minimale 4.8.2
   libXi (i686) ............................... version minimale 1.7.2
   libXi (x86_64) ............................. version minimale 1.7.2
   libXtst (i686) ............................. version minimale 1.2.2
   libXtst (x86_64) ........................... version minimale 1.2.2
   make (x86_64) .............................. version minimale 3.82
   sysstat (x86_64) ........................... version minimale 10.1.5
   compat-libstdc++-33 (x86_64) ............... version minimale 3.2.3

Pour vérifier l'installation d'un rpm :

rpm -q --queryformat '%{ARCH} %{NAME}\n' rpm_name

Pour installer le rpm manquant :

yum install rpm_name

Modifier les paramètres du kernel

Les prérequis Oracle notemment pour les segments de mémoire partagés, sont :

   fs.aio-max-nr .............................. requis 1048576
   fs.file-max ................................ requis 6815744
   kernel.shmall .............................. requis au minimum (PhysicalMemory / PageSize) où PageSize = 4096
   kernel.shmmax .............................. requis au minimum (PhysicalMemory / 2)
   kernel.shmmni .............................. requis 4096
   kernel.sem ................................. requis 250 32000 100 128
   kernel.panic_on_oops ....................... requis 1
   net.ipv4.ip_local_port_range ............... requis 9000 65500
   net.core.rmem_default ...................... requis 262144
   net.core.rmem_max .......................... requis 4194304
   net.core.wmem_default ...................... requis 262144
   net.core.wmem_max .......................... requis 1048576

Pour vérifier la valeur des parametres :

sysctl -a | grep parameter_name

Pour modifier les parametres :

vi /etc/sysctl.conf
## Ajouter :

# Oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# End Oracle

## Rafraichir la configuration :
sysctl -p

Modifier /etc/hosts

Si le commande "ping your_hostname" ne répond pas faute de réseau ou de serveur DNS configuré, alors une solution est de renseigner /etc/hosts :

vi /etc/hosts
## Ajouter :

your_ip_address host host.domain

Créer un compte oracle

groupadd -g 500 oinstall
groupadd -g 501 dba
useradd -u 500 -g oinstall -G dba oracle

Créer le répertoire ORACLE_BASE

Les répertoires prévus pour l'installation sont :

On crée donc le répertoire ORABLE_BASE. Le reste de l'arborescence sera créé par l'installer. Les droits linux doivent donc être suffisants.
mkdir -p /app/oracle
chmod 777 /app
chown oracle:oinstall /app/oracle

Configurer les limites du compte Oracle

Oracle préconise les limites suivantes pour le compte oracle :

   nofile Soft at least 1024
   nofile Hard at least 65536
   nproc Soft at least 2047
   nproc Hard at least 16384
   stack Soft at least 10240
   stack Hard at least 10240 at most 32768

Pour vérifier :

## nofile soft & hard
su oracle -c "ulimit -Sn"
su oracle -c "ulimit -Hn"

## noproc soft & hard
su oracle -c "ulimit -Su"
su oracle -c "ulimit -Hu"

## stack soft & hard
su oracle -c "ulimit -Ss"
su oracle -c "ulimit -Hs"

Pour corriger :

vi /etc/security/limits.conf
## Ajouter

oracle           soft    nofile          1024
oracle           hard    nofile          65536
oracle           soft    nproc           4096
oracle           hard    nproc           16384
oracle           soft    stack           10240
oracle           hard    stack           10240

Configurer SELinux

Il est impératif que SELinux soit à l'état Permissive ou Disabled. Il ne doit pas être à l'état Enforcing.

Pour vérifier :

getenforce

La correction nécessite un reboot de la machine :

vi /etc/selinux/config
## Modifier

SELINUX=permissive

## Rebooter
shutdown -r now

Installation du logiciel Oracle Database 12.1.0.2

Démarrer un serveur X depuis le poste client afin de pouvoir travailler en mode X11.

Depuis une fenetre du serveur X se connecter avec le compte oracle

ssh -X oracle@your_ip

décompresser les 2 fichiers zip

cd /home/oracle
unzip linuxamd64_12102_database_1of2.zip
unzip linuxamd64_12102_database_2of2.zip

Lancer l'installation.

cd /home/oracle/database
export ORACLE_BASE=/app/oracle
./runInstaller

# cd /app/oraInventory/
# ./orainstRoot.sh
Modification des droits d'accès de /app/oraInventory.
Ajout de droits d'accès en lecture/écriture pour le groupe.
Suppression des droits d'accès en lecture/écriture/exécution pour le monde.

Modification du nom de groupe de /app/oraInventory en oinstall.
L'exécution du script est terminée.
# cd /app/oracle/product/12.1.0/db12102/
# ./root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /app/oracle/product/12.1.0/db12102

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
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 script.
Now product-specific root actions will be performed.

# du -sh /app/*
5,3G    /app/oracle
1,4M    /app/oraInventory

Mettre a jour le fichier .bash_profile du compte oracle

export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db12102
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin