L'installation est très simple lorsqu'on sait quels fichiers installer, quelles variables positionner et où placer les fichiers de configuration.
Ce post décrit rapidement les étapes d'installation et les chemins clefs, en se basant sur la version 11g.
Installation des binaires
Les binaires se téléchargent sur le site d'Oracle. Recherchez tout simplement dans les menus Downloads -> Instant Client pour trouver tout un listing de plateforme et d'architecture.Attention au type d'architecture : même si les binaires 32 bits fonctionneront sur une machine 64 bits, le "linkage" d'une application 64 bits après compilation sur une librairie 32 bits ne fonctionnera pas. Ce cas de figure se rencontre en installant par exemple DBD::Oracle pour Perl : si votre machine est 64 bits, la compilation générera par défaut des binaires 64 bits et il vous faudra absolument les librairies Oracle 64 bits.
En cas de doute, une solution est de vérifier le format d'un fichier .o compilé récement. Par exemple pour DBD::Oracle :
# file Oracle.o
Oracle.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
Pour ma part, pour une utilisation essentiellement via sqlplus et perl, je me contente de 3 packages :
- Instant Client Package - Basic : les librairies de base de l'Instant Client
- Instant Client Package - SQL*Plus : le fameux sqlplus, indispensable pour debugguer l'installation
- Instant Client Package - SDK : le SDK qui nous permettera de compiler les librairies des autres langages, notamment DBD::Oracle de Perl
Une fois récupéré, l'installation est extrêmement simple : dézipper et déplacer les fichiers dans le dossier cible.
Exemple :
# unzip instantclient-basic-linux.x64-11.2.0.3.0.zip
# unzip instantclient-sdk-linux.x64-11.2.0.3.0.zip
# unzip instantclient-sqlplus-linux.x64-11.2.0.3.0.zip
# mkdir /opt/oracle/instantclient
# mv instantclient_11_2/* /opt/oracle/instantclient
Configuration des variables d’environnement
Deux variables sont indispensables pour faire fonctionner Oracle, en plus du PATH pour sqlplus :- ORACLE_HOME : utilisé par Oracle, doit pointer sur le dossier d'installation d'Oracle
- LD_LIBRARY_PATH : utilisé par l'OS pour trouver les librairies partagées d'Oracle
Si LD_LIBRARY_PATH n'est pas ou mal positionné, le message est clair :
# sqlplus
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
Dans l'exemple précédent, les deux variables doivent être positionnées sur /opt/oracle/instantclient.Pour ne pas avoir à les redéfinir à chaque fois, ajoutez les dans /etc/profile.
Pour finir, tester en lançant sqlplus qui doit demander le login si tout est bien positionné :
# sqlplus
SQL*Plus: Release 11.2.0.3.0 Production on Tue May 12 20:34:35 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter user-name:
SQLPlus : petit rappel de syntaxe
Petit rappel de syntaxe de la commande sqlplus car je ne la trouve pas intuitive du tout. En cas de doute, sqlplus -h a la solution :)sqlplus login/password@//ip:port/SID
: pour entrer l'adresse complète de la basesqlplus login/password@TNS
: si la base est configurée dans un tnsname.ora (normalement ce n'est pas le cas à cette étape de l'installation)
Problème ORA-21561: OID generation failed
Il m'est arrivé plusieurs fois d'obtenir ce message lors du test d'installation en ouvrant réellement une connexion sur un serveur qui fonctionne :
# sqlplus login/password@//198.168.5.4/BASEDETEST
SQL*Plus: Release 11.2.0.3.0 Production on Tue May 12 20:36:22 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-21561: OID generation failed
Cette erreur apparaît car le nom d'hôte renseigné dans /etc/hosts n'est pas bon. Dans mon cas, j'avais :
127.0.0.1 localhost
Il faut que le nom qui apparait dans /etc/hosts soit le même que celui que renvoie la commande hostname.Configuration des connexions (tnsnames.ora)
Ce fichier est bien pratique pour centraliser les paramètres de connexion et ne pas avoir à les retaper à de multiples endroits, encore faut-il placer le fichier au bon endroit...Deux possibilités :
$ORACLE_HOME/network/admin/tnsnames.ora
: c'est la solution que je préfère, il suffit de créer le dossier network/admin et aucune configuration supplémentaire n'est nécessaire$TNS_ADMIN/tnsnames.ora
: permet de mettre le tnsnames.ora n'importe où, éventuellement d'en avoir des différents par utilisateur, mais demande la configuration d'une variable d'environnement supplémentaire
nom_tns=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=community)(PROTOCOL=TCP)(HOST=adresse_ip_ou_hostname)(PORT=port_1521_par_defaut)))(CONNECT_DATA=(SID=sid)))
Une fois en place, il ne reste plus qu'à tester avec sqlplus (cf ci dessus pour la syntaxe) !