Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1347 connectés 

  FORUM HardWare.fr
  Programmation

  [PHP] Oracle, faire une requète sur une BBD distante?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Oracle, faire une requète sur une BBD distante?

n°39304
shinji
Posté le 13-06-2001 à 10:34:54  profilanswer
 

Comment fait-on pour se connecter à une BDD qui se situe sur un autre PC?
D'habitude je fait ça :

$conn = Ora_Logon("scott","tiger" );
 
//création d'un curseur
$curs = ora_open($conn);
 
//création d'une requête
$queryauto=sprintf("select ...." );
 
//on relie la requête au curseur
ora_parse($curs,$queryauto);
 
//on lance l'exécution du curseur
ora_exec($curs);

Mais je ne spécifiait pas le chemin. Maintenant,j'ai installé PHP sur un autre serveur et je dois accéder à la BDD qui est restée sur l'ancien poste. Je sais pas où spécifier le chemin? Ni comment d'ailleurs?
 
Merci de votre éventuelle aide!

mood
Publicité
Posté le 13-06-2001 à 10:34:54  profilanswer
 

n°39330
shinji
Posté le 13-06-2001 à 11:44:22  profilanswer
 

apparement c'est un truc du style :
 
$conn=ora_logon("scott@TNSNAME","tiger" );
 
Mais c'est quoi TNSNAME ???

n°39333
shinji
Posté le 13-06-2001 à 11:46:36  profilanswer
 

apparement c'est un truc du style :
 
$conn=ora_logon("scott@TNSNAME","tiger" );
 
Mais c'est quoi TNSNAME ???

n°39340
krolours1
Posté le 13-06-2001 à 11:59:26  profilanswer
 

shinji a écrit a écrit :

apparement c'est un truc du style :
 
$conn=ora_logon("scott@TNSNAME","tiger" );
 
Mais c'est quoi TNSNAME ???




 
TNSNAMES, c'est l'identifiant de la base à laquelle tu veut te connecter.
Tu doit déclarer tes bases dans un fichier du client Oracle qui s'appeller tnsnames.ora qui contient le nom des bases que tu utilise, l'adresse du serveur, le port ...
Le fichier se trouve dans le répertoire network/admin du client oracle en principe.
(ça, c'est pour oracle 7, c'est un peu différent avec oracle8)
Voila

n°39345
shinji
Posté le 13-06-2001 à 12:11:49  profilanswer
 

ok, justement c'est Oracle8 que j'ai, t'aurais pas un exemple si c'est pas trop demander car j'ai bien trouvé TNSNAMES.ORA mais je sais pas comment la déclarer ni par quoi remplacer TNSNAME dans ora_logon("scott@TNSNAME","tiger" );
Merci

n°39348
krolours1
Posté le 13-06-2001 à 12:18:28  profilanswer
 

shinji a écrit a écrit :

ok, justement c'est Oracle8 que j'ai, t'aurais pas un exemple si c'est pas trop demander car j'ai bien trouvé TNSNAMES.ORA mais je sais pas comment la déclarer ni par quoi remplacer TNSNAME dans ora_logon("scott@TNSNAME","tiger" );
Merci




 
Voila a quoi ressemble une entrée de tnsnames.ora :
WEB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.94.0.66)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = WEB)
    )
  )    
 
Il faut que tu remplace WEB (le nom de ma base) par le vrai nom de ta base sur le serveur et aussi l'ip et le port.
 
Après pour te connecter tu fais $conn=ora_logon("scott@LENOMDETABASEDANSLETNSNAMES.ORA","tiger" );  
 
En principe avec oracle8, on utilise pas le tnsnames.ora mais je sais faire que comme ça.

n°39351
irulan
Posté le 13-06-2001 à 12:20:17  profilanswer
 

Si tu as Oracle 8, tu as un utilitaire qui permet d'écrire dans le fichier tnsname.ora : il s'agit de Oracle Net8 Easy Config, qui se trouve dans Démarrer/Programmes/Oracle forWindows NT/

