Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Connexions aux bases de données
Connexions aux bases de données Forum d'entraide sur les problèmes de connectivité Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2011, 10h38   #1
Candidat au titre de Membre du Club
 
Celine Delfuego
Inscription : mai 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Celine Delfuego

Informations forums :
Inscription : mai 2010
Messages : 36
Points : 10
Points : 10
Par défaut Encore et toujours: odbc_connect() [function.odbc-connect]: SQL error: [Oracle][ODBC][Ora]ORA-12705

Bonjour,

Je perds patience et n'ai quasiment plus de cheveux sur la tete >.<
Je cherche a me connecter a Oracle 9i. La connexion marche puisque j'arrive a me connecter en utilisant Crystal Report, tnsping donne un resultat satisfaisant, et je peux faire des requete SQL avec SQL Plus... Mais via php c'est le desastre complet et pourtant c'est mon but ultime: UTILISER PHP POUR ATTEINDRE ORACLE!!

Contexte:
  • easyPhp
  • Appache
  • OraHome92
  • Instant Client 10
  • php_oci8.dll accepte malgre un tit probleme de dependance avec mpr.dll
  • Ne nombreuses tentatives sans succes...

Il y a l'Instant client et OraHome92, car j'ai essaye toutes les methode que j'ai trouve. J'ai unset et set ORACLE_HOME et NLS_LANG une bonne dizaine de fois, j'ai essaye de reinstaller mpr.dll, j'ai mis ora92 et oci8 dans le repertoire System32... tout. Et RIEN. J'ai meme fait une connection ODBC qui marche (j'ai un succes lors du test) mais rien avec php!!

les essaies:
Code PHP :
1
2
3
4
5
6
7
8
$dsn="blabla";
$username="user";
$password="mdp";
 
$cnx = odbc_connect($dsn, $username, $password);
 
If($cnx)
{echo "Connexion ODBC réussie";}

Code PHP :
1
2
3
4
 $dsn="Driver={Oracle in OraHome92};"."Server=server;"."dB;"."uid=user;pwd=mdp";
           $conn  =  odbc_connect($dsn,"user","mdp");
           if (!$conn) {echo odbc_errormsg();
            exit(" Failed: " .$conn."</br><font color='red'><b>blabla </b></font>");}

Code PHP :
1
2
3
4
5
6
7
$ora_user =     "user";    //username
$ora_pass =    "mdp";            //user password
$ora_host =    "host";
$ora_db   =     'db';    //database name
 
//$ora_conn = oci_connect($ora_user,$ora_pass,'//'.$ora_host.'/'.$ora_db);
$ora_conn = oci_connect($ora_user,$ora_pass, $ora_host);

et toujours la meme erreur (quoi que non parfois ca change, mais le plus souvent:

Citation:
odbc_connect() [function.odbc-connect]: SQL error: [Oracle][ODBC][Ora]ORA-12705: Cannot access NLS data files or invalid environment specified , SQL state S1000 in SQLConnect
Heeeeelp please !
Je vais devenir chèvre

Celine
dufeu.celine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 11h44   #2
 
Inscription : août 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 158
Points : -14
Points : -14
Bonjour,

Je m'y connais pas en PHP, j'ai simplement fait une recherche Google sur to ncode erreur et j'ai trouvé pas mal de liens dont un à l'air de ressembler à ton problème :

http://www.developpez.net/forums/d85...in-sqlconnect/

Sinon hésites pas à utiliser Google aussi !
comboDev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h53   #3
Candidat au titre de Membre du Club
 
Celine Delfuego
Inscription : mai 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Celine Delfuego

Informations forums :
Inscription : mai 2010
Messages : 36
Points : 10
Points : 10
Aaarrrgghh!
Ca y est, je deviens chevre
Merci beaucoup pour ton conseil... mais si tu crois que je site tous les exemples ci-dessus et que j'explique un peu tout ce que j'ai essaye, c'est que je n'ai pas googler????...
Argh! Tu me fends le coeur...C'est une insulte (a dire avec l'accent marseillais)
Bien sur que je google avant de poster un message ici. Ca fait un mois que je google
En plus la solution essayee dans ton lien est sensiblement la meme que la mienne (numero 2) et je n'ai pas le meme message d'erreur (na! d'abord)

En tous cas merci, mais ca ne fonctionne touyours po

Celine
dufeu.celine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h24   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
C'est odbc et rien d'autre que tu dois utiliser ?
Parce que si tu as installé oci8, c'est plutôt oci_connect que tu dois utiliser plutôt que odbc_connect.
The Underground PHP and Oracle Manual
Dans le pdf chapitre 9 page 101 CONNECTING TO ORACLE USING OCI8 devrait t'aider, mais vérifie avant que ton installation est conforme, tout est dans le pdf.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/07/2011, 04h30   #5
Candidat au titre de Membre du Club
 
Celine Delfuego
Inscription : mai 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Celine Delfuego

Informations forums :
Inscription : mai 2010
Messages : 36
Points : 10
Points : 10
Ben j'ai persiste sur l'odbc, car l'oci me faisait la tete quoi que je fasse (pourtant j'ai suivi toute les consignes du pdf joint)
Et apres de nombreuses batailles acharnees j'ai reussi (le probleme c'est qu'au final je ne sais pas ce qui a vraiment marche) mais j'utilise Microsoft ODBC pour oracle; je cree le DSN et je l'exploite... Ca marche.

