Tuning Oracle 10g

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Guide historique — préparation système RHEL 5 pour Oracle 10g R2
Voir aussi Serveur oracle · Semaphores.sh

Contenu historique conservé à titre de référence : procédure complète de préparation d'un serveur RHEL 5 / OEL 5 pour l'installation d'Oracle Database 10g R2. Oracle 10g et RHEL 5 sont tous deux en fin de vie depuis longtemps (voir la matrice de fin de support constructeur) ; pour une préparation système actuelle, se reporter à Serveur oracle (checklist générique, versions récentes) et Semaphores.sh (calcul automatisé des paramètres mémoire). Cette page reste utile pour la maintenance d'un existant encore sous 10g/RHEL5 ou par souci de traçabilité historique.

Sources d'origine (à vérifier, liens potentiellement obsolètes côté support Oracle) :

  • "Requirements For Installing Oracle10gR2 On RHEL 5/OEL 5 (x86_64)" — note MOS ID 421308.1
  • "Oracle 10g Server on Red Hat Enterprise Linux 5" — livre blanc Red Hat/Oracle

Installation des paquets

yum install compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \
  elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers \
  kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make \
  sysstat pam vim-enhanced unixODBC unixODBC-devel libXp libXt libXtst

Compatibilité 32 bits (systèmes x86_64 historiques) :

yum install -y compat-libstdc++-33.i386 glibc.i686 glibc-devel.i386 libaio.i386 \
  libaio-devel.i386 libgcc.i386 libstdc++.i386
yum install -y unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686

Utilisateur et groupes

adduser oracle
groupadd oinstall
groupadd dba
usermod -aG oinstall oracle
usermod -aG dba oracle

Configuration du noyau

vi /etc/sysctl.conf
# Tuning Memory
kernel.sem = 250 32000 100 128
# physical RAM size / pagesize — exemples pour 16/32/60 Go de RAM (pagesize 4096)
# 16 Go -> 4194304   32 Go -> 8388608   60 Go -> 15728640
kernel.shmall = 15728640
# physical RAM size / 2 — mêmes exemples
# 16 Go -> 8589934592   32 Go -> 17179869184   60 Go -> 32212254720
kernel.shmmax = 32212254720
kernel.shmmni = 4096
fs.file-max = 327679

# Tuning Network
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
net.ipv4.tcp_rmem = 2097152
net.ipv4.tcp_wmem = 1048576

# HugePages (à configurer en fonction des besoins)
#vm.nr_hugepages =

fs.aio-max-nr = 1048576

# Tuning Page Cache (optionnel)
#vm.min_free_kbytes = 1024
#vm.swappiness = 10
#vm.dirty_background_ratio = 3
#vm.dirty_ratio = 15
#vm.dirty_expire_centisecs = 500
#vm.dirty_writeback_centisecs = 100
sysctl -p

Huge pages

Référence : documentation oracle-base.com sur la configuration des huge pages Linux (à vérifier, l'URL d'origine peut avoir changé de structure sur le site).

Récupérer la taille de page :

grep Huge /proc/meminfo
# Hugepagesize:       2048 kB

Estimation du nombre de pages à réserver :

vm.nr_hugepages = (RAM_Mo * 0.65) / hugepagesize_Ko

Associer le groupe dba aux huge pages :

fgrep dba /etc/group
# dba:x:54322:oracle
vm.hugetlb_shm_group = 54322
vi /etc/security/limits.conf
* soft memlock 626688
* hard memlock 626688

Limites système (limits.conf)

vi /etc/security/limits.conf
oracle  soft    nproc   2047
oracle  hard    nproc   16384
oracle  soft    nofile  1024
oracle  hard    nofile  65536
# Pour les huge pages
oracle  soft    memlock 4194304
oracle  hard    memlock 4194304

Vérifier l'application :

ulimit -a

SSH / PAM

vi /etc/ssh/sshd_config
UsePAM yes
vi /etc/pam.d/login
session    required     pam_limits.so

Profile

vi /etc/profile
if [ $USER = "oracle" ]; then
  ulimit -u 16384
  ulimit -n 65536
fi

Grub (ordonnanceur disque)

vi /etc/grub/grub.conf

Ajouter l'option elevator=deadline à la ligne kernel — ordonnanceur I/O recommandé historiquement pour les charges de type base de données (moins pertinent sur les noyaux/ ordonnanceurs plus récents — à vérifier selon le noyau réellement utilisé) :

kernel /vmlinuz-2.6.18-348.el5 ro root=/dev/vg_root/lv_root elevator=deadline

Voir aussi