n°39418
shinji
Posté le 13-06-2001 à 14:19:10  profilanswer
 

Merci, j'essaye de suite!

n°39427
shinji
Posté le 13-06-2001 à 14:42:18  profilanswer
 

J'ai réussi je pense pour tnsname.ora :  
YANN.WORLD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 126.234.1.4)(PORT = 1521))
    (CONNECT_DATA = (SID = ORCL))
)
(sur le serveur de la BDD)
 
Mon script PHP :
$conn = Ora_Logon("scott@YANN.WORLD","tiger" );
 
ça marche pas?
J'ai essayé YANN (ce que j'ai tapé avec l'assistant)
(sur le serveur Apache\PHP)
 
Mais il y a un truc que ke ne comprends pas :  
Comment le script php sur le serveur Apache sait qu'il faut aller voir la BDD sur le serveur Oracle à l'adresse 126.234.1.4?  
Il faut installer un truc Orcale sur le serveur Apache?
C'est sur le serveur Apache que je devrais avoir TNSNAME.ORA non?

n°39434
krolours1
Posté le 13-06-2001 à 15:01:42  profilanswer
 

shinji a écrit a écrit :

 
Mais il y a un truc que ke ne comprends pas :  
Comment le script php sur le serveur Apache sait qu'il faut aller voir la BDD sur le serveur Oracle à l'adresse 126.234.1.4?  
Il faut installer un truc Orcale sur le serveur Apache?
C'est sur le serveur Apache que je devrais avoir TNSNAME.ORA non?




 
Ben oui, il faut installer le client Oracle sur ton serveur apache et ensuite renseigner le tnsnames.ora

mood
Publicité
Posté le 13-06-2001 à 15:01:42  profilanswer
 

n°39437
shinji
Posté le 13-06-2001 à 15:07:27  profilanswer
 

ok, je comprends mieux!

n°39542
shinji
Posté le 14-06-2001 à 09:40:08  profilanswer
 

