J'ai Oracle 11 en cours d'exécution sur un serveur Windows et je suis connecté au même serveur en essayant d'utiliser SQL Plus. Lorsque j'essaie de me connecter, j'obtiens un ORA-12154 même si TNSPING et divers autres diagnostics semblent OK.
Quelqu'un peut-il suggérer pourquoi? Beaucoup de détails ci-dessous.
Je peux utiliser sqlplus si j'utilise EZCONNECT comme ça ..
sqlplus EST/[email protected]/ORCL
... mais si j'essaye de me connecter en utilisant TNSNAMES comme ceci ...
sqlplus EST/EST@ORCL
... Je reçois ...
ORA-12154: TNS:could not resolve the connect identifier specified
TNSPING fonctionne bien
C:\Documents and Settings\user1>tnsping ORCL
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 12-NOV-2013 12:41:14
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.10.15)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL))
)
OK (20 msec)
Et le écouteur ressemble à ceci:
C:\Documents and Settings\user1>lsnrctl services
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-NOV-2013 12:02:59
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:55 refused:0 state:ready
LOCAL SERVER
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: MARIEL, pid: 2400>
(ADDRESS=(PROTOCOL=tcp)(Host=mariel)(PORT=1045))
The command completed successfully
Et ça
C:\Documents and Settings\user1>lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 14-NOV-2013 12:29:21
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date 14-NOV-2013 11:41:10
Uptime 0 days 0 hr. 48 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\listener.ora
Listener Log File e:\app\administrator\diag\tnslsnr\mariel\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=192.168.10.15)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
Voici les différents fichiers de configuration:
listener.ora
# listener.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(Oracle_HOME = E:\app\Administrator\product\11.2.0\dbhome_2)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_2\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.10.15)(PORT = 1521))
)
)
ADR_BASE_LISTENER = E:\app\Administrator
tnsnames.ora
# tnsnames.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\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)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.10.15)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
sqlnet.ora
# sqlnet.ora Network Configuration File: E:\app\Administrator\product\11.2.0\dbhome_2\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)
Créez une variable d'environnement TNS_ADMIN qui pointe vers le répertoire où réside votre fichier tnsnames.ora. Essayez ensuite de vous connecter avec sqlplus.
Si cela fonctionne, je suppose que vous avez peut-être également installé le logiciel client Oracle, et lorsque vous exécutez sqlplus, il recherche le fichier tnsnames.ora dans la maison de votre client.
- Instructions pour ajouter la variable d'environnement TNS_ADMIN dans les fenêtres
1. Aller au panneau/système de contrôle
2. sélectionnez Paramètres système avancés
3. Sélectionnez l'onglet "Avancé", et le bouton de variable d'environnement est en bas.
4. créez une nouvelle variable TNS_ADMIN et indiquez le chemin où les fichiers .ora sont stockés. par exemple. C:\app\Oracle\product\11.2.0\client_1\network\admin
Sqlplus donnera cette erreur si vous avez un signe at (@) dans votre mot de passe, ce que vous faites. Sqlplus pense que vous entrez la chaîne de connexion en tant que paramètre. Modifiez votre mot de passe (vous pouvez le faire avec SQL Developer).
Moralité: n'utilisez pas de signes at dans les mots de passe Oracle.
tnslsnr
est en hausse mais la base de données est en panne.
Vérifiez que la base de données est en cours d'exécution
ps aux | fgrep pmon
S'il n'y a pas un tel processus, essayez de démarrer la base de données manuellement
su - Oracle
export Oracle_SID=XE
sqlplus sys as sysdba
Et puis dans la console SQL
startup