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 :
Red Hat Enterprise Linux Server release 7.1 (Maipo) Kernel \r on an \m
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
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
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
groupadd -g 500 oinstall groupadd -g 501 dba useradd -u 500 -g oinstall -G dba oracle
Les répertoires prévus pour l'installation sont :
mkdir -p /app/oracle chmod 777 /app chown oracle:oinstall /app/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
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
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