2010-02-18 39 views
6

Estoy intentando conectar con 11g de Oracle instalado en Linux y EL 5 y consiguiendo el error siguienteORA-12154: TNS: no podía resolver el identificador de la conexión especificado

SQL> connect sys/[email protected] as sysdba 
ERROR: 
ORA-12514: TNS:listener does not currently know of service requested in connect 
descriptor 

mis listener.ora bajo network/admin es el siguiente

LISTENER= 
    (DESCRIPTION= 
    (ADDRESS_LIST= 
     (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521)) 
     (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) 

SID_LIST_LISTENER= 
    (SID_LIST= 
    (SID_DESC= 
     (GLOBAL_DBNAME=orcl) 
     (ORACLE_HOME=/home/oracle/app/oracle/product/11g) 
     (SID_NAME=orcl)) 
    (SID_DESC= 
     (SID_NAME=plsextproc) 
     (ORACLE_HOME=/home/oracle/app/oracle/product/11g) 
     (PROGRAM=extproc))) 

MI tnsnames.ora es el siguiente

ORCL = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = orcl) 
    ) 
) 

EXTPROC_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = PLSExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

UD06= 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
     (SERVICE_NAME = orcl) 
    ) 
) 

mi show de estado lsnrctl s de la siguiente manera:

LSNRCTL> status 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for Linux: Version 11.2.0.1.0 - Production 
Start Date    17-FEB-2010 16:23:06 
Uptime     0 days 0 hr. 12 min. 33 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Listener Parameter File /home/oracle/app/oracle/product/11g/network/admin/listener.ora 
Listener Log File   /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))) 
Services Summary... 
Service "orcl" has 1 instance(s). 
    Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... 
Service "plsextproc" has 1 instance(s). 
    Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service... 
The command completed successfully 
+0

Me encontré con ** ORA-12154 ** en una máquina en la que solo se instaló ** Oracle Client **. Mi respuesta [aquí] (http://stackoverflow.com/a/26020374/1497596). – DavidRR

Respuesta

4

Puede hacer ping ud06 éxito (como ud06, no ud06.us.server.com)?

Lo que hace el comando

lsnrctl services 

espectáculo?

EDITAR: Me parece que el nombre de la instancia de la base de datos no es realmente "orcl"? Lo que me dice la salida de los servicios lsnrctl es que el servicio "orcl", aunque está definido en el archivo listener.ora, no se está ejecutando realmente.

¿Puede iniciar sesión con una conexión directa en el servidor? Si es así, ¿qué usa como valor de variable de entorno ORACLE_SID? Inicie sesión como el usuario SYS y emita el comando:

ALTER SYSTEM REGISTER;

A continuación, ejecute el comando lsnrctl services nuevamente y vea si una instancia adicional no aparece.

Además, como señala Alex, el comando tnsping informa un nombre de servicio completamente calificado. Edite el archivo sqlnet.ora y establezca el valor NAMES.DEFAULT_DOMAIN en NULL si tiene un valor.

EDITAR 2: ¿Funciona el tnsping ud06 en el servidor? ¿O es erróneo miponer que el cliente y el servidor están en sistemas diferentes?

+0

sí, puedo hacer ping solo ud06. También cuando me tnsping me sale el siguiente C: \ Documents and Settings \ a.APPLICATIONS> TNSPING ud06 TNS Ping Utility para Windows de 32 bits: La versión 10.2.0.1.0 - Producción de 17-Feb- 2 010 23:09:16 Copyright (c) 1997, 2005, Oracle. Todos los derechos reservados. archivos de parámetros usados: adaptador HOSTNAME utiliza para resolver el alias intentar ponerse en contacto (DESCRIPTION = (= CONNECT_DATA (SERVICE_NAME = ud06.us.server.com)) (DIRECCIÓN = (PROTOCOL = TCP) (HOST = 19.148. 21.230) (PORT = 1521))) OK (350 ms) – user275705

+0

lsnrctl muestra lo siguiente – user275705

+0

[oracle @ ud06 ~] $ servicios lsnrctl LSNRCTL para Linux: Versión 11.2.0.1.0 - Producción el 17-FEB-2010 23 : 13: 01 Conectando a DESCRIPTION = (DIRECCIÓN = (PROTOCOLO = tcp) (HOST = ud06) (PORT = 1521))) Resumen de servicios ... El servicio "orcl" tiene 1 instancia (s). Instance "orcl", estado UNKNOWN, tiene 1 controlador (es) para este servicio ... Controlador (es): "DEDICATED" establecido: 1 rechazado: 0 LOCAL SERVER El servicio "plsextproc" tiene 1 instancia (s) . Instance "plsextproc", estado UNKNOWN, tiene 1 controlador (es) para este servicio Handler (s): "DEDICATED" establecido: 0 refused: 0 LOCAL SERVER El comando se completó correctamente – user275705

1

El SERVICE_NAME en la salida tnsping no coincide con la entrada en tnsnames.ora; ¿Es ese archivo del cuadro de Windows o del cuadro de Linux? Parece que no tiene una entrada local (Windows) tnsnames.ora para u06 y está adivinando cuál debería ser el nombre del servicio expandiéndola, creo que eso es lo que significa la referencia al adaptador de nombre de host.

0

También me encontré con ORA-12154: TNS: no se pudo resolver el identificador de conexión especificado, y se solucionó al agregar al usuario que intentaba conectarse al grupo de instalación de oracle.

5

La respuesta a este problema es muy simple. No se preocupe por los archivos .ora o cualquier otra configuración. Oracle hace todo esto simplemente perfecto.

Solo cuando se conecta a través de la línea de comandos, se confunde con las contraseñas que tienen un símbolo @ en ellas.

Por lo tanto mientras se conecta a través de línea de comandos SQL, NO use una contraseña con una '@' en ella.Simplemente use la interfaz web para crear una cuenta que tenga una contraseña sin un símbolo '@'.

Eso es !! Problema resuelto. ¡Me había estado rompiendo la cabeza por unos días, y ahora mi problema está resuelto!

0

primer intento si se ha iniciado la instancia de Oracle:

para las ventanas:

puesta en marcha> Configuración panel-> administración touls-> Servicios-> OracleServiceORCL (mi ejemplo, por cierto) -> iniciar

0

proporcionan la cadena de conexión de la siguiente manera:

servidor: puerto/servicename; Nombre de usuario; Contraseña

Add connection image

0

también estaba enfrentando el mismo error, prueba este código:

SQL> conn hr/hr @pdborcl; 

y si encuentra el mismo error, significa que usted tiene un nombre de la base enchufable diferente. Compruebe el nombre de la base de datos conectable con sólo escribir el siguiente comando en sqlplus

sql> SELECT name, con_id FROM v$pdbs; 
0

He arreglado este problema utilizando estos pasos.

En primer lugar, se produjo este error, si no instaló el mismo directorio o unidad.

Pero la respuesta está aquí.

  1. Login windows as Adminstrator.
  2. Vaya al Panel de control.
  3. Propiedades del sistema y haga clic en Entorno
  4. Encontrar la variable de sistema operativo y cambiar el nombre como "TNS_ADMIN"

    enter image description here

  5. y cambiar el valor como "dirección del directorio de tnsnames" enter image description here

  6. Reinicia el sistema.

  7. Congrulations.
Cuestiones relacionadas