Pregunta

Mi objetivo es conectar a una instancia de Oracle 9i de mi máquina OS X. He seguido las instrucciones de configuración aquí y consiguió a través de ellos sin errores (con el tiempo). Sin embargo, estoy encontrando que sqlplus no puede conectarse:

[ ethan@gir ~ ]$ sqlplus xxx/yyy@zzz

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 17 10:13:08 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

espera muuucho ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Enter user-name: xxx
Enter password: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

Mi archivo tnsnames.ora ...

zzz =
  (DESCRIPTION = 
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = dbhost)
        (PORT = 1521))
    )
  (CONNECT_DATA =
    (SERVICE_NAME = zzz)
  )
)

Tal vez hay una variable de entorno que necesita ser establecido?


Actualizar

capaz de hacer ping máquina host DB ningún problema.

Probado ...

sqlplus xxx/yyy@//dbhost/zzz

Got ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

SID intentado usar en lugar de SERVICE_NAME en tnsnames.ora. No parecen cambiar el resultado. Vuelto a SERVICE_NAME.


entradas último par de sqlnet.log ...

***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 10:33:06
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0


***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 11:24:08
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0

respuesta parcial

Gracias a todos por sus respuestas. Eran útiles. Me di cuenta de que había un problema de DNS. Yo era capaz de hacer ping por nombre de host, por lo que pensé que debería funcionar bien. También probé I.P. habla a. Resultó que necesitaba el interno I.P. "10.1.x.x" abordar para que funcione en esta máquina OS X (nombre de host, pero está muy bien en Windows).

En este punto, puedo conectar con la ...

sqlplus xxx/yyy@//INTERNAL_IP/zzz

Sin embargo, con los valores introducidos en tnsnames.ora, esto todavía no funciona ...

sqlplus xxx/yyy@zzz

...

ORA-12154: TNS:could not resolve the connect identifier specified

He buscado un archivo tnsnames.ora muestra que estaba cerca de lo que necesitaba y se copia el contenido en mi archivo. Cambiado los parametros y ahora funciona todo. No sé por qué la mía no estaba funcionando.

¿Fue útil?

Solución

Puesto que usted está utilizando un cliente 10g, es recomendable utilizar la sintaxis Easy Connect lugar:

export TWO_TASK=//dbhost/zzz
sqlplus xxx/yyy

, o simplemente esta:

sqlplus 'xxx/yyy@//dnhost/zzz'

También puedes ver sus puntos ORACLE_HOME a la carpeta correcta: tnsnames.ora se busca en $ORACLE_HOME/network/admin/tnsnames.ora

Otros consejos

Sus soportes parecen correctas.

Trate de usar el SID:

El siguiente es un ejemplo de un archivo tnsnames.ora:

IDENTIFIER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP) (HOST = userid.myhosteddb.net)(PORT = 1521))
    )
    (CONNECT_DATA = (SID = odb))
  )

leer sobre SID aquí.

Puede utilizar

sqlplus user/password@servicename_host

Si no puede conectarse puede utilizar

sqlplus user/password@(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))

si está utilizando Linux * Nix otro sistema operativo que necesita para usar comillas de lo contrario el () son interpretados por el shell

por ejemplo

sqlplus user/password@'(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))'

No es probable que un archivo sqlnet.log que se genera en el directorio de trabajo. Esto puede ayudar a usted o si usted publica su contenido nos podría dar más información.

En su ejemplo, usted está tratando dos cosas diferentes. En la línea de comandos que utilizó "xxx / yyy @ zzz". Parece que esto es encontrar la entrada "ZZZ" en tnsnames.ora con éxito, pero el tiempo de espera indica que se está recibiendo ninguna respuesta desde el servidor. Se puede hacer ping dbhost éxito?

En su segundo intento que acaba de introducir "xxx" para el nombre de usuario; lo cual tiene sentido si está acostumbrado a ninguna SQLPlus, pero como se puede ver, no hay punto en el que se le pide el nombre de la base de datos. Así que en este caso se trataba de conectarse a "xxx / yyy" sin un nombre de servicio, lo que lleva al segundo error. Esto sólo significa que usted no tiene un nombre de servicio por defecto para este compromiso. Así que este error proviene de la entrada incompleta. (Se podría introducir "xxx @ zzz" para el nombre de usuario para especificar el nombre del servicio en esta pantalla. En realidad se puede introducir toda la cadena de conexión "xxx / yyy @ zzz" en el símbolo del nombre de usuario, si no le importa el ser contraseña visible.)

