RPM Oracle Instant Client
+
Par Remi le samedi 13 septembre 2008, 11:29 - Archives - Lien permanent
This page is obsoleted by RPM Oracle Instant Client 11.2.
Cette page est obsolète, voir RPM Oracle Instant Client 11.2.
A short guide to build RPM of Oracle Instant Client.
Un petit guide pour construire les RPM de Oracle Instant Client.
L'installation de Oracle Instant Client est certainement la solution la plus simple de disposer d'un accès aux bases Oracle depuis un client Unix/Linux/Windows/MacOS. Oracle fourni directement quelques RPM (utilisables sous Fedora) pour certaines versions et uniquement pour i386. Pour les autres versions, seules les archives aux formats ZIP sont disponibles sur le site.
L'autre solution consiste à utiliser le Oracle Database 10g Express Client. Lui aussi n'est disponible qu'en version 10.2.0.1 et i386.
Bien sur l'idéal serait que je puisse mettre les RPM sur mon dépôt, cependant, la licence d'utilisation ne me le permet sans doute pas.
Voici donc une petit guide, que j'espère trés simple, qui vous permettra de les construire vous même.
Préparez un environnement de construction
Faut-il encore rappeler que les RPM ne doit jamais être construit sous le compte administrateur ?
Tutorial : RPM : environnement de construction
Téléchargez les archives depuis le site officiel
Adresse : http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html
Récupérez et enregistrez dans votre dossier SOURCES:
- instantclient-basic
- instantclient-jdbc
- instantclient-sqlplus
- instantclient-sdk
- instantclient-odbc (uniquement i386)
- instantclient-tools (uniquement x86)
En fonction de votre architecture, les versions :
- i386 : linux32-11.1.0.7.zip
- x86_64 : 11.1.0.7.0-linux-x86_64.zip
- ppc : linuxppc32-10.2.0.2-20060327.zip
- ppc64 : linuxppc-10.2.0.2-20060327.zip
Installez les soures du RPM
Enregistrez le fichier nosrc.rpm correspondant à votre architecture dans un dossier et installez le :
- oracle-instantclient-i386-11.1.0.7-1.fc10.remi.nosrc.rpm
- oracle-instantclient-x86_64-11.1.0.7-1.fc10.remi.nosrc.rpm
- oracle-instantclient-ppc-10.2.0.2-1.fc9.remi.nosrc.rpm
- oracle-instantclient-ppc64-10.2.0.2-1.fc9.remi.nosrc.rpm
rpm -ivh oracle-instantclient-*.remi.nosrc.rpm
Le fichier oracle-instantclient.spec sera enregistré dans votre dossier SPEC.
Les directives de construction du RPM suivent la même stratégie qu'Oracle dans les anciennes versions , c'est à dire que les entêtes (fichiers .h) sont enregistrées dans le dossier /usr/include/oracle/###/client et les bibliothèques dans le dossier /usr/lib/oracle/###/client/lib. Par contre la configuration de l'éditeur de lien dynamique est modifiée pour trouver ces bibliothèques.
Lancez la construction
Depuis votre dossier SPEC :
rpmbuild -bb oracle-instantclient-<arch>.spec
Vous devez obtenir les RPM attendus dans le dossier RPMS/<arch> :
- oracle-instantclient-basic-xxx.rpm
- oracle-instantclient-devel-xxx.rpm
- oracle-instantclient-jdbc-xxx.rpm
- oracle-instantclient-odbc-xxx.rpm
- oracle-instantclient-sqlplus-xxx.rpm
- oracle-instantclient-tools-xxx.rpm
Installez et utilisez vos RPM
Vous pouvez maintenant les installer et les utiliser. Par exemple pour avoir Accès aux bases de données Oracle en PHP
Comme toujours n'hésitez pas à me faire part de vos remarques.
Commentaires
La version 11.1.0.6 des bibliothèques Oracle sera utilisé pour la prochaine mise à jour de PHP.
Merci, Remi!
Mise à jour prenant en compte la version 11.1.0.7 pour l'architecture i386.
Mise à jour prenant en compte la version 11.1.0.7 pour l'architecture x86_64 (disparition du paquet -odbc et ajout du paquet -tools).
Bonjour,
Je viens de faire l'install avec le RPM orcle 11.1.
J'ai voulu faire une test de connexion avec le code donné dans la page "Accès aux bases de données Oracle en PHP"
try {
$db = new PDO ("oci:dbname=//serveur.domaine.com/SID", "scott", "tigger");
printf("Connexion Ok
");
}
catch(PDOException $e) {
printf("ERREUR : %s
", $e->getMessage());
}
J'ai bien changé dans mon code le serveur, SID, user et pass, et j'ai le message suivant :
SQLSTATE[HY000]: OCISessionBegin: ORA-03134: Les connexions à cette version de serveur ne sont plus prises en charge. (/builddir/build/BUILD/php-5.2.9/ext/pdo_oci/oci_driver.c:632)
La version du client ocacle installé ne prend pas en charge oracle 8 ou c'est un bug ?
Re bonjour ;)
Je viens de remplacer le client 11.1 par le 10.2.0.4, j'ai bien modifié le fichier /etc/sysconfig/httpd pour que la variable LD_LIBRAY_PATH pointe bien vers la bonne install.
Et cette fois-ci j'ai une erreur dans le log d'apache :
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/oci8.so' - libclntsh.so.11.1: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_oci.so' - libclntsh.so.11.1: cannot open shared object file: No such file or directory in Unknown on line 0
Il n'est pas possible d'utiliser le client 10.2.0.4 avec ce package de PHP ?
@Yann : le RPM de php-oci8 est compiler avec la version 11.1 du client et ne fonctionne donc qu'avec cette version.
Pour savoir quelles sont les versions de serveur compatibles, il faut consulter la base documentaire d'Oracle : Metalink Note 2007303.1
Je n'ai malheureusement pas accès à ce document, mais de mémoire c'était "toutes les versions supportées", (donc >= 8.1.7).
+
J'ai trouvé l'info (merci Eric)
Les clients 10.2 supportaient les connexions vers les serveurs 8.1.7, 9.2, 10.1, 10.2 et 11.1
Les clients 11.1 supportent les connexions vers les serveurs 9.2, 10.1, 10.2 et 11.1
Les versions 8.1.7 et 9.0 ne sont donc plus accessibles, simplement parce que Oracle n'en assure plus le support (pour 9.2 c'est un support étendu réservé à certains clients).
+
J'ai bien installé le client 11g, et après avoir bien rensigné LD_LIBRARY_PATH, le service apache n'arrive toujours pas a charger oci8.so "libclntsh.so.11.1: cannot open shared object file: No such file or directory in Unknown on line 0", quelqu'un aurait il une idée?
Merci d'utiliser les forums mieux adaptés à l'assistance que les commentaires.