J'ai essayé, en fait il y a un serveur(126.234.1.3) web apache+php (et qui fait aussi serveur d'une BDD Oracle7 en plus) et un autre serveur(126.234.1.4) de BDD Oracle que je cherche à contacter.
J'ai donc configurer le TNSNAME.ORA du serveur 1 comme suit :
ORCL=(DESCRIPTION=
          (ADRESS=(PROTOCOL=TCP)(HOST=126.234.1.4)(PORT=1521)
          (CONNECT_DATA=(SID=ORCL))
)
Voilà mon script PHP avec la dll Oracle8:
<?
$db="ORCL";
$conn=ocilogon("scott","tiger",$db);
$curs=ociparse ($conn, "select * from POLYGONEBRE" );
ociexecute($curs);
while(ocifetch($curs)){
      $i = ociresult($curs,1);
      echo $i."<br>";
}
OCILogoff($conn);
?>
 
J'obtiens un message d'erreur :
Warning: _oci_open_server: Error while trying to retrieve text for error ORA-12154 in
c:\tomcat\webapps\onel\php\oracle8i.php on line 3
 
J'ai le même message avec ce srcipt:
<?
$conn = Ora_Logon("scott@ORCL","tiger" );
$curs = ora_open($conn);
$queryauto=sprintf("select * from POLYGONEBRE" );
ora_parse($curs,$queryauto);
ora_exec($curs);
while(ora_fetch($curs)){
 $note=ora_getcolumn($curs,1);
 echo $note."<br>";
}
?>
 
Pourtant du serveur 126.234.1.3 j'arrive à interroger la BDD du serveur 126.234.1.4 par des requêtes avec "SQL Worksheet".
Je ne comprends pas bien l'erreur, d'après vous, c'est dû à PHP ou à la configuration d'Oracle?

n°39554
irulan
Posté le 14-06-2001 à 09:57:42  profilanswer
 

Tu as un database link qui existe entre tes deux bases Oracles ?

n°39557
shinji
Posté le 14-06-2001 à 10:02:27  profilanswer
 

Non il n'y a aucun lien entre les deux, la première est en Oracle7 la deuxième en Oracle8i.

n°39576
irulan
Posté le 14-06-2001 à 10:23:38  profilanswer
 

On doit pouvoir créer un database link de la base 8i vers la 7 sans problème, et le contraire doit aussi être possible, non ?

n°39578
shinji
Posté le 14-06-2001 à 10:27:38  profilanswer
 

Je comprends pas à quoi cela servirait?
Je cherche juste à accéder à la BDD Oracle8 du serveur 126.234.1.4 depuis mon script PHP qui est sur le serveur 126.234.1.3.
Je m'en fou de la BDD Oracle7, c'était juste pour dire qu'il y avait déjà un tnsname.ora et que j'ai pas eu besoin d'installer de client Oracle8 sur le serveur 126.234.1.3.
Peut ê que je ne comprends pas bien ce que tu veux dire?

n°39582
irulan
Posté le 14-06-2001 à 10:34:50  profilanswer
 

En fait tu cherches à accéder à ta base 8i en utilisant la base Oracle 7 qui se trouve déjà sur ton serveur PHP, si je comprends bien ?
Or pour voir la base 8i, le plus simple est de déclarer un database link (à voir dans le Schéma Manager d'Oracle) qui pointe vers cette dernière, sur la base Oracle 7.
En fait dans le database link, tu déclares un utilisateur et un mot de passe que la base oracle 7 utilisera pour se connecter à la base 8i.

n°39604
shinji
Posté le 14-06-2001 à 10:58:29  profilanswer
 

ouais, ça se résume à ça je pense.  
(pour l'instant  je peux pas créer le lien mais j'essayerai dès que possible, merci)
Donc après avoir déclarer le datalink, dans mon script PHP je fait comme si je me connectait à la BDD Oracle7?
Merci de ton aide, je connais pas grand chose et encore moins à la config d'Oracle!

n°39607
shinji
Posté le 14-06-2001 à 11:03:24  profilanswer
 

Comme je peux pas encore ajouter le datalink, je vais installer Apache,PHP et un client Oracle8 sur un autre poste pour montrer que ça marche bien PHP ;)

n°39608
irulan
Posté le 14-06-2001 à 11:04:38  profilanswer
 

Effectivement, c'est le plus simple et le plus efficace en attendant ! ;)

n°39611
shinji
Posté le 14-06-2001 à 11:10:36  profilanswer
 

je te tiens au courant, merci

n°39631
krolours1
Posté le 14-06-2001 à 11:46:46  profilanswer
 

Le messages 12154, c'est que le client n'arrive pas a résoudre le nom dans le tnsnames.
Ton tnsnames.ora n'est sans doute pas bon regarde aussi le sqlnet.ora.
 
Vérifie aussi que le répertoire bin d'oracle est dans le path

n°39646
shinji
Posté le 14-06-2001 à 12:16:17  profilanswer
 

Voilà ce que j'ai dans sqlnet.ora:
TRACE_LEVEL_CLIENT = OFF
names.directory_path = (TNSNAMES)
names.default_domain = world
name.default_zone = world
names.default_domain=world
Pour tnsnames.ora, voir mon post un peu plus haut.
Pour :  
Vérifie aussi que le répertoire bin d'oracle est dans le path  
Je vois pas où vérifier.
Merci

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] Oracle, faire une requète sur une BBD distante?

 

Sujets relatifs
Comment ouvrir un logiciel à partir d'une page HTML ou PHP ?[PHP-Mysql] Prob d'apostrophes et de slash
[PHP] Question sur les variables "$$toto"pour les bon en sql! petite requete de rien du tout
[PHP, Javascript, autres?] Choix des couleursPb de fichier sous PHP....
PHP & "max execution time"[PHP] Faire 1 select count et l'afficher ! HELP :-)
[MYSQL + PHP] comment connaitre le nombre de champs d'une table ?[PHP] Vérification de mail....
Plus de sujets relatifs à : [PHP] Oracle, faire une requète sur une BBD distante?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR