Connexion sur une base Oracle distante

[Résolu/Fermé]
Signaler
Messages postés
36
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
24 septembre 2012
-
 BidiBidouille -
Bonjour,



Je n'arrive plus à me connecter depuis ma machine sur une base Oracle qui se trouve sur mon serveur. ça marchait la semaine dernière. Depuis, le routeur Zyxel a été relégué à la fonction de simple modem (il fait office de bridge) et un nouveau routeur a été installé (Netgear).

Je peux faire un ping sur le serveur et la base Oracle est accessible depuis le serveur également. En revanche, un tnsping sur le serveur n'aboutit pas:

C:\Users\Administrateur>tnsping DYNAXIS-SRV

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 19-JUIL.
-2012 11:46:00

Copyright (c) 1997, 2010, Oracle. All rights reserved.

Fichiers de paramÞtres utilisÚs :
C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

Adaptateur EZCONNECT utilisÚ pour la rÚsolution de l'alias
Tentative de contact de (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=fe80::3ca1:e1f8:52c8:3a55%17)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.33)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=fdc9:e1b8:7137:143c::1)(PORT=1521)))
TNS-12560: TNS : erreur d'adaptateur de protocole

La 1ère adresse IPv6 (fe80...) correspond à l'adresse de liaison locale du serveur (j'ignore ce que c'est) et la seconde (fdc9...) correspond à l'adresse IPv6 'normale' du serveur.

Quelqu'un saurait-il me dire quel est le problème ? Une piste ? Est-ce que le nouveau routeur pourrait stopper une partie du trafic (tout le reste semble fonctionner sans problème) ?

Pour info:


tnsnames.ora:
...
ORCL_DYN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)




sqlnet.ora:
SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)




listener.ora:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\appli\Oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\appli\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = DYN-YBI-PC)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521))
)
)

ADR_BASE_LISTENER = C:\appli\Oracle

10 réponses

Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
47
Hello,

Lorsqu'on à ce type d'erreurs généralement sur Oracle, c'est un problème de variable d'environnement non définies
ORACLE_HOME + ORACLE_SID

Ce que je remarque, le tnsping doit se faire sur ORCL_DYN et non pas sur DYNAXIS-SRV.

que donne la commande
TNSPING ORCL_DYN

DROE
Messages postés
36
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
24 septembre 2012
1
Merci pour ton aide, DROE !

Zut, pour le tnsping ! J'étais sûr de faire juste... J'ai réessayé:

C:\Users\Administrateur>tnsping ORCL_DYN

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 20-JUIL.
-2012 11:56:14

Copyright (c) 1997, 2010, Oracle. All rights reserved.

Fichiers de paramÞtres utilisÚs :
C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora


Adaptateur TNSNAMES utilisÚ pour la rÚsolution de l'alias
Tentative de contact de (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl))
)
TNS-12560: TNS : erreur d'adaptateur de protocole

Maintenant, pour ce qui est des variables d'environnement, je suis un peu confus, car ça marchait auparavant.

Ma variable ORACLE_SID est 'orcl3' (une base qui se trouve sur ma machine). Dois-je la changer à 'orcl' ? Dois-je comprendre qu'il faut modifier cette variable à chaque fois qu'on veut travailler sur une nouvelle base ? Est-ce que je dois spécifier le nom de la base qui se trouve sur le serveur ou me suffit-il de mettre à jour le ORACLE_SID sur le serveur lui-même ?

Ma variable ORACLE_HOME, quant à elle, n'avait pas de valeur ! J'ai mis le nom du dossier où se trouvent les dossiers 'admin', 'oradata', 'product', 'diag', 'flash_recovery_area', (C:\appli\Oracle)... C'est bien juste, ou faut-il mettre plutôt quelque chose de ce genre: C:\appli\Oracle\product\11.2.0\dbhome_1 ?

Sur le serveur, les deux variables n'existaient pas, alors je les ai créées.... mais je n'ai pas observer d'améliorations... Une idée ? Ai-je fait une faute ?

Merci :)
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
47
Ca ne va pas être facile ton histoire :)
Si tu dis qu'avant ça fonctionnait et que maintenant ça ne fonctionne plus, quelque chose dans la config ou l'environnement à changé.

c'est un labo ou une base en production ?

tu as regardé dans les fichiers alert et trace du listener les messages d'erreurs ?
Tu as pensé à stopper et redémarrer le listener sur le serveur ?

DROE

L'expérience, c'est le nom que chacun donne à ses erreurs
Messages postés
36
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
24 septembre 2012
1
Non, mes questions sont jamais faciles ! (sinon, normalement, je me débrouille tout seul ;) )

