Bonjour,
Je viens d'installer Oracle 10g Express, pour une utilisation avec Visual Studio .NET.
J'ai donc installé Oracle 10g, tout s'est bien passé.
Via SQLPLUS, je me suis connecté ainsi :
Connexion OK, sans problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part connect SYSTEM/SysPassword@MaBase;
J'ai alors créé un utilisateur avec des droits restreints sur la base.
Je me suis ensuite connecté avec ce utilisateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 create user MonUser identified by UserPassword; grant create session to MonUser;
Là encore, connexion OK, pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part connect MonUser/UserPassword@MaBase;
J'ai donc voulu tester la connexion à ma base depuis mon application .NET. J'ai donc installé le Oracle Data Provider for .NET (depuis ce lien : http://www.oracle.com/technology/sof...txe_index.html). J'ai ajouté la référence Oracle.DataAccess.Client dans mon code, renseigné la connectionString, lancé mon appli. Là, impossible de me connecter. Au moment de l'ouverture de la connexion, j'obtiens le message d'erreur suivant :
Je me suis donc dit que j'avais loupé quelque chose dans l'install d'Oracle, et je suis retourné sur la page d'install pour avoir plus d'infos. C'est ici :ORA-12154: TNS : l'identificateur de connexion indiqué n'a pas pu être résolu
http://www.oracle.com/technology/sof...tall10202.html
Dans le point 5, ils parlent de la nécessité de configurer le Service Name local. J'ai suivi les instructions...
Et là c'est le drame...
Toujours pas de connexion depuis mon appli.
Mais pire, j'ai perdu la connexion depuis sqlplus. Enfin, pas complètement, et je ne comprends pas trop comment ça marche.
Quand je lance sqlplus, il me demande aussitôt mon nom d'utilisateur et mon mot de passe. J'ai donc testé avec les identifiants de connexion de l'utilisateur SYSTEM, et avec ceux de l'utilisateur que j'ai créés. Dans les deux cas, je me connecte bien.
Mais, et c'est là le hic, quand je suis connecté donc (par exemple via les identifiants SYSTEM/SysPassword), j'essaie la chose suivante :
Et là je me fais jeter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part connect MonUser/UserPassword@MaBase;
Alors que ça fonctionnait avant que je lance l'utilitaire de config sur Service Name...ORA-12154: TNS : l'identificateur de connexion indiqué n'a pas pu être résolu
Bref, je m'y perds un peu.
L'installation d'Oracle 10g Express s'est faite (par défaut) dans le répertoire C:\oraclexe.
Voilà à quoi ressemble le fichier LISTENER.ora correspondant :
Et le tnsnames.ora (XE est la base créée par défaut, je n'ai pas changé le nom pour le moment...) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = myHostname)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE)
Ces deux fichiers sont dans : C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 XE (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myHostName)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
Lorsque j'ai installé le provider pour .NET, il m'a créé un autre répertoire Oracle : c:\oracle. Là tout était encore normal, je m'étais connecté à ma base sans problème via sqlplus en utilisant "connect..."
Mais, à la suite de ma manip de configuration de Service Name, il a ajouté à ce niveau (dans C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN) un fichier tnsnames.ora (il n'y en avait pas avant).
Le détail de ce fichier :
Côté variables d'environnements, les deux répertoires sont renseignés dans PATH :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 # tnsnames.ora Network Configuration File: c:\oracle\product\10.2.0\client_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. XE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = myHostName)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = XE) ) )
Dernière précision, quand je lance la commande :c:\oracle\product\10.2.0\client_1\bin;C:\oraclexe\app\oracle\product\10.2.0\server\bin;...
Voilà ce que j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part c:\>tnsping xe
Bref ça répond, mais en utilisant les paramètres du répertoire c:\oracle (alors que Oracle 10g, et donc sqlplus, a été installé dans c:\oraclexe)...Fichiers de paramètres utilisés :
c:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
Adaptateur TNSNAMES utilisé pour la résolution de l'alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = ADDRESS = (PROTOCOL = TCP) (HOST = myHostname)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = XE)))
OK (50ms)
Voilà donc.
Je suppose qu'il y a un conflit quelque part, mais j'avoue ne pas être un crack en base de données, donc je sollicite les conseils des experts.
J'ai dû faire un truc de travers...Mais quoi ?
Donc je voudrais d'abord retrouver ma connexion correcte via sqlplus (via le "connect..."). Ensuite je me pencherai sur la question de la connexion à la base via mon appli .NET.
D'avance merci pour votre aide.
Partager