Oracle sous Debian

Installation d'Oracle sous Debian :

Bien que Oracle indique clairement que leurs produits ne sont pas maintenu sous un autre système que RedHat, voici une documentation d'installation d'Oracle10g sous Linux Debian Etch 64bits

Téléchargement du produit : http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz

Enregistrer le fichier sur le serveur Linux.

Linux doit être installé de façon minimal avec un serveur X (GnomE, KDE, XFCE ou autres) - Note que dans le cadre d'un serveur de production l'environnement graphique pourra être désactiver après l'installation d'Oracle.

Il faut paramètrer les variables d'environnement du Charset : dpkg-reconfigure locales ( en_US.UTF-8)

Modifier ensuite le fichier /etc/apt/sources.list :

deb http://ftp.fr.debian.org/debian/ etch non-free
deb-src http://ftp.fr.debian.org/debian/ etch non-free

Mettre à la jour les sources de apt :

apt-get update

Installation des paquets necessaires à l'installation de Oracle 10g :

apt-get install cpp-3.3 g++ g++-3.3 g++-4.1 gcc gcc-3.3 gcc-3.3-base gcc-4.1 lesstif2 libaio1 libbeecrypt6 libc6-dev libdb3 libneon25 librpm4 libssp0 libstdc++5 libstdc++5-3.3-dev libstdc++6-4.1-dev linux-kernel-headers rpm unzip sudo

Installer les bibliothèque de compatibilité 32 bits :

apt-get install ia32-libs
apt-get install libc6-dev-i386

Créez des liens symboliques pointant sur le véritable emplacement de ces outils. Voici tous les liens à ajouter pour rendre votre système opérationnel :

ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
ln -s /etc /etc/rc.d
ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so

Créez maintenant un fichier indiquant à Oracle que le système sur lequel il s'installe est un RedHat. Ce fichier servira à Oracle lors de la détection des pré-requis.

echo "Red Hat Linux release 3.0 (drupal)" > /etc/redhat-release

Une des plus grosse différences entre RedHat et Debian est leur système de gestion des paquets : sous Debian, les paquets sont des .deb alors que sous redhat il s'agit de .rpm. Etch traite des rpm à certaines conditions, vous avez peut-être remarqué d'ailleurs qu'au début un paquet Debian en rpm a été installé avec apt. Néanmoins, la structure de gestion des rpm doit être initialisée :

mkdir /var/lib/rpm
rpm --initdb
rpm --rebuilddb

Modification de fichiers systèmes

Module d'authentification        PAM : 
       - vous devez retirer le commentaire de deux lignes (enlever le " # "        en début de ligne) dans deux fichiers : /etc/pam.d/su et /etc/pam.d/login.        
       - la ligne à activer est la suivante (il se peut qu'elle soit déjà        active dans un des deux fichiers) :
       session required pam_limits.so

Paramétrez le kernel ainsi que les sémaphores


Éditez le fichier /etc/sysctl.conf et ajoutez à la fin ces lignes :

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Exécutez la commande suivante :

sysctl -p /etc/sysctl.conf

Modifiez le fichier /etc/security/limits.conf

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 6553

Redémarrez le serveur

Modifiez /etc/profile :

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

Lancer ensuite ces commandes :

groupadd nobody
usermod -g nobody nobody
groupadd dba
groupadd oinstall
groupadd oper
useradd -d /home/oracle -g oinstall -G dba,oper -s /bin/bash oracle

mkdir -p /home/oracle
mkdir -p /u01/app/oracle/product
mkdir -p /u01/app/oracle/oraInventory
mkdir -p /u01/app/oracle/distribs
mkdir -p /u01/app/oracle/distribs/10201_linux64

mkdir -p /u01/oradata
# mkdir -p /oracle/install

chown -R oracle:oinstall /u01


touch /home/oracle/.bashrc
chown -R oracle:oinstall /home/oracle
chmod 644 /home/oracle/.bashrc

Contenu du fichier /home/oracle/.bashrc :

PS1='[ \u sur \h ] \w :'
umask 022
unset USERNAME
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2/db_1
export ORACLE_SID=inapa
#export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib32
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export ORATAB=/etc/oratab
export ORACLE_HOME_LISTENER=$ORACLE_BASE

Placer le fichier 10201_database_linux_x86_64.cpio.gz dans le répertoire : /u01/app/oracle/distribs/10201_linux64

gunzip 10201_database_linux_x86_64.cpio.gz
cpio -idmv < 10201_database_linux_x86_64.cpio

Lancer l'installeur Oracle

/u01/app/oracle/distribs/10201_linux64/database :./runInstaller

Lancer les scripts :

MyDebianServer:/u01/app/oracle/oraInventory/logs# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to oinstall.
The execution of the script is complete


MyDebianServer:/u01/app/oracle/oraInventory/logs# /u01/app/oracle/product/10.2/db_1/root.sh
Running Oracle10 root.sh script...

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2/db_1

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.sh script.
Now product-specific root actions will be performed.

Paramétrez le démarrage automatique d'oracle

touch /etc/init.d/oracle

------

#!/bin/sh
# description: Script de demarrage d'oracle

RETVAL=0
prog="oracle"

export ORACLE_BASE=/oracle/u01/app/oracle
export ORACLE_HOME=/oracle/u01/app/oracle/product
export ORACLE_SID=bdtest #bdtest étant le nom de votre base de donnée
export ORACLE_TERM=xterm
export PATH=/oracle/u01/app/oracle/product/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export ORATAB=/etc/oratab
export ORACLE_HOME_LISTENER=$ORACLE_BASE

case "$1" in
start)
echo -n "Demarrage de ORACLE (assez long)"
sudo -u oracle /oracle/u01/app/oracle/product/bin/lsnrctl start >/dev/null 2>&1
sudo -u oracle /oracle/u01/app/oracle/product/bin/dbstart >/dev/null 2>&1
RETVAL=$?
echo
[ $RETVAL -ne 0 ] && echo "ERREUR - DEMARRAGE NON EFFECTUE"
[ $RETVAL -eq 0 ] && echo "SUCCES - DEMARRAGE SANS PROBLEME"
echo
;;

stop)
echo -n "Arret de ORACLE (assez long): "
sudo -u oracle /oracle/u01/app/oracle/product/bin/lsnrctl stop >/dev/null 2>&1
sudo -u oracle /oracle/u01/app/oracle/product/bin/dbshut >/dev/null 2>&1
RETVAL=$?
echo
[ $RETVAL -ne 0 ] && echo "ERREUR - ARRET NON EFFECTUE"
[ $RETVAL -eq 0 ] && echo "SUCCES - ARRET SANS PROBLEME"
echo
;;

restart)
$0 stop
sleep 5
$0 start
;;

*)
echo "Utilisation: /etc/init.d/oracle {start|stop|restart}" >&2
exit 2
;;

esac

 

-------

 

chown root:root /etc/init.d/ ?oracle
chmod 755 /etc/init.d/oracle
update-rc.d oracle start 90 2 3 45 . stop 10 0 1 6 .


Retour à l'Index Linux