Ce qui a changé, comme je l'ai dit plus haut, c'est qu'on a mis un nouveau routeur, parce que le zyxel (notre modem qui fait maintenant office de bridge) faisait du mauvais boulot.

C'est une base de labo, pas de production.

J'ai pas trouvé de fichiers listener.log. De quel fichier parles-tu exactement ?
J'ai trouvé un fichier sqlnet.log, (dans D:\APPLI\ORA11\product\11.2.0\dbhome_1\NETWORK\log), mais ça n'a pas l'air d'être ça:

Fatal NI connect error 12528, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DYNAXIS-SRV)(PORT=1521))(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=D:\APPLI\ORA11\product\11.2.0\dbhome_1\bin\emagent.exe)(HOST=DYNAXIS-SRV)(USER=Syst?me))))

VERSION INFORMATION:
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.3.0 - Production
Time: 20-JUIN -2012 16:30:29
Tracing not turned on.
Tns error struct:
ns main err code: 12564
TNS-12564: TNS : connexion refusée
ns secondary err code: 0
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0

IPv6 est déjà désactivé sur le router : 'The default setting is "Disabled", which turns off the IPv6 function.'

Mais tu confirmes que j'ai bien remplis les variables ORACLE_HOME et ORACLE_SID ?
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
47
supprime les variables que tu as créé sur le serveur, cela ne servira à rien pour ce problème. (oracle_home= C:\appli\Oracle\product\11.2.0\dbhome_1)
Ton soucis à résoudre par forum est complexe, il y a tellement de param à prendre en compte et à tester pour faire un diag.
Depuis le changement des équipements, le serveur et ton pc ont ils étaient redemarrés ?
Messages postés
36
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
24 septembre 2012
1
Bizarre, ton message est différent de celui que j'ai reçu par e-mail.

Ok, j'ai changé mes variables. Mais je ne suis toujours pas sûr du SID que je dois mettre sur ma machine. Dans le doute, j'ai mis orcl (la base sur le serveur).

je sais que c'est compliqué...

Le serveur n'a pas été redémarré, non... J'y ai même pas pensé :/ Je vais faire ça.

En attendant, le lsnrctl start et stop ne fonctionne pas sur ma machine... Apparemment, il n'y a pas de processus d'écoute. J'ai regardé la liste des services et le OracleOraDb11g_home1TNSListener n'est pas démarré et ne veut pas démarrer. Qunad j'essaie, un message m'informe qu'il a démarré et s'est ensuite arrêté automatiquement parce qu'il n'est pas utilisé par d'autres services.

mais est-ce que le listener de ma machine doit vraiment fonctionner ? Après tout, la base qui m'intéresse se trouve sur le serveur...
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
47
Message différent car réédité, ce que je te proposais avec les ports n'était pas correct.

Oui le lsnrctl stop et lsnrctl start est à faire sur le serveur.
Fait un lsnrctl status et copie colle le

Sinon copie colle ici :
- le listener.ora du serveur
- le sqlnet.ora du serveur

- le tnsnames.ora de ton pc
- le sqlnet.ora de ton pc




Messages postés
36
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
24 septembre 2012
1
D'accord. J'ai alors remis les mêmes ports (1521) partout. J'ai également redémarré les deux machines: aucun changement.

C:\Windows\system32>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 20-JUIL.-2012 17:
11:48

Copyright (c) 1991, 2011, Oracle. All rights reserved.

Connexion Ó (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUT du PROCESSUS D'ECOUTE
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Produ
ction
Date de dÚpart 20-JUIL.-2012 16:48:48
DurÚe d'activitÚ 0 jours 0 heures 23 min. 0 sec
Niveau de trace off
SÚcuritÚ ON: Local OS Authentication
SNMP OFF
Fichier de paramÞtres du processus d'Úcoute D:\APPLI\ORA11\product\11.2.0\db
home_1\network\admin\listener.ora
Fichier journal du processus d'Úcoute D:\APPLI\ORA11\diag\tnslsnr\DYNAXIS-SRV\listener\alert\log.xml
RÚcapitulatif d'Úcoute des points d'extrÚmitÚ...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DYNAXIS-SRV)(PORT=1521)))
RÚcapitulatif services...
Le service "CLRExtProc" comporte 1 instance(s).
L'instance "CLRExtProc", statut UNKNOWN, comporte 1 gestionnaire(s) pour ce service...
Le service "orcl" comporte 1 instance(s).
L'instance "orcl", statut READY, comporte 1 gestionnaire(s) pour ce service...