Par contre, ma joie fut de courte duree T-T
Car finalement tous ces tests etaient en localhost, sur ma petite machine windows XP 32-bit... mais le but est ensuite de mettre tout ca sur le server... 64 bit!!
Et la c'est le drame! La methode ne marche plus. J'ai bien reussi a creer un DSN avec Microsoft ODBC pour Oracle, mais en passant par le odbcad32.exe qui est sous SysWOW64... mais j'obtiens l'erreur

Citation:
Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC driver for Oracle][Oracle], SQL state NA000 in SQLConnect in
Et si je persiste a me battre avec l'oci, j'ai:
Citation:
OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in
Pourtant j'ai re re re verifier, et mon PATH indique bien ou est l'instant client...

Petite update: j'ai essaye la methode http://blogs.oracle.com/opal/entry/u...ith_32-bit_php
qui dit de tout mettre sous SysWOW64, et...
Citation:
SQL error: Specified driver could not be loaded due to system error 1114: A dynamic link library (DLL) initialization routine failed. (Oracle in instantclient_11_2, C:\Windows\SysWOW64\instantclient_10_2\SQORA32.dll)., SQL state IM003 in SQLConnect
Et erreur 1114 est une des erreurs les plus rencontrees et inexpliquee sur le forum oracle...

Une idee?

(desolee pour le temps de reponse... j'avance sur plusieurs problemes en meme temps pour eviter de devenir chevre, mais du coup certains problemes avancent tres lentement)
dufeu.celine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 08h03   #6
Candidat au titre de Membre du Club
 
Celine Delfuego
Inscription : mai 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Celine Delfuego

Informations forums :
Inscription : mai 2010
Messages : 36
Points : 10
Points : 10
Yeeeaaaahhh!!

J'ai enfin trouve!!
Donc, les différentes recherches m'ont amenés aux résultats suivant pour Windows Server 2008 R2 - 64 bits avec Apache:

1. Télécharger l'instant client basic 11g - 32 bits (peu important la version de la base de données Oracle, 11g comprend les DB plus anciennes)
2. Le dezipper sous Windows/SysWOW64/Instantclient (important pour php qui est en 32 bits; system32 est pour le 64bits)
3. Dans les variables d'environment windows, updater le PATH en rajoutant C:/Windows/System32/InstantClient (et ajouter NLS_LANG si nécessaire)
(windows ira automatiquement chercher dans sysWOW64 pour php en détectant que celui-ci est 32bits; donc ne pas s'inquiéter et indiquer System32)
4. copier les dll de l'instant client sous SysWOW64 et Apache/bin (très important ce dernier point... c'est ca qui a tout changé; le reste est indiqué dans tout les manuels php Oracle sur internet) (je les ai peut être copie ailleurs... mais je ne sais pas quel autre dossier nécessite vraiment les dll; dans apache/bin, je n'ai pas cherché j'ai copié TOUTES les dll)
5. Rajouter l'extension php_oci8_11g dans la configuration de php (la, si ca beug il faut vérifier si il ne manque pas des dll dans php/ext)
6. redémarrer le PC pour les variables windows

J'ai fait d'autres manip que je ne pense pas être forcement nécessaires mais il fallait que je trouve une solution (telle que rajouter les SetEnv dans http (config apache) ou les TNS_ADMIN setting avec un folder contenant tnsnames.ora)
(ah, et ne pas initialiser ORACLE_HOME; ca ne sert définitivement a rien pour l'instant client)
En tous cas: CA MARCHE!!
Mouhahaha!

C'est toujours jouissif de trouver la solution!
(happy)
dufeu.celine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 19h36   #7
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
Juste petite rectification :

Citation:
Envoyé par dufeu.celine Voir le message
1. Télécharger l'instant client basic 11g - 32 bits (peu important la version de la base de données Oracle, 11g comprend les DB plus anciennes)
Faux. A chaque version d'une version oracle, le support de vielles version server par les client saute !

Par un exemple, un client 11g ne peut se connecter à un 8i ou 9.0...
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 23h36   #8
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 263
Points : 3 263
Citation:
Envoyé par Vincent Rogier Voir le message
Faux. A chaque version d'une version oracle, le support de vielles version server par les client saute !

Par un exemple, un client 11g ne peut se connecter à un 8i ou 9.0...
Une chose est sure, c'est que si on a le choix, il faut prendre un client de la même version que le serveur, ou avec une version d'écart au maximum.

Pour le reste, il faut distinguer "fonctionner" et "être supporté".
D'après la note Metalink 207303.1, Oracle assure tout à fait le support pour la combinaison client 11g <--> serveur 9iR2.
Alors qu'il n'y a pas de support, par exemple, pour le couple client 8i <--> serveur 11g.
Pourtant, un client m'a récemment certifié qu'ils ont une application qui fonctionne parfaitement, depuis des mois, entre en client 8.1.7 et un serveur 11.2.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h26.


 
 
 
 
Partenaires

Hébergement Web