Personal tools
You are here: Home GNU / Linux Debian 4.0 Etch Installer un serveur Oracle 11g sur Debian 5.0 Lenny
Document Actions
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer un serveur Oracle 11g sur Debian 5.0 Lenny

by Pierre-Yves Landuré last modified 2011-08-18 15:44

Oracle est un système de gestion de base de données (SGBD) très répandu dans le domaine de l'entreprise. Personnellement, je trouve que dans 99% des cas, MySQL ou PostgreSQL font parfaitement l'affaire... mais on ne lutte pas contre les DSI. Cet article vous guide au travers de l'installation d'un serveur Oracle 11g sur Debian 5.0 Lenny.

Prérequis

Oracle nécessite les prérequis suivants :

  • 4Go d'espace disque libre environ (3,85 Go... mais arrivé la... le détail ne sert à rien) (et c'est sans compter les 2 Go de fichier téléchargé) (bref, mettez au moins 10 Go sur le "/") (Voir 15 Go) (Ou alors, 5 Go de /, et 10 Go de /opt).
  • 1 Go de RAM au moins.
  • 1,5 Go de swap au moins.

Afin que notre processus d'installation se déroule correctement, nous avons besoin de quelques prérequis :

/usr/bin/apt-get install unzip curl x11-utils \
                         binutils libstdc++5 libelf-dev \
                         gcc g++ libc6-dev libaio-dev \
                         make sysstat ksh rpm gcc-multilib \
                         libc6-dev-i386

Nous initialisons la base de données de RPM :

/usr/bin/rpm --initdb

L'installation d'Oracle nécessite la création de nouveaux groupes et utilisateurs.

/usr/sbin/addgroup --system oinstall
/usr/sbin/addgroup --system dba
/usr/sbin/addgroup --system oper
/usr/sbin/addgroup --system asmadmin
/usr/sbin/adduser --system --shell /bin/bash --home /opt/oracle --ingroup oinstall oracle
/usr/sbin/adduser oracle dba
/usr/sbin/adduser oracle oper
/usr/sbin/adduser oracle asmadmin

L'utilisateur nobody est aussi nécessaire, mais il est déjà disponible sur un système debian de base, comme indiqué par la commande :

id nobody

Nous calculons la valeur de la moitié de la quantité de mémoire du système :

HALF_MEM=$(($(/bin/cat /proc/meminfo \
              | /bin/grep MemTotal \
              | /bin/sed -e 's/^MemTotal:[ ]*\([0-9]*\) .*/\1/') * 1024 / 2))

Nous configureons les paramètres du noyau nécessaires au bon fonctionnement d'Oracle :

/bin/echo "# Oracle Sysctl configuration
fs.file-max = 65535

# Shared memory parameters
kernel.shmall = 2097152
kernel.shmmax = ${HALF_MEM}
kernel.shmmni = 4096

# Semaphore parameters
kernel.sem = 250 32000 100 128

# Network parameters
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
" > /etc/sysctl.d/oracle.conf

Une fois le fichier de configuration créé, chargez les paramères :

/etc/init.d/procps restart

Afin d'augmenter les performances de notre système, nous augmentons les limites du shell pour l'utilisateur Oracle. Pour ce faire, utilisez la ligne de commande suivante :

/bin/echo "# Raising shell limits for oracle user.
# Increase Oracle databases performances.
oracle           soft    nproc   2047
oracle           hard    nproc   16384
oracle           soft    nofile  1024
oracle           hard    nofile  65536" >> /etc/security/limits.conf

Une fois ceci fait, nous créons le dossier destiné à contenir l'installation d'oracle (et les bibliothèques partagées) :

/bin/mkdir --parent /opt/oracle/app
/bin/chown -R oracle:oinstall /opt/oracle/app
/bin/chmod 775 /opt/oracle/app

Si vous utilisez un système 64bit, nous remplaçons temporairement certains fichiers de /usr/lib par des lien symboliques vers leur version 32 bit :

