2009-01-08 68 views
85

Estoy intentando conectarme a una base de datos de Oracle con SQL Developer.No se muestran los nombres de Oracle TNS al agregar una nueva conexión a SQL Developer

He instalado los controladores de Oracle Net y se coloca en el archivo tnsnames.ora
C:\Oracle\product\11.1.0\client_1\Network\Admin

estoy usando el siguiente formato en el tnsnames.ora:

dev = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = idpdev2) 
    ) 
) 

En SQL Developer, cuando Intento crear una nueva conexión, no aparecen nombres TNS como opciones.

¿Hay algo que me falta?

Respuesta

160

SQL Developer se verá en la siguiente ubicación en este orden para un archivo tnsnames.ora

  1. $ tecla INICIO/.tnsnames.ora
  2. $ TNS_ADMIN/tnsnames.ora
  3. TNS_ADMIN de búsqueda en el registro
  4. /etc/tnsnames.ora (no ventanas)
  5. $ ORACLE_HOME/network/admin/tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ O ACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

para ver cuál SQL Developer está utilizando, ejecute el comando show tns en la hoja de

Si no está siendo reconocido su archivo tnsnames.ora, utilice el siguiente procedimiento:

  1. Definir una variable de entorno llamada TNS_ADMIN para que apunte a la carpeta que contiene su tnsnames.ora f ile

    En Windows, esto se hace mediante la navegación a Panel de control> Sistema > Configuración avanzada del sistema >variables de entorno ...

    En Linux, definir la variable deTNS_ADMIN en el archivo .profile en su directorio de inicio.

  2. Confirmar el sistema operativo es el reconocimiento de esta variable ambiental

    Desde la línea de comandos de Windows: echo% TNS_ADMIN%

    desde Linux: echo $ TNS_ADMIN

  3. Reiniciar SQL Developer

  4. Ahora, en SQL Developer, haga clic derecho en Connections y seleccione Nueva conexión ....Seleccione TNS como tipo de conexión en el cuadro desplegable. Sus entradas de tnsnames.ora ahora deberían mostrarse aquí.
+0

Perfecto, gracias! – Americus

+0

Casi le hago la misma pregunta. Gracias. –

+11

Defina una variable de entorno llamada TNS_ADMIN que apunta a la CARPETA que contiene su archivo tnsnames.ora – detroitpro

12

Siempre se puede encontrar la ubicación del archivo tnsnames.ora siendo utilizados mediante la ejecución de TNSPING para comprobar la conectividad (9i o posterior):

C:\>tnsping dev 

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38 

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

Used parameter files: 
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora 


Used TNSNAMES adapter to resolve the alias 
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV))) 
OK (30 msec) 

C:\> 

A veces, el problema es con la entrada que hizo en tnsnames.ora, no es que el sistema no pueda encontrarlo. Dicho esto, acepto que tener una variable de entorno tns_admin establecida es una buena cosa, ya que evita los problemas inevitables que surgen al determinar exactamente qué archivo tnsnames se está utilizando en sistemas con múltiples hogares Oracle.

+0

¿cómo puedo instalar la herramienta de conversión? – Kiquenet

+0

En la instalación del cliente, hay una casilla de verificación para herramientas de base de datos o algo así. – DCookie

2

Los pasos mencionados por Jason son muy buenos y deberían funcionar. Sin embargo, hay un pequeño giro con SQL Developer. Almacena en caché las especificaciones de conexión (host, nombre del servicio, puerto) la primera vez que lee el archivo tnsnames.ora. Entonces, no invalida las especificaciones cuando la entrada original se elimina del archivo tnsname.ora. La memoria caché persiste incluso después de que SQL Developer haya finalizado y se haya reiniciado. Esta no es una forma tan ilógica de manejar la situación. Incluso si un archivo tnsnames.ora no está disponible temporalmente, SQL Developer puede realizar la conexión mientras las especificaciones originales sigan siendo verdaderas. El problema viene con su próximo pequeño giro. SQL Developer trata los nombres de los servicios en el archivo tnsnames.ora como valores que distinguen entre mayúsculas y minúsculas al resolver la conexión. Entonces, si solías tener un nombre de entrada ABCD.world en el archivo y lo reemplazaste con una nueva entrada llamada abcd.world, SQL Developer NO actualizaría sus especificaciones de conexión para ABCD.world - tratará a abcd.world como un diferente conexión por completo. ¿Por qué no me sorprende que un producto de Oracle trate el contenido de un formato de archivo desarrollado por Oracle que distinga entre mayúsculas y minúsculas y distinga entre mayúsculas y minúsculas?

+0

@allen: ¿sabes cómo obligarlo a borrar esta lista? Si es así, responda a http://stackoverflow.com/q/6412559/168646 –

29

Desarrollador de SQL abierto. vaya a Herramientas -> Preferencias -> Bases de datos -> Avanzado A continuación, establezca explícitamente el directorio TNSNAMES

Mi TNSNAMES se ha configurado correctamente y que podía conectarse a sapo, SQL * Plus, etc, pero que tenía que hacer esto para conseguir Desarrollador SQL para trabajar. Tal vez fue un problema de Win 7, ya que fue un dolor de instalar también.

+0

Rápido y simple. Gracias – stoj

+0

Esta es la solución más simple y funciona – bobfet1

+0

La respuesta aceptada no funcionó para mí pero sí (Windows Server 2008R2) –

1

en SQL Developer, navidate a Herramientas> Preferencias> Datababae-> Avanzado-> Conjunto TNSNAME directorio al directorio que contiene tnsnames.ora

11

En SQLDeveloper Navegar Tools --> Preferences, como se muestra en la imagen de abajo.

enter image description here

En las Preferencias opciones expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory donde tnsnames.ora presente.
Luego haga clic en Ok.
como se muestra en el diagrama a continuación.

enter image description here

que has hecho!

Ahora se puede conectar a través de los TNSNAMES opciones.

+0

No se puede encontrar "Databse: Advanced" ==> mi versión es 1.5.5 –

+1

Para versiones inferiores a 2.1 o si no ha especificado un directorio Tnsnames en 2.1 o superior, deje en barbecho como se especifica en [@JasonAnderson answer] (http://stackoverflow.com/a/425104/1213738). –

+0

No tengo la opción Directorio de nombres en el menú Herramientas-> Preferencias-> Fichas de datos-> Parámetros avanzados. Estoy usando SqlDeveloper v1.1.3 – Ahmedov

0

Ninguno de los cambios anteriores marcó ninguna diferencia en mi caso.Podría ejecutar TNS_PING en la ventana de comandos, pero SQL Developer no pudo determinar dónde estaba tnsnames.ora.

El problema en mi caso (Windows 7 - 64 bit - Enterprise) fue que el instalador de Oracle señaló el acceso directo del menú Inicio a la versión incorrecta de SQL Developer. Parece haber tres instancias de SQL Developer que acompañan al instalador. Uno está en% ORACLE_HOME% \ client_1 \ sqldeveloper \ y dos están en% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

El instalador instaló un acceso directo al menú de inicio que apuntaba a una versión en el directorio bin que simplemente no funcionaba. Le pedía una contraseña cada vez que comenzaba SQL Developer, no recordaba las elecciones que había hecho y mostraba una lista en blanco cuando elegía TNS como el mecanismo de conexión. Tampoco tiene el campo Directorio TNS en la configuración avanzada de la Base de datos a la que se hace referencia en otras publicaciones.

Lancé el acceso directo de inicio e instalé un acceso directo a% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Ese cambio solucionó el problema en mi caso.

Cuestiones relacionadas