|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() |
Pb de connexion à Oracle à partir d’un autre poste sur le même réseau local
Bonjour à tous. Je débute en Oracle, c'est ma première question sur ce forum, pardon à ceux qui me trouveront maladroit. Mon objectif semble simple : obtenir un prompt Sql, mais en lanant SqlPlus à partir d’une machine cliente, pas directement sur celle du serveur Oracle. J’ai la config suivante : PC1 appelé Phil-ASUS (Windows) : Client par rapport à Oracle PC2 appelé prod-edi (Windows) : Serveur Oracle (10g, installé pour simplifier sur … C:\ORACLE) Pour avoir tous les outils utiles à mes tests, notamment SqlPlusW et tnsping, j’ai temporairement installé Oracle aussi sur le ‘client’ PC1 Lors de l’install Oracle (à part le répertoire d’install), je n’ai rien changé du tout, c'est-à-dire que : • J’ai une base par défaut appelée « ses » • J’ai un user par défaut appelé « eqsys » • Le port d’accès Oracle est 1521 • Seul mon mot de passe est perso, je l’appellerai « mon_password » • Au départ, je n’ai pas touché aux fichiers .ora : o Listener.ora o Tnsnames.ora o Sqlnet.ora Qui contiennent pour info (sur le serveur PC2 prod-edi) : Listener.ora : # listener.ora Network Configuration File: C:\Oracle\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\Oracle) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = prod-edi)(PORT = 1521)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ) Tnsnames.ora : # tnsnames.ora Network Configuration File: C:\Oracle\network\admin\tnsnames.ora # Generated by Oracle configuration tools. SES = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = prod-edi)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ses.prod-edi) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PLSExtProc) ) ) Sqlnet.ora : # sqlnet.ora Network Configuration File: C:\Oracle\network\admin\sqlnet.ora # Generated by Oracle configuration tools. SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) tcp.invited_nodes=(prod-edi,127.0.0.1) tcp.validnode_checking=yes Sur le serveur PC2, je démarre le serveur Oracle, en utilisant le raccourci standard : « Start SES » (C:\ORACLE\BIN\searchctl.bat). Premier essai de SqlPlusW en "localhost" : tout va bien Sur le serveur PC2, si je lance SqlPlusW, j’obtiens le prompt Sql facilement ("quit" pour sortir) : Voici les exemples qui marchent pour la chaîne hôte : • 'null' (ce sera ses par défaut) • ses • prod-edi/ses.prod-edi Pour info : • ses.prod-edi • prod-edi/ses Ne sont pas des valeurs valides, on obtient : ERROR ORA-12154 : TNS : l’identificateur de connexion indiqué n’a pas pu être résolu. Je rappelle mon objectif : obtenir ce prompt Sql à partir d’une autre machine, en l’occurrence le client PC1. Préparatifs : • Je m’assure que le port 1521 est accessible sur le serveur PC2 (prod-edi) à partir du client PC1. Sur PC1, j’ouvre une invite DOS et : « telnet prod-edi 1521 » Me donne un résultat positif. • J’autorise PC2 (prod-edi) à accepter des connexions Oracle venant de PC1 (Phil-ASUS) en modifiant sur PC2 une seule ligne du fichier sqlnet.ora (la modif est en gras) : tcp.invited_nodes=(prod-edi,127.0.0.1,Phil-ASUS) Je “valide” bien sur, en faisant “Stop SES”, puis “Start SES” sur PC2. • Pour vérifier que tout va bien, j’ouvre une invite DOS sur PC1 (Phil-ASUS), je me mets dans le répertoire ou se trouve tnsping.exe et je fais divers tests : o Tnsping ses : Erreur immédiate, TNS-12541 : aucun processus d’écoute. Tnsping ses.prod-edi : Erreur après quelques secondes, TNS-03505 : Echec de la résolution du nom o Tnsping prod-edi : j’ai un OK immédiat (20ms), avec dans la « DESCRIPTION », « SERVICE_NAME=prod-edi » o Tnsping prod-edi/ses : j’ai un OK immédiat (20ms), avec dans la « DESCRIPTION », « SERVICE_NAME=ses » o Tnsping prod-edi/ses.prod-edi : j’ai un OK immédiat (30ms), avec dans la « DESCRIPTION », « SERVICE_NAME=ses.prod-edi » Tests effectifs de SqlPlusW du client PC1 sur le serveur PC2 Après tout cela, j’espérais pouvoir faire SqlPlusW à partir du PC1, mais les différents essais sont restés en erreur. Bien entendu, par rapport au test effectué directement sur PC2, j’ai conservé sans changement le nom d’utilisateur (eqsys) et le mot de passe (mon_password), et j’ai juste agi sur la chaîne hôte. Pour pouvoir comparer, j’ai reproduit les mêmes exemples qu’avec tnsping : o « Chaîne hôte=ses » donne après quelques secondes ERROR : ORA-12541 : TNS : pas de processus d’écoute. (Idem tnsping, à part le délai de réponse) o « Chaîne hôte=ses.prod-edi » donne après quelques secondes ERROR : ORA-12154 : TNS : l’identificateur de connexion indiqué n’a pas pu être résolu (ça ressemble à l’erreur indiquée par tnsping) o « Chaîne hôte=prod-edi/ses » donne une erreur immédiate : ORA-12154 : TNS : le processus d’écoute ne connaît pas actuellement le service demandé dans le descripteur de connexion o « Chaîne hôte=prod-edi/ses.prod-edi » donne après plus de 20 secondes une erreur : ORA-12170 : TNS : délai de connexion dépassé. Après tests en erreur, ce que j’ai fait : (bien sûr, je fais un Stop puis Start de Oracle sur le serveur PC2 après chaque modif) • Après ces premiers tests en erreur, j’ai essayé de changer le sqlnet.ora (de PC2 bien sûr) en ajoutant la ligne : sqlnet.inbound_connect_timeout = 100 mais j’ai eu exactement les mêmes problèmes • Je suis totalement novice sur Oracle, alors je me suis dit que dans le tnsnames.ora, je pouvais peut-être supprimer la ligne : (SERVER = DEDICATED) Cette modif n’affecte pas ma possibilité de me connecter directement de PC2 à PC2. Mais toujours pas de PC1 à PC2. • Pour info, j’ai fait les mêmes tests tnsping directement de PC2 à PC2 : o Tnsping ses : OK immédiat o Tnsping ses.prod-edi : même erreur (échec de la résolution du nom) o Tnsping prod-edi : Idem PC1 : OK immédiat « SERVICE_NAME=prod-edi » o Tnsping prod-edi/ses : Idem CP1 : OK immédiat (20ms), « SERVICE_NAME=ses » o Tnsping prod-edi/ses.prod-edi : Idem PC1 : OK immédiat (30ms), avec dans la « DESCRIPTION », « SERVICE_NAME=ses.prod-edi » • Je suis allé voir sur Google un article qui parlait de l’erreur ORA-12154 : http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14219/net12150.htm Comme je n’utilise pas LDAP, j’ai juste modifié une ligne du fichier sqlnet.ora : NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME, EZCONNECT) Après modif, tout (SqlPlusW) continue à marcher en “localhost », de PC2 sur PC2, mais toujours pas de PC1 sur PC2. • J’ai refait tous les tests en remplaçant PC2 (prod-edi) par sa vraie adresse IP, en l’occurrence 192.168.0.15 : idem Après tests en erreur, ce que je n’ai pas fait : • Avant tous ces tests, j’avais imaginé que la chaîne hôte qui « allait marcher » le plus logiquement serait « prod-edi/ses » (logiquement parce qu’on donne la machine et le nom de la base). L’erreur signalée « le processus d’écoute ne connaît pas actuellement le service demandé dans le descripteur de connexion » laisse certes entrevoir qu’il doit exister une façon de paramétrer, mais je n’ai voulu « tout casser ». • Après les tests, celui qui s’est avéré le « moins erroné » est celui « Chaîne hôte=prod-edi/ses.prod-edi », mais là, après avoir modifié le timeout, je ne vois aucune piste pour améliorer. Conclusion Je pense que la bonne chaine hôte est « prod-edi/ses », mais je suppose qu'il faut que je trouve une façon de paramétrer correctement les .ora. Qui peut m’aider ? |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2005 Messages : 541 ![]() |
Les fichiers postes sont ceux du serveurs, la ou il n'y a pas (trop) de souci. Mais que contient le fichier TNSNAMES.ORA cote client PC1, la meme chose?
Ce qui me gene dans la definition du service, c'est qu'il inclu le nom de la machine, ce qui sans doute explique pourquoi le "TNSPING ses" ne reponds. Ensuite, je ne toucherai au parametrage de tcp.invited_nodes que dans une seconde etape, lorsque la connection aura ete proprement etabli. As-tu par example valide que "Phil-ASUS" est proprement reconnu depuis le serveur? Enfin, les erreurs mentionnes depuis le PC1 ne sont pas, a priori, dus a un probleme de Firewall, mais a toute fin utile, jetes un coup d'oeil sur la note Metalink 66382.1. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com