/bin/mv /usr/lib64 /usr/lib64.old
/bin/cp -a /usr/lib /usr/lib64
/bin/mv /usr/lib/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a.bck
/bin/mv /usr/lib/libc_nonshared.a /usr/lib/libc_nonshared.a.bck
/bin/ln -s /usr/lib32/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
/bin/ln -s /usr/lib32/libc_nonshared.a /usr/lib/libc_nonshared.a

Nous créons les liens symbolique pour les applications dont Oracle est incapable de détecter le chemin (once again... RPM sucks) :

/bin/ln -s /usr/bin/rpm /bin/rpm
/bin/ln -s /usr/bin/awk /bin/awk
/bin/ln -s /usr/bin/basename /bin/basename

Nous configurons l'environnement de l'utilisateur oracle dont nous allons nous servir pour installer Oracle. En premier lieu, nous copions le squelette du fichier .bashrc :

/bin/cp /etc/skel/.* /opt/oracle/
/bin/chown oracle:oinstall /opt/oracle/.*

Enfin, nous copions le id_rsa.pub de la machine hébergeant le serveur X dans le fichier authorised_keys de l'utilisateur Oracle.

/bin/mkdir /opt/oracle/.ssh
/bin/cat "${HOME}"/id_rsa.pub >> /opt/oracle/.ssh/authorised_keys
/bin/chown -R oracle:oinstall /opt/oracle/.ssh

Nous assignons un mot de passe à l'utilisateur oracle, de façon à pouvoir l'utiliser avec une connexion SSH :

passwd oracle

Nous pouvons maintenant passer à l'installation d'Oracle. Vous pouvez vous deconnecter de votre serveur Oracle, nous allons nous y reconnecter avec le compte oracle :

exit

Installation d'Oracle

Téléchargement de l'installeur d'Oracle

Obtenez la dernière version d'Oracle pour GNU/Linux i386 ou amd64 en le téléchargeant depuis la page :

Oracle Database Software Downloads

Remarque : Il est nécessaire de s'inscrire pour télécharger l'installeur :(.

Une fois inscrit, si vous souhaitez télécharger l'installeur depuis le serveur cible.

L'installation d'Oracle nécessite la présence d'un serveur X (kof). Ne souhaitant pas mettre en place un serveur X sur le serveur de base de données (parceque faut pas déconner non plus), nous allons établir un tunnel SSH avec support du protocole X11 depuis notre machine de bureau, disposant d'un serveur X, vers le serveur ou sera installé la base de donnée Oracle.

Identifiez-vous comme l'utilisateur oracle sur le serveur en utilisant cette ligne de commande :

/usr/bin/ssh -Y -C oracle@www.mon-serveur-oracle.com

Remarque : L'option -C compresse la connexion, et l'option -Y va nous permettre d'utiliser des programmes nécessitant X via la connexion SSH : C'est indispensable pour lancer l'installation d'Oracle.

Renseignez vos identifiants pour le site Oracle :

ORACLE_USERNAME=email@domain.com
ORACLE_PASSWORD=my-password

Nous récupérons l'IP de la connexion Internet serveur :

IP_ADDRESS=$(/usr/bin/wget -q http://www.monip.org/ -O- \
    | /bin/grep "IP :" | /usr/bin/cut --characters=-80 \
    | /bin/sed -e 's/^.* \(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*$/\1/')

Nous renseignons le nom du fichier que nous souhaitons télécharger :

  • Pour la version amd64 :

    FILENAME=linux.x64_11gR1_database_1013.zip
  • Pour la version i386 :

    FILENAME=linux_11gR1_database_1013.zip

Nous utilisons curl pour nous identifier sur le serveur Oracle, et télécharger l'installeur :

/usr/bin/curl --data-urlencode "remoteIp=${IP_ADDRESS}" \
              --data-urlencode 'globalId=' \
              --data-urlencode "redirectUrl=http://download-llnw.oracle.com/otn/linux/oracle11g/${FILENAME}" \
              --data-urlencode "onFailRedirectUrl=/jsp/realms/otnWrongPassword.jsp?nexturl=http://download-llnw.oracle.com/otn/linux/oracle11g/${FILENAME}" \
              --data-urlencode "username=${ORACLE_USERNAME}" \
              --data-urlencode "password=${ORACLE_PASSWORD}" \
              --data-urlencode "submit=Continue" \
              --referer "http://profile.oracle.com/jsp/realms/otnLogin.jsp?remoteIp=${IP_ADDRESS}&globalId=&redirectUrl=http%3a%2f%2fdownload-llnw.oracle.com%3a80%2fotn%2flinux%2foracle11g%2f${FILENAME}" \
              --user-agent 'Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1' \
              --location --cookie-jar /tmp/cookie.jar \
              --output "/opt/oracle/${FILENAME}" \
              https://profile.oracle.com/jsp/reg/loginHandler.jsp

Nous décompressons le fichier téléchargé :

/usr/bin/unzip -d "/opt/oracle" "/opt/oracle/${FILENAME}"

Installation d'Oracle

Nous renseignons les dossiers ou nous souhaitons installer Oracle :

export ORACLE_BASE=/opt/oracle/app/oracle
export ORACLE_SID=my_database

Remarque : my_database est le nom de votre base de données. Vous pouvez l'adapter à votre besoin.

Nous nous assurons qu'aucune variable indésirable ne vienne perturber notre installation :

unset ORACLE_HOME
unset TNS_ADMIN

Nous remplaçons le binaire "unzip" fourni avec oracle par celui de notre système :

/bin/mv /opt/oracle/database/install/unzip /opt/oracle/database/install/unzip.back
/bin/ln -s /usr/bin/unzip /opt/oracle/database/install/unzip

Une fois ceci fait, nous lançons l'installation :

/opt/oracle/database/runInstaller -ignoreSysPrereqs
  • Étape 1 : Cliquez sur "suivant".
    Installation d'Oracle : étape 1
  • Étape 2 : Cliquez sur "suivant".
    Installation d'Oracle : étape 2
  • Étape 3 : Choisissez le type d'installation (personnellement, j'utilise Standard Edition), et cliquez sur "suivant".
    Installation d'Oracle : étape 3
  • Étape 4 : Cliquez sur "suivant".
    Installation d'Oracle : étape 4
  • Étape 5 : Cliquez sur "suivant". Une boite d'avertissement s'affiche alors. Ignorez-la et cliquez sur "Oui".
    Installation d'Oracle : étape 5 Installation d'Oracle : étape 5 - boite d'alerte
  • Étape 6 : Choisissez "Installer le logiciel uniquement", et cliquez sur "suivant".
    Installation d'Oracle : étape 6
  • Étape 7 : Cliquez sur "suivant".
    Installation d'Oracle : étape 7
  • Étape 8 : Oracle s'installe durant cette étape. C'est le moment de la pause café. À la fin du processus d'installation, une boite de dialogue s'affiche vous demandant d'exécuter certains scripts en tant que root. Cliquez sur Ok, ce point étant abordé plus loin dans ce guide.
    Installation d'Oracle : étape 8 Installation d'Oracle : étape 8 - boite de dialogue
  • Étape 9 : Cliquez sur "Quitter"
    Installation d'Oracle : étape 9

Une fois l'installation terminée, exécutez en tant que root les deux commandes indiquées dans la dernière boite de dialogue :

/bin/su -c "/opt/oracle/app/oraInventory/orainstRoot.sh
/opt/oracle/app/oracle/product/11.1.0/db_1/root.sh"

Une fois ceci fait, ajoutez les paramètre nécessaires à Oracle à votre fichier /etc/profile :

/bin/su -c "/bin/echo '# Oracle environment settings.
export ORACLE_OWNER=\"oracle\"
export ORACLE_HOME=\"/opt/oracle/app/oracle/product/11.1.0/db_1\"
PATH=\"\${PATH}:/opt/oracle/app/oracle/product/11.1.0/db_1/bin\"' >> /etc/profile"

Enfin, nous remettons en place l'environnement par défaut de Debian, que nous avions du tweaker afin que l'installation s'effectue sans problème :

/bin/su -c '/bin/rm -r /usr/lib64
/bin/mv /usr/lib64.old /usr/lib64
/bin/rm /usr/lib/libpthread_nonshared.a
/bin/mv /usr/lib/libpthread_nonshared.a.bck /usr/lib/libpthread_nonshared.a
/bin/rm /usr/lib/libc_nonshared.a
/bin/mv /usr/lib/libc_nonshared.a.bck /usr/lib/libc_nonshared.a'

Nous avons terminé l'installation d'Oracle. Il faut maintenant créer notre première base de données.

Création du service "listener"

Le listener permet de se connecter à une base Oracle via une connexion TCP. C'est un élément très important, puisque sans lui, votre serveur Oracle est inaccessible sur le réseau. Pour l'installer, utiliser l'assistant de configuration Oracle Net :

/opt/oracle/app/oracle/product/11.1.0/db_1/bin/netca

La création du Listener est une suite de clics sur le bouton "suivant". Veuillez toutefois à la fin à ne pas repartir dans la création d'un second listener. Voici les étapes successives de la création d'un listener :

Ajout d'un listener : étape 1 Ajout d'un listener : étape 2 Ajout d'un listener : étape 3

Ajout d'un listener : étape 4 Ajout d'un listener : étape 5 Ajout d'un listener : étape 6

Ajout d'un listener : étape 7 Ajout d'un listener : étape 8

Une fois le listener installé, il est automatiquement lancé. Par la suite, vous pourrez le démarrer à l'aide de la commande :

/opt/oracle/app/oracle/product/11.1.0/db_1/bin/lsnrctl start LISTENER

Mise en place du script Init.d pour Oracle

Afin de pouvoir démarrer vos base de données au lancement de votre système, vous devez mettre en place un script Init.d. Cela se fait avec les commandes suivantes :

/bin/su -c '/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-un-serveur-oracle-sur-debian-5-0-lenny/oracle \
    --output-document=/etc/init.d/oracle
/bin/chmod +x /etc/init.d/oracle
/usr/sbin/update-rc.d oracle defaults'

Création de la base de données

L'outil dbca permet de créer de nouvelle base de données. Pour le lancer, utilisez la commande suivante :

/opt/oracle/app/oracle/product/11.1.0/db_1/bin/dbca

Remarque : Cette commande nécessite un affichage X. L'option -Y de ssh peut vous aider (voir plus haut).

  • Étape 1 : Cliquez sur "suivant".
    Création de base de données : étape 1
  • Étape 2 : Cliquez sur "suivant".
    Création de base de données : étape 2
  • Étape 3 : Cliquez sur "suivant".
    Création de base de données : étape 3
  • Étape 4 : Saisissez le nom de votre base de données et cliquez sur "suivant".
    Création de base de données : étape 4
  • Étape 5 : Si vous le souhaitez vous pouvez configurer une alerte par e-mail.
    Création de base de données : étape 5
  • Étape 6 : Saisissez un mot de passe commun pour les 4 comptes standard.
    Création de base de données : étape 6
  • Étape 7 : Cliquez sur "Terminer"
    Création de base de données : étape 7
  • Étape 8 : Cliquez sur "Ok".
    Création de base de données : confirmation
  • Étape finale : Votre base de données est créée. Cliquez sur "Quitter".
    Création de base de données : étape finale

Votre base de données est maintenant créée. Si vous souhaitez qu'elle soit lancée au démarrage du système, modifiez le fichier /etc/oratab de manière adéquate à l'aide de la commande suivante :

/bin/sed -e '$s/:N$/:Y/' /etc/oratab > /tmp/oratab
/bin/cat /tmp/oratab > /etc/oratab
/bin/rm /tmp/oratab 