¿Ha intentado utilizar telnet para llegar al puerto abierto para asegurarse de que un servidor de seguridad no está bloqueando? puede valer la pena probar telnet puerto host-num

¿Creó su entorno con el oraenv guión?

¿Has probado tnsping?

$ tnsping $ORACLE_SID

Tal vez le ayudará a comparar la salida de una máquina que se conecta a la salida de una máquina que no puede conectarse. Al menos eso es lo que hago justo antes de contactar con nuestro DBA.

Puede ser un poco más detalle en lo que el error con el comando oerr:

$ oerr ora 12170
12170, 00000, "TNS:Connect timeout occurred"
// *Cause:  The server shut down because connection establishment or
// communication with a client failed to complete within the allotted time
// interval. This may be a result of network or system delays; or this may
// indicate that a malicious client is trying to cause a Denial of Service
// attack on the server.
// *Action: If the error occurred because of a slow network or system,
// reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT,
// SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values.
// If a malicious client is suspected, use the address in sqlnet.log to
// identify the source and restrict access. Note that logged addresses may
// not be reliable as they can be forged (e.g. in TCP/IP).

He tenido un problema similar y parece que Oracle sqlplus era el problema!

Conexión al igual que cualquiera de estos trabajos:

   > sqlplus MyUsername/MyPassword@MyHostname:1521/MyServiceName
   > sqlplus MyUsername/MyPassword@//MyHostname:1521/MyServiceName

(la // es opcional antes de que el nombre de host). Sin embargo, dejando fuera de la contraseña o ambos de usuario / pase no como esto:

    sqlplus @//MyHostname:1521/MyServiceName

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 2 15:59:49 2015

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    SP2-0310: unable to open file "//MyHostname:1521/MyServiceName.sql"
    Enter user-name: MyUsername
    Enter password: MyPassword
    ERROR: 
    ORA-12162: TNS:net service name is incorrectly specified

Así que, a pesar de que sqlplus le pide el nombre de usuario / contraseña, que será estúpidamente fallar con un mensaje de error falso si los escribe en en el indicador. Sólo funciona si se colocan (dos!) Al comienzo de la cadena de conexión.

  

Oracle estúpida !!!

SEGUIMIENTO ESTE ENLACE PARA instalación paso a paso y métodos de instalación de la POST .. tener cuidado con él.

Y para conectar con SQL Plus:

  1. nombre de usuario será Sistema, según la instrucción dada en enlace de arriba
  2. su contraseña NO DEBE SER tigre, pero el que se establece al inicio de la instalación

P.S: no se atierre si encuentra un problema (incompatibilidad del navegador) que conecta la empresa de Oracle mientras que las pruebas de instalación si su navegador es Google Chrome. pulse la flecha última página y página siguiente flecha para acordar los términos y haciendo clic en OK.

he resuelto este problema en mi máquina en un día .. pero será una cuestión de par de hors para usted.

soruces: soy ingeniero informático mayoría código en Java

Yo tenía el mismo error (ORA-12162: TNS: nombre del servicio de red se especifica incorrectamente), pero una razón diferente (en Windows 7 Enterprise de 64 bits). Esperamos que esto ayude a alguien:

I.T. instalado en mi trabajo de 32 y 64 bits de Oracle, y en base a mi variable PATH, el shell se veía en la ruta de 64 bits para sqlplus.exe comparado con la trayectoria de 32 bits.

Los diferentes caminos utilizar diferentes archivos tnsnames.ora y yo no tenía mi cadena de conexión en la ruta de 64 bits:

Oracle \ product \ 11.1.0 \ client_1_64bit \ network \ admin \ tnsnames.ora

Yo sólo tenía la cadena de conexión en los TNSNAMES.ORA de 32 bits: Oracle \ product \ 11.1.0 \ client_1_32bit \ network \ admin \ tnsnames.ora

Además, dado que hubo múltiples instalaciones de Oracle que tenía que quitar la variable de entorno ORACLE_HOME de modo que ambas instalaciones pueden utilizar diferentes directorios de inicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top