Le service "orclXDB" comporte 1 instance(s).
L'instance "orcl", statut READY, comporte 1 gestionnaire(s) pour ce service...

La commande a rÚussi

J'ai regardé le fichier D:\APPLI\ORA11\diag\tnslsnr\DYNAXIS-SRV\listener\alert\log.xml, mais c'est plutôt inintelligible.

Voilà mes fichiers:

listener du serveur:

# listener.ora Network Configuration File: D:\APPLI\ORA11\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\APPLI\ORA11\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\APPLI\ORA11\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521))
)
)

ADR_BASE_LISTENER = D:\APPLI\ORA11



sqlnet du serveur:
# sqlnet.ora Network Configuration File: D:\APPLI\ORA11\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)




tnsname de ma machine:
# tnsnames.ora Network Configuration File: C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

ORCL3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DYN-YBI-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl3)
)
)

ORCL_DYN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)





sqlnet de ma machine:
# sqlnet.ora Network Configuration File: C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
Une connexion telnet aboutit-elle ?
telnet <ip.serveur> 1521

Puis, vu que le .ora contient des alias et non des IP :
telnet <alias-serveur> 1521
Messages postés
36
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
24 septembre 2012
1
J'ai dû activer la commande telnet avant. Sur ma machine, j'ai fait:
pkgmgr.exe /iu:TelnetClient
et sur le serveur, j'ai fait:
pkgmgr.exe /iu:TelnetServer

J'espère que c'est juste, parce que la commande n'a pas fonctionné :/

C:\Users\Administrateur>telnet DYNAXIS-SRV 1521
Connexion à DYNAXIS-SRV...Impossible d'ouvrir une connexion à l'hôte, sur le port 1521: Échec lors de la connexion

C:\Users\Administrateur>telnet 192.168.1.33 1521
Connexion à 192.168.1.33...Impossible d'ouvrir une connexion à l'hôte, sur le port 1521: Échec lors de la connexion

Est-ce que ça veut dire que le port 1521 du serveur ne répond pas ?
Il n'était pas nécessaire d'installer un ServerTelnet: le client telnet est un client TCP très basique.
telnet google.fr 80
Signifie d'ouvrir une connexion sur le port 80 de google.fr, comme pourrait le faire un navigateur HTTP.

Donc si Telnet a échoué, soit le port 1521 n'est pas joignable (firewall ? filtrage par port ? filtrage par IP?), soit c'est le serveur lui même qui ne l'est plus.

Un test de ping pourrait donner une meilleure idée:
ping <ip-du-serveur>
ping <alias-du-serveur>

Si l'un des ping réussit, c'est qu'un parefeu bloque la connexion sur le port 1521. S'ils échouent tous les 2, on ne sera pas plus avancé.

Les ping passent sans problème... J'ai déjà vérifier le nouveau routeur, qui ne semble pas avoir la moindre restriction particulière. Après, c'est peut-être dû au modem (le routeur Linksys qui fait office de bridge), mais ce serait quand même très étonnant. Quant au serveur lui-même, il me laissait me connecter au port 1521 il y a deux semaines... Je vais regarder si j'ai moyen de vérifier que le port 1521 n'est pas bloqué...
Si, depuis le serveur, la commande 'telnet google.fr 1521 échoue, ça veut dire que le port est bloqué depuis le serveur, non ?
Faire un '"telnet google.fr 1521"ne t'aidera pas beaucoup :)
Il est peu probable que le port 1521 de 'google.fr soit ouvert et en écoute ;)

Si le ping a marché, il faudrait voir à essayer une connexion TCP sur un port autre que 1521. N'y a-t-il pas un serveur HTTP dessus, un serveur SSH soir même un serveur FTP ?
S'il y a un parefeu configuré pour un usage Web classique, celui-ci devrait autoriser la connexion à de tels services.

Ok ! Je suis allé sur le serveur et j'ai créé une règle pour accepter les entrées et les sorties TCP sur le port 1521. Et ça marche ! par contre, je ne comprends pas pourquoi ça marchait il y a deux semaines et pas la semaine dernière... Faut que je passe en revue les autres règles.

En tous les cas, merci infiniment à DROE et A.Nonymous pour leur aide ! :) Vraiment, merci beaucoup !

Pour la postérité, je précise que le problème n'était pas un changement de règle de connexion sur le serveur, mais plutôt un changement de domaine (public/entreprise/privé). Les réseaux avaient été défini comme public et ça a poussé le serveur à se prémunir de certains connexions (si j'ai bien compris).