Par la suite, vous pouvez vous y connecter avec la commande :

sqlplus SYSMAN@ma-base-de-donnee

Configuration de RkHunter

Oracle créant une tripotée de fichiers /dev/shm/..., il est nécessaire de configurer RkHunter pour les ignorer. Pour ce faire, utilisez la ligne de commande suivante :

if [ -e /etc/rkhunter.conf ]; then
  /bin/sed -i -e '0,/ALLOWDEVFILE/{//a\
ALLOWDEVFILE=/dev/shm/JOXSHM_EXT_*\
ALLOWDEVFILE=/dev/shm/ora_*
;}' \
           /etc/rkhunter.conf
fi

Pour aller plus loin

Developpez.com semble fournir d'excellent guide pour apprendre l'administration d'Oracle. En voici 2 sur lesquels je suis tombé :

A l'aide de ces guides, voici quelques lignes de commandes que j'ai obtenu, et que je place ici en guide d'aide mémoire.

Outil graphique d'administration Oracle

Si vous n'aimez pas la ligne de commande, vous pouvez vous intéresser à TOra : Toolkit for Oracle qui est une interface graphique de gestion d'une base de données Oracle.

Ajout d'un utilisateur

Pour ajouter un utilisateur avec les droits de SELECT, INSERT, UPDATE, etc à votre base de données, voici la méthode à utiliser.

En premier lieu, connectez-vous à votre base de données :

sqlplus SYSMAN@ma-base-de-donnee

Une fois connecté, utilisez cette requête SQL pour ajouter un utilisateur :

CREATE USER my-username IDENTIFIED BY my-password;

Et ensuite, assignez lui les droits par défaut à l'aide de cette requête :

GRANT connect, resource TO my-username;

Remarque : Par la suite, vous pouvez vérifier l'état de cet utilisateur en suivant la méthode donnée par flo|va-nu-pied dans son article Vérifier l'état d'un utilisateur Oracle.

Restauration d'un dump Oracle

Pour restaurer un base de données depuis un dump Oracle, voici la commande à utiliser :

imp userid=SYSMAN/my-password@my-dabase file=/root/my-dump.dmp fromuser=exportuser touser=myuser

Pour plus d'informations sur l'utilisation de imp, utilisez cette commande :

imp help=y

Remarque : d'après mon expérience, l'un des principal problèmes lors d'un import est de ciblé précisément le schéma de destination... Si vos tables ne sont pas créé pour le bon utilisateur, cela peut causer de mauvaises surprises.

Lister les tables d'une base Oracle

Si vous souhaitez lister toute les tables d'une base oracle, vous pouvez utiliser la requête :

SELECT table_name FROM all_tables;

Si vous souhaitez seulement lister les tables d'un schéma utilisateur :

SELECT table_name FROM user_tables;

Ou encore :

SELECT table_name FROM tabs;

Source : Merci aux personnes ayant répondu à Liste des tables d'une BdD sur Oracle.

Remerciements

Images
Attachments

Précisions sur l'installation sans serveur X

Posted by Christian at 2009-11-17 21:52
Bonjour,

Vous avez écrit:
"L'installation d'Oracle nécessite la présence d'un serveur X (kof). Ne souhaitant pas mettre en place un serveur X sur le serveur de base de données (parceque faut pas déconner non plus), nous allons établir un tunnel SSH avec support du protocole X11 depuis notre machine de bureau, disposant d'un serveur X, vers le serveur ou sera installé la base de donnée Oracle."

J'utilise une Debian sans serveur x (aucune commande xterm, xstart... n'existe sur le serveur.
J'utilise habituellement xMing pour installer Oracle sous Linux

Je crois comprendre qu'on peut réaliser l'installation d'Oracle sans le serveur X installé sur la debian. Je n'y arrive pas avec Xming.

Ai je bien compris vos explication?

