Oracle est un système de gestion de base de données relationnel (SGBDR) fourni par Oracle Corporation.
Remarque : La marche à suivre de cet article ne fonctionne que pour les installations 32 bits (et non pas pour 64 bits, amd64).
Oracle Express Edition 10g R2 est la version allégée gratuite d'Oracle voir http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html. (lien ko voir http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html)
C'est vraiment facile de l'installer. Vous n'avez pas besoin de créer les utilisateurs d'Oracle, ou de modifier le fichier sysctr.conf. C'est déjà fait dans le paquet. Avec Oracle XE vous n'aurez droit qu'à une base de données (instance) et son SID (Oracle System ID) vaudra par défaut « XE ».
Comme d'habitude, Oracle a besoin de beaucoup de ressources, avec un minimum pour le serveur de 512 Mio de mémoire vive et de 1024 Mio de Swap ainsi que de 1,5 Gio d'espace disque libre. Ces pré-requis sont vérifiés lors de l'installation du paquet.
Cependant, faites attention, l'espace dédié au swap n'a pas de valeur attribuée par défaut pendant l'installation. Ce lien en anglais décrit ce problème http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html'.
On a besoin seulement d'une bibliothèque et d'un outil. Installez les paquets suivants :
Bon bah là, c'est le régal d'installer un serveur, une ligne de commande et voilà !
dpkg -i oracle-xe-universal_10.2.0.1-0_i386.deb
Si vous avez une architecture 64 bits, vous pouvez forcer l'installation avec
sudo dpkg --force-architecture -i oracle-xe-universal_10.2.0.1-0_i386.deb
Ajouter le dépôt de paquet suivant (ligne à ajouter dans le fichier /etc/apt/sources.list) :
deb http://oss.oracle.com/debian unstable main non-free
Si vous avez un problème de clé lors de “apt-get update”, il faut télécharger et importer la clé du dépôt Oracle :
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
Mettez à jour la liste des paquets des dépôts et installez les trois paquets suivants :
Mise à jour des sources d'installation :
sudo apt-get update
Installation des paquets précédemment présentés :
sudo apt-get install oracle-xe OU sudo apt-get install oracle-xe-universal ET sudo apt-get install oracle-xe-client
Si lors de l'installation du paquet, un message du style :
This system does not meet the minimum requirements for swap space
Et qu'il vous est impossible de re-partitionner le swap, il est possible de créer un fichier de swap comme suit :
sudo dd if=/dev/zero of=/swapfile bs=1M count=100
Où « count » est le nombre de Mio à rajouter à votre swap existant pour arriver au 1006 Mio requis par Oracle XE.
Puis mise au format swap :
sudo mkswap /swapfile
Enfin activation :
sudo swapon /swapfile
Source : Oracle.com
Si lors de l'installation du paquet, un message du style :
You have insufficient diskspace in the destination directory (/usr/lib) to install
Oracle Database 10g Express Edition. The install requires at lease 1.5 GB free on this disk
créer un lien symbolique dans le dossier d'installation /usr/lib dans un endroit ou il y'a de l'espace ex: /home/dossier_personnel
sudo ln -s /home/dossier_personnel/oracle oracle
Pour la configuration, lancer ce script :
/etc/init.d/oracle-xe configure
Il vous demandera les mots de passes SYS et SYSTEM, les ports TCP de Oracle listener et de l'application serveur d'Oracle. Dans la plupart des cas, vous devez laisser libre les ports standards.
Maintenant pour créer users / schema / … Vous avez une jolie interface http pour cela :
http://localhost:8080/apex/
Si vous installez la base de données Oracle sur une machine sans un serveur X, vous devez utiliser un port d'envoi SSH:
ssh -L 8080:localhost:8080 utilisateur@ADRESSE_IP_DE_VOTRE_SERVEUR
Toutes les modifications faites, il faut démarrer Oracle
/etc/init.d/oracle-xe start
Les variables d'environnement ne sont pas définies par le package. Si vous désirez utiliser les commande imp et exp ou éviter de taper le chemin complet de la commande sqlplus il faudra déclarer:
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server export ORACLE_SID=XE
Vous pouvez renseigner les variables d'environnement ORACLE_HOME et ORACLE_SID dans le fichier ~/.bashrc de telle façon à pouvoir les valoriser à chaque fois que vous ouvrirez votre terminal. Placez le code suivant à la fin du fichier ~/.bashrc :
export PATH=$PATH:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server export ORACLE_HOME export ORACLE_SID=XE
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
Exemple :
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server (CORRECT) ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/ (INCORRECT)
Il est intéressant d'ajouter les variables d'environnement “local”. Pour ce faire, ouvrez le fichier suivant :
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
Nous allons modifier ou ajouter de la manière suivante :
ORACLE_SID=XE; export ORACLE_SID ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server; export ORACLE_HOME PATH=$ORACLE_HOME/bin:$PATH; export PATH NLS_LANG=AMERICAN_AMERICA.AL32UTF8; export NLS_LANG LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5
Oracle a besoin d'un utilisateur système et trois nouveaux groupes doivent être ajoutés au système.
# addgroup oinstall # addgroup dba # addgroup nobody # useradd -g oinstall -G dba -p password -d /opt/oracle -s /bin/bash oracle # usermod -g nobody nobody
Note : La structure des répertoires par défaut d'oracle est habituellement /u01 et U01. J'ai choisi d'être plus proche de FHS en mettant /opt/oracle et /opt/oradata :
# mkdir -p /opt/oracle # mkdir /opt/oradata # chown -R oracle:oinstall /opt/ora* # chmod -R 775 /opt/ora*
Commencez par ajouter les lignes suivantes à /etc/sysctl.conf :
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
Exécutez la ligne suivante pour prendre en compte ces modifications :
# sysctl -p
Ensuite, ajoutez les lignes suivantes à /etc/security/limits.conf :
* soft nproc 2407 * hard nproc 16384 * soft nofile 1024 * hard nofile 65536
Maintenant créez les liens symboliques suivants :
# ln -s /usr/bin/awk /bin/awk # ln -s /usr/bin/rpm /bin/rpm # ln -s /usr/bin/basename /bin/basename
Maintenant vous allez volontairement induire en erreur l'installeur en lui faisant croire que vous êtes en train de procéder à l'installation sur une Red Hat, en créant et en ajoutant les lignes suivantes à /etc/redhat-release :
Red Hat Linux release 2.1 (drupal)
En vous connectant avec le login oracle, copiez les fichiers d'installation (probablement à partir d'un CD-ROM) vers un répertoire temporaire :
$ cp -r /installer/files/path/ `mktemp -d`
De manière à lancer l'installateur Oracle sans difficultés, vous devez installer le bon environnement pour qu'il s'y sente à l'aise :
#mkdir /etc/rc.d # ln -s /etc/rc0.d /etc/rc.d/rc0.d # ln -s /etc/rc2.d /etc/rc.d/rc2.d # ln -s /etc/rc3.d /etc/rc.d/rc3.d # ln -s /etc/rc4.d /etc/rc.d/rc4.d # ln -s /etc/rc5.d /etc/rc.d/rc5.d # ln -s /etc/rc6.d /etc/rc.d/rc6.d # ln -s /etc/init.d /etc/rc.d/init.d
En vous assurant que vous êtes toujours dans le même répertoire où vous avez copié les fichiers, lancez l'installateur :
$ ./runInstaller
L'installeur d'Oracle vous arrêtera deux fois durant l'installation, et vous demandera de lancer les scripts qui paramètrent le basique : les permissions, etc… .
Après que vous ayez lancé le deuxième script (root.sh), Oracle installe un service nommé « init.cssd
». Le script « root.sh
» attend 10 minutes que le service soit commencé avant d'aller plus loin. Le message sur la console est le suivant, 600 secondes, soit 10 minutes à attendre :
Expecting the CRS daemons to be up within 600 seconds.
On va donc paramétrer autre chose, profitons ! Il y a 3 choses que vous devez faire. Premièrement, Vous devez éditer /etc/inittab pour paramétrer les runlevels actifs sur 23 (par défaut sur Debian/Ubuntu) à la place de 35 (par défauts sur Red Hat et Suse). C'est cette ligne que vous devez modifier :
h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null
Il faut la remplacer par celle-ci :
h1:23:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null
Ensuite allez à la ligne 83 et remplacer son contenu par
SU="/bin/su"
Enfin, laisser init recommencer le service:
# init q
À ce moment, le script « root.sh
» devrait avoir presque fini, comme prévu et vous devriez pouvoir fonctionner avec l'installeur graphique.
À ce moment, vous devez ajouter un autre script ini pour faire redémarrer Oracle au boot. Mais avant, vous devez faire attention aux liens cassés que l'installeur a créé pour vous:
# rm /etc/rc2.d/[SK]96* # rm /etc/rc3.d/[SK]96* # rm /etc/rc5.d/[SK]96* # update-rc.d init.cssd defaults 96
En dessous, il y a le script init, qui a été amélioré et qui est basé sur [http://www.togaware.com/linux/survivor/Starting_Stopping.shtml]. Ce script démarre / arrête votre environnement oracle, les listeners, et le management de l'interface web de votre entreprise. Vous devriez donc changer ORACLE_HOME, ORACLE_SID, et les variables ORA_OWNR à votre panel d'administration. Il est nommé /etc/init.d/oracledb mais le nom n'a pas d'importance.
#!/bin/bash # # /etc/init.d/oracledb # # Run-level Startup script for the Oracle Instance, Listener, and # Web Interface export ORACLE_HOME=/your/oracle/home/goes/here export ORACLE_SID=oraclesidgoeshere export PATH=$PATH:$ORACLE_HOME/bin ORA_OWNR="oracleownergoeshere" # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_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 and instance startup echo -n "Starting Oracle: " su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start" su $ORA_OWNR -c $ORACLE_HOME/bin/dbstart touch /var/lock/oracle su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole" echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop" su $ORA_OWNR -c $ORACLE_HOME/bin/dbshut rm -f /var/lock/oracle su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole" echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: `basename $0` start|stop|restart|reload" exit 1 esac exit 0
Une fois cela en place, faite un exécutable, et liez-le à tous les runlevels :
# chmod 755 /etc/init.d/oracledb # update-rc.d oracledb defaults 99
Avant vous démarrez votre nouvelle base de donnée, nous avons quelques commandes à faire:
Pour toutes les bases de données, que vous créez et qui seront lancées au boot, vous devriez modifier le fichier /etc/oratab en conséquence.
Par exemple, remplacez :
dbname:/opt/oracle/:N
par :
oracle:/opt/oracle:Y
À ce moment vous devez être prêt à partir. Pour travailler proprement, il y a ces variables à paramétrer :
Il y a beaucoup de manière de faire cela, je vous laisse donc le soin de rechercher de faire cela par vous même ! Une fois que vous rebootez et redémarrer la base de donnée, vérifiez que tout est en place. C'est à dire que tout est lancé normalement par sqlplus ou loggez-vous à cet interface web:
http://urlgoeshere.com:5500/em
C'est parti !