Résumé Le célèbre SGBDR Oracle est disponible dans sa version 10g depuis le mois de Février 2004. Cet article a pour objectif de vous aider dans la procédure d'installation, souvent complexe, du SGBD sous système GNU/Linux. Se basant essentiellement sur l'exemple d'une installation sous Debian SID, l'article se voudra néanmoins le plus ouvert possible pour faciliter son adaptation à d'autres distributions.
Sommaire Introduction 1. Préparatif 1.1. Prérequis 1.2. Paramètres noyau 1.3. Paramètres systèmes 1.4. Utilisateurs et groupes 1.5. Système de fichiers 1.6. Environnement de l'utilisateur oracle 2. Installation 2.1. Installation des logiciels requis 2.2. Téléchargement de l'archive d'installation 2.3. Faire diversion 2.4. Installation d'Oracle 3. Post-Installation 3.1. Lancer et arrêter le serveur 3.2. Outils Oracle Conclusion
Introduction Depuis le mois de février 2004, la nouvelle version du célèbre SGBDR Oracle est disponible: Oracle Database 10g. Cette nouvelle version apporte bien entendu des nouveautés comme l'apparition de l'ASM pour Automatic Storage Management (fini les fastidieux redimensionnements de tablespace) ou un tout nouveau Enterprise Manager qui a abandonné le couple Java/Swing au profit d'une interface Web. Comme a son habitude, Oracle propose cette version en libre téléchargement pour un usage strictement privé sur http://otn.oracle.com (nécessite une inscription). La version Unix/Linux est d'ores et déjà disponible sur le site. Le but de cet article, vous l'aurez compris, est de vous aider à installer Oracle Database 10g sur votre système Linux. L'article se voudra le plus généraliste possible en essayant dans la plupart des cas de proposer des solutions pour différentes distributions même s'il a été rédigé à partir d'une installation sur Debian SID.
1. Préparatif
1.1. Prérequis Oracle est comme à son accoutumée trés gourmand en ressources système. En effet, la documentation recommande les spécifications matérielles minimales suivantes: Items
Valeur minimale
Commande
Mémoire physique
512 Mo
grep MemTotal /proc/meminfo
Fichier d'échange (SWAP)
1 Go
grep SwapTotal /proc/meminfo
Espace libre temporaire (/tmp)
400 Mo
df -h /tmp
Espace libre pour l'application
2,5 Go
df -h /
Espace nécessaire à la création d'un base 1,2 Go de données
df -h /
Comme vous le voyez les spécifications matérielles requises sont relativement importantes surtout au niveau mémoire vive et taille du fichier d'échange. Si vous disposez de plusieurs disques durs, le mieux serait d'avoir une partition ou un fichier d'échange sur le disque le plus rapide. Pour information, la machine qui sert de support à cet article est un portable IBM T40P, 512 Mo de mémoire vive, avec un disque dur de 40 Go dont un total de 1,7 Go de swap. Si vous pensez être un peu limite au niveau mémoire disponible (mémoire vive un peu juste ou partition swap trop petite) vous pouvez augmenter la quantité de mémoire disponible de 2 manières:
Utiliser une partition d'un autre disque dur pour en faire une partition d'échange. Pour cela créer une partition de type swap dans votre système de fichiers et montez là dynamiquement via la commande : # swappon <device>. Vous pouvez dans ce cas démonter manuellement la partition avec la commande: # swapoff <device>.
Créer un fichier d'échange qui fonctionnera sur le même principe que la partition d'échange mais qui vous évitera un partitionnement inutile: Pour cela, on va créer un fichier temporaire de swap comme indiqué : # # # # #
su - root dd if=/dev/zero of=tmpswap bs=1k count=900000 chmod 600 tmpswap mkswap tmpswap swapon tmpswap
Vous avez maintenant un fichier tmpswap qui fait office de partition d'échange.
Il est également bon de préciser que la présence d'un serveur graphique est obligatoire pour l'installation contrairement aux versions précédentes.
1.2 Paramètres noyau Il est nécessaire de modifier les paramètres du noyau pour qu'ils répondent aux spécifications du tableau suivant : Paramètre
Valeur
Fichier
semmsl semmns semopm semmni
50 32000 100 128
/proc/sys/kernel/sem
shmall
209715
/proc/sys/kernel/shmall
shmmax
Moitié de la RAM
/proc/sys/kernel/shmmax
shmmni
4096
/proc/sys/kernel/shmmni
file-max
65536
/proc/sys/fs/file-max
ip_local_port_range
1024 65000
/proc/sys/net/ipv4/ip_local_port_range
Vous pouvez récupèrer la valeur des paramètres ci-dessus par la commande suivante : # /sbin/sysctl -a | grep <paramètre> Si les valeurs trouvées ne correspondent pas aux indications précédentes, ajouter ou éditer les lignes suivantes de votre fichier /etc/sysctl.conf : kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 Les valeurs rentrées seront alors permanentes et auront effet seulement aprés un redémarrage de la machine. Vous pouvez appliquer les modifications immédiatement en exécutant la commande : # /sbin/sysctl -p
1.3. Paramètres système Il vous faut maintenant modifier certaines limites de votre système pour en augmenter les performances sous Oracle Database 10g. En effet, bien que les paramètres par défaut conviennent pour une utilisation personnelle, pour des bases plus importantes il convient de les modifier Tout d'abord, ajoutez les lignes suivantes dans le fichier /etc/security/limits.conf : * * * *
soft hard soft hard
nproc nproc nofile nofile
2047 16384 1024 65536
Ensuite, si elle n'existe pas, ajoutez la ligne suivante dans le fichier /etc/pam.d/login : session required /lib/security/pam_limits.so Enfin, étendez les propriètés de votre shell pour l'utilisateur oracle (nous verrons plus tard comment créer cet utilisateur):
Si vous êtes dans un environnement bash (la plupart des cas), ajoutez les lignes suivantes à votre fichier /etc/profile :
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
Si vous disposez d'un shell C ou tcsh, ajoutez les lignes suivantes dans le fichier /etc/csh.login :
if ( $USER == "oracle" ) then limit maxproc 16384 limit descriptors 65536 endif
1.4. Utilisateurs et groupes Pour fonctionner, Oracle nécessite la création de l'utilisateur oracle et des groupes dba et oinstall. Vous pouvez les créer soit à l'aide d'un outil graphique (kuser, gnome-system-tools, ...) soit avec les commandes listées ci-dessous :
Le groupe oinstall est le propriétaire des fichiers installés par Oracle. Pour le créer, entrez la commande suivante en root : # /usr/sbin/groupadd oinstall
Le groupe dba est le propriétaire de la base de données. Créez-le avec la commande suivante : # /usr/sbin/groupadd oinstall
Enfin créez l'utilisateur oracle qui correspondra au compte sous lequel Oracle Database 10g s'exécutera. Vous devez faire attention à ce que le groupe dba soit le groupe principal de l'utilisateur oracle: # /usr/sbin/useradd -g oinstall -G dba oracle N'oubliez pas d'attribuer un mot de passe à votre utilisateur oracle: # passwd oracle
1.5. Système de fichiers Oracle a publié un guide de bonne conduite qui vise à augmenter ses performances sur systèmes Unix: les règles OFA (Optimal Flexible Architecture). Vous pouvez vous y conformer en créant les répertoires suivants en root: # mkdir -p /u01/app/oracle # chown -R oracle.oinstall /u01 # chmod -R 775 /u01/ # mkdir -p /u02/oradata/test # chown -R oracle.oinstall /u02 # chmod -R 775 /u02/< Le répertoire /u02 n'est pas nécessaire, mais il peut être avantageux de séparer les données de l'application de la base de données en elle-même. Le répertoire /u02/oradata/test sera donc le repertoire où se trouve les fichiers de données de la base de données test. Dans un souci de performance, mettez /u01 et /u02 sur des disques durs différents.
1.6. Environnement de l'utilisateur oracle L'installation étant lancée par l'utilisateur oracle, on a besoin de deux variables d'environnement : $ORACLE_BASE qui correspond au répertoire d'installation du logiciel Oracle et $ORACLE_SID qui est le nom de l'instance de la base que l'on veut crée. Pour initialiser ces variables, loguez vous en tant qu'utilisateur oracle. # su - oracle Ensuite entrez les commandes suivantes pour l'initialisation des variables: # export ORACLE_BASE=/u01/app/oracle # export ORACLE_SID=test Vous pouvez également créer ou éditer le fichier /home/oracle/.bash_profile et y entrer les lignes suivantes: ORACLE_BASE=/u01/app/oracle ORACLE_SID=data export ORACLE_BASE ORACLE_SID Pour vérifier l'initialisation de ces variables vous pouvez utiliser la commande : # env | grep ORACLE D'autre part, pendant le processus d'installation les variables ORACLE_HOME et TNS_ADMIN ne doivent pas être présentes. Pour cela, servez vous des commandes: # unset ORACLE_HOME # unset TNS_ADMIN
2. Installation
2.1. Installation des logiciels requis Sous debian SID vous devez avoir les paquets suivants:
• • • • • • • • •
gcc 2.95 make binutils libc6 libstdc++2.10-glibc2.2 libstdc++2.10-dev libmotif3 rpm awk
Si vous souhaitez installer Oracle sur une distribution autre que Debian sachez que certains noms de packages sont particuliers à cette distribution. Ainsi, libc6 est plus souvent trouvé sous le nom glibc et openmotif est prefèré à libmotif3. Certains versions des packages sont également nécessaires. Parcourez la documentation en ligne d'Oracle pour plus de précision. Néanmoins, il est bon de préciser qu'il est fortement recommandé d'avoir à sa disposition une version de la glibc supérieure à 2.3.1 (c'est le cas pour Debian SID et pour la plupart des distributions récentes). En effet, un bug récurrent dans cette version nécessitait un patch pour avoir une installation Oracle fonctionnelle. Pour éviter certains problèmes lors de la procédure d'installation vous devrez également exécuter les commandes suivantes: # ln -s /usr/bin/awk /bin/awk # ln -s /usr/bin/rpm /bin/rpm
2.2. Téléchargement de l'archive d'installation Oracle 10g est disponible en libre téléchargement pour un usage strictement privé. Si ce n'est pas déjà fait, téléchargez maintenant l'archive d'installation d'Oracle en vous rendant sur http://otn.oracle.com et en téléchargeant le fichier ship.db.cpio.gz (611,574,473 bytes) (cksum 306399691) Vous devrez pour cela passer par une courte phase d'inscription sur le site. Une fois l'archive récupérée usez des commandes suivantes pour décompresser l'archive: $ gunzip ship.db.cpio.gz $ cpio -idmv < ship.db.cpio Vous devriez avoir maintenant un répertoire Disk1 contenant les fichiers d'installation Oracle.
2.3. Faire diversion Oracle Database 10g est pour le moment certifié seulement pour les systèmes Redhat Linux Advanced Server 2.1 et United Linux. La conséquence directe en ce qui nous concerne est la vérification du système d'exploitation lors de l'installation. En effet, même si Oracle Database 10g peut fonctionner sans problème sous d'autres systèmes que ceux certifiés, l'installateur ne voudra tout simplement pas se lancer. Il existe néanmoins une ruse (une bidouille?) pour éviter ce petit désagrément. Tapez donc les commandes suivantes: # su - root # cat > /etc/redhat-release << EOF Red Hat Enterprise Linux AS release 3 (Taroon) EOF L'installateur devra maintenant considérer votre linux comme un système certifié. Une autre méthode pour parvenir à ce résultat est de lancer le programme d'installation avec l'option -ignoreSysPrereqs
2.4. Installation d'Oracle Il s'agit de la phase la plus facile pour vous. En effet, il vous suffit de lancer l'installateur graphique sous l'identité oracle. Pour cela, lancez votre environnement graphique habituel avec votre utilisateur habituel. Ouvrez ensuite un émulateur de terminal (xterm, aterm, konsole, ...) et procédez comme suit: $ xhost + $ su - oracle
$ cd $ ./runInstaller L'installateur graphique Java devrait alors se lancer. Si l'application se termine subitement avant de lancer la partie graphique vous pouvez essayer de la lancer de la manière suivante: $ ./runInstaller -ignoreSysPrereqs qui ignorera les vérifications au lancement de l'installateur (./runInstaller -help pour plus d'informations). Vous devez maintenant vous retrouver devant l'écran de bienvenue de l'installateur graphique:
Le reste de la procédure n'est pas trés compliqué. Tout d'abord sélectionnez les répertoires où seront installés l'application
Vous pouvez maintenant sélectionner votre type d'installation (Enterprise, Standard ou Personnalisée):
Pensez également à sélectionner la langue de l'installation (autre que anglais):
Aprés la phase de vérification, arrive l'étape de création de la base de données. Cette étape est facultative et peut être relancée manuellement aprés l'installation.
Pour un usage personnel ou pour effectuer des tests prefèrez l'option "General Purpose" qui vous permettra d'avoir une base de données fonctionnelle dès la fin de l'installation. Pensez aussi à activer l'option "Sample schema" si vous voulez dès le départ disposer d'un lot de tests. Une fois la base de données configurée par vos soins, le processus d'installation démarre :
Vous pourrez sans doute vous retrouver devant 2 erreurs de compilation pendant le processus d'installation. Ignorez-les et continuez le processus d'installation :
Le reste de la procédure devrait se passer normalement. Notez cependant les 2 erreurs rpm dans la console. N'y tenez pas compte, elles n'auront pas d'effet sur votre installation.
root.sh Lors du processus d'installation il vous sera demandé de lancer le script root.sh. Pour cela, ouvrez un autre terminal, loguez vous en root et lancez le script indiqué. Une fois le script terminé (peut prendre plusieurs minutes), validez son exécution dans l'installateur et continuez la procédure d'installation.
Sous Debian, il est préferable de modifier le script pour l'adapter aux particularités du système. Pour cela editez le script avec votre éditeur préferé et remplacez toutes les occurences de rc.d/rc#.d par rc#.d (où # est un numéro). Aprés environ 20 minutes d'installation vous vous retrouverez devant l'écran de résumé:
Si vous êtes arrivé à ce stade, bravo, Oracle 10g est installé sur votre système!
3. Post-Installation
3.1. Lancer et arrêter le serveur Nous allons dans cette partie créer un script qui va nous permettre de lancer et arrêter Oracle 10g à la volée en utilisant la commande /etc/init/oracle start|stop. Pour cela, nous aurons besoin de modifier le fichier /etc/oratab et de créer le script approprié dans /etc/init.d.
/etc/oratab Tout d'abord, éditez le fichier /etc/oratab. Ce fichier indique au serveur Oracle quelle base de données devra être démarrée lorsque la commande dbstart() sera lancée. La syntaxe est la suivante: SID:ORACLE_HOME:AUTO_START où SID est l'identifiant de la base de données (celui que vous avez donné à l'installation), ORACLE_HOME le répertoire d'installation d'Oracle, et AUTO_START une variable qui prendra Y si vous voulez un démarrage automatique et N dans le cas contraire. Un exemple de configuration: data:/u01/app/oracle/product/10.1.0/db_1:N qui signifie que la base dont le SID est data ne devra pas démarrer automatiquement.
Le script Maintenant créez le fichier /etc/init.d/oracle dont le contenu est la suivant:
#!/bin/bash # # Run-level Startup script for the Oracle Instance and Listener # # chkconfig: 345 91 19 # description: Startup/Shutdown Oracle listener and instance ORA_HOME="/u01/app/oracle/product/10.1.0/db_3" ORA_OWNR="oracle" # if the executables do not exist -- display error if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ] then
echo "Oracle startup: cannot start" exit 1
fi
# depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener echo -n "Starting su - $ORA_OWNR -c su - $ORA_OWNR -c
and instance startup Oracle: " "$ORA_HOME/bin/lsnrctl start" $ORA_HOME/bin/dbstart
#Optional : for isqlplus only su - $ORA_OWNR -c "$ORA_HOME/bin/isqlplusctl start" #Optional : for Enterprise Manager software only su - $ORA_OWNR -c "$ORA_HOME/bin/emctl start dbconsole" touch /var/lock/subsys/oracle echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " #Optional : for isqlplus only su - $ORA_OWNR -c "$ORA_HOME/bin/isqlplusctl stop" #Optional : for Enterprise Manager software only su - $ORA_OWNR -c "$ORA_HOME/bin/emctl stop dbconsole" su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop" su - $ORA_OWNR -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: $0 start|stop|restart|reload" exit 1 esac exit 0 Rendez ensuite le script exécutable grâce à la commande: # chmod u+x /etc/init.d/oracle Vous pouvez maintenant démarrer et arrêter le serveur Oracle à l'aide des commandes: $ /etc/init.d/oracle start $ /etc/init.d/oracle stop
3.2 Outils Oracle En plus du serveur Oracle en lui-même, Oracle met à votre disposition plusieurs outils graphiques ou pas pour faciliter l'administration du serveur. Si vous avez quelques difficultés pour lancer les outils présents ci-dessous assurez-vous d'avoir l'identité de l'utilisateur Oracle lorsque vous les lancez.
Enterprise Manager L'une des grosses nouveautés d'Oracle 10g est l'apparition du nouvel Enterprise Manager. En effet, celuici abandonne l'interface Java/Swing au profit d'une interface Web. Pour avoir accès à Enterprise Manager ouvrez votre navigateur web préféré et tapez l'url suivante : http://localhost:5500/em. Loguez vous sur l'application, passez les pages d'annonces et vous devriez arriver sur cette page:
iSQL*Plus iSQL*Plus est un outil qui vous permet d'exécuter des requêtes SQL ou des scripts SQLP depuis une interface Web. Vous trouverez cet outil à l'adresse http://127.0.0.1:5560/isqlplus.
Il existe un équivalent à iSQL*Plus en ligne de commande. Vous pouvez le lancer avec la commande :
$ sqlplus
SQL*Plus: Release 10.1.0.2.0 Production on Wed May 5 23:57:52 2004 Copyright (c) 1982, 2004, Oracle.
All rights reserved.
Enter user-name:
DBCA DBCA (DataBase Configuration Assistant) est un outil graphique qui vous permet de gérer les bases de données présentes sur votre serveur Oracle. L'application peut être lancée par la commande: $ dbca
Ultrasearch Ultrasearch est un outil mis à disposition par Oracle pour interroger toutes les sources d'informations de votre entreprise simultanément. Vous trouverez cet outil à l'adresse suivante : http://127.0.0.1:5620/ultrasearch
Conclusion Voilà, c'est ici que se termine cet article. J'espère sincèrement qu'il a pu vous aider dans votre décision d'installer Oracle 10g sous système GNU/Linux. Comme vous avez pu le voir, la préparation du système est un élément indispensable à la bonne marche de l'installateur. Sachez toutefois que certaines distributions comme Suse proposent déjà un système prêt à recevoir un serveur Oracle et vous facilitent donc un peu la tâche.
Bibliolink David on Net Togaware.com Werner's Oracle Linux Page Forum Développez.com: Installation Oracle 10g sous Linux