Si oui, pourriez vous m'expliquer comment faire pour installer Oracle dans ma configuration?

merci d'avance


serveur X

Posted by Lone Wolf at 2009-11-17 22:18
Bonjour,

si vous utilisez Xming, il faut faire un export DISPLAY=xming_ip:0 sur la machine Debian (du moins je pense).

Perso, j'utilise ubuntu comme machine de bureau (c'est tellement plus agréable que windows :)), j'ai donc parlé de l'option -Y de ssh.

Bon courrage.

Beau travail.

Posted by Sylvain at 2009-12-17 11:10
Bonjour, je suis aux prises avec une installation oracle sur RHEL 5 64bits et même si votre doc ne s'applique pas à la lettre je salue tout de même l'excellence de votre travail.
Bonne continuation.
Sylvain

Excellent travail

Posted by Joche at 2010-04-28 08:52
Bonjour,

Tout d'abord, merci pour ce tutoriel très complet, cependant après avoir suivi scrupuleusement le déroulement de l'installation, j'ai un petit souci à l'arrivée. Il me semble que ma Debian a perdu toutes ses variables d'environnement. Pour preuve, je dois rentrer à chaque commande son chemin complet. Avez-vous eu le même souci ?, d'autre part après un "shutdown immediate" de la base, il m'est impossible de faire un "startup mount" (une erreur TNS survient).

Merci d'avance de votre réponse.

Cordialement
Joche.

Merci

Posted by Lone Wolf at 2010-04-29 10:21
Bonjour,

pour ce qui est de votre problème, j'ai suivi plusieurs fois ce guide sans le rencontrer. Je vous conseille de vérifier le contenu de votre fichier /etc/profile qui aurait pu être écrasé, bien que je ne vois pas comment.

Bon courage.

variable d'environement

Posted by Joche at 2010-04-30 15:09
Bonjour,

En effet le problème venait de là.

Merci

Excellent document

Posted by Pierre Antoine at 2010-06-09 20:00
C'est, à date, la seule procédure d'installation que j'ai trouvé qui fonctionne correctement pour Debian.

Merci !

Posted by Mehmet at 2010-07-08 06:42
Ce tutoriel fonctionne à merveille même sur Windows 7 avec un serveur X sous Cygwin.

Problème au lancement de netca

Posted by swo at 2010-09-03 10:12
Bonjour,

Un petit problème au lancement de netca pour la config de SQLNet.

"UnsatisfiedLinkError exception loading native library: njni11"

Résolu par l'installation de libaio1 : (root) > apt-get install libaio1 libaio-dev

Sinon félicitations et merci pour cet excellent travail !!

Stéphane

erreur java vm lors du lancement de netca

Posted by Bob Sinclair at 2010-12-30 20:28
Bonjour,

J'ai essayé une installation de Oracle Database 11g (11.2.0) sur une Debian Squeeze à l'aide de ton tutorial. L'installation s'est déroulée sans problème, mais au lancement de netca, j'obtiens le message d'erreur suivant :

oracle@squeeze-vm:~$ /opt/oracle/app/oracle/product/11.2.0/dbhome_1/bin/netca

Configuration des services Oracle Net :
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0xa3bc9510, pid=2086, tid=3077531328
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_17-b02 mixed mode)
# Problematic frame:
#
[error occurred during error reporting, step 60, id 0xb]

# An error report file with more information is saved as hs_err_pid2086.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Aborted

Il y a un fichier log d'erreur plus complet, mais il est un peu long pour poster ici.
As-tu déjà rencontré ce problème ? Une idée pour le résoudre ?

En tous cas, bravo pour ce tutorial très clair !

formulaire de contact

Posted by Lone Wolf at 2010-12-31 10:19
Peut tu m'envoyer un ligne pastebin.org de ton log d'erreur via le formulaire de contact disponible en haut à droite sur ce site. Je regarderais si je peut t'aider à résoudre l'erreur.

BlogBang
Navigation
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards:

Wikio