2009-01-08 193 views
85

我试图用SQL Developer连接到一个oracle数据库。向SQL Developer添加新连接时未显示Oracle TNS名称

我已经安装了甲骨文的.Net驱动程序和放置tnsnames.ora文件在
C:\Oracle\product\11.1.0\client_1\Network\Admin

我使用tnsnames.ora中的格式如下:

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

在SQL Developer中,当我尝试创建一个新的连接,没有TNS名称显示为选项。

有什么我失踪了吗?

回答

160

SQL Developer将看在以下位置顺序为tnsnames.ora文件

  1. $ HOME/.tnsnames.ora
  2. $ TNS_ADMIN/tnsnames.ora中
  3. TNS_ADMIN查找键注册表
  4. /etc/tnsnames.ora(非Windows)
  5. $ ORACLE_HOME /网络/ admin/tnsnames.ora中
  6. LOCALMACHINE \ SOFTWARE \ ORACLE \ OR ACLE_HOME_KEY
  7. LOCALMACHINE \ SOFTWARE \ ORACLE \ ORACLE_HOME

,看看哪一个SQL Developer是在工作表中使用,发出命令show tns

如果tnsnames.ora文件没有得到认可,使用以下程序:

  1. 定义一个名为TNS_ADMIN环境变量指向包含您的tnsnames.ora F中的文件夹ILE。

    在Windows中,这是通过导航到控制面板>系统>高级系统设置>环境变量...

    在Linux下完成的,在定义TNS_ADMIN变量.profile文件在您的主目录中。

  2. 确认操作系统是否认识这个环境变量

    从Windows命令行: 回声%TNS_ADMIN%

    从Linux: 回声$ TNS_ADMIN

  3. 重新启动SQL Developer的

  4. 现在在SQL Developer中右击连接并选择新连接...。在下拉框中选择TNS作为连接类型。您现在应该显示来自tnsnames.ora的条目。
+0

完美,谢谢! – Americus 2009-01-08 17:43:16

+0

我差不多问了同样的问题。谢谢。 – 2009-06-19 18:34:40

+11

定义一个名为TNS_ADMIN的环境变量,指向包含您的tnsnames.ora文件的FOLDER – detroitpro 2009-12-16 15:29:42

12

你总是可以找到tnsnames.ora文件的位置正在使用的运行TNSPING检查连接(9I或更高版本):

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:\> 

有时,问题是你作出的记项在tnsnames.ora中,不是系统找不到它。也就是说,我同意使用tns_admin环境变量集是一件好事,因为它避免了在确定具有多个oracle家庭的系统中使用哪个tnsnames文件时出现的不可避免的问题。

2

贾森提到的步骤非常好,应该工作。尽管如此,SQL Developer有一点点变化。它在第一次读取tnsnames.ora文件时缓存连接规范(主机,服务名称,端口)。然后,当从tnsname.ora文件中删除原始条目时,它不会使规格无效。即使在SQL Developer终止并重新启动后,缓存仍然存在。这不是处理这种情况的不合逻辑的方式。即使tnsnames.ora文件暂时不可用,只要原始规范仍然正确,SQL Developer仍然可以建立连接。这个问题伴随着他们的下一个转折点。 SQL Developer在解析连接时将tnsnames.ora文件中的服务名称视为区分大小写的值。因此,如果您曾经在文件中输入了名称ABCD.world,并且您将其替换为名为abcd.world的新条目,SQL Developer将不会更新其针对ABCD.world的连接规范 - 它会将abcd.world视为不同的连接在一起。 为什么我不惊讶Oracle产品会将区分大小写的Oracle开发文件格式的内容视为区分大小写?

29

打开SQL Developer。 进入工具 - >首选项 - >数据库 - >高级 然后明确设置TNSNAMES目录

我TNSNAMES是正确设置,我可以连接到蟾蜍的SQL * Plus等,但我需要这样做是为了得到SQL Developer工作。也许这是一个Win 7的问题,因为安装也很痛苦。

1

在SQL开发,navidate到工具 - >首选项 - > Datababae- - >高级>设置TNSNAME目录包含的tnsnames.ora

11

的SQLDeveloper浏览Tools --> Preferences,如示于下面的图像的目录。

enter image description here

偏好选项expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory其中的tnsnames.ora本。
然后点击Ok
如下图所示。

enter image description here

你做了!现在

你可以通过TNSNAMES选择连接。

0

上述变化在我的情况下没有任何区别。我可以在命令窗口中运行TNS_PING,但SQL Developer无法确定tnsnames.ora的位置。

在我的情况(Windows 7 - 64位 - 企业版)的问题是,Oracle安装程序指向错误版本的SQL Developer的开始菜单快捷方式。似乎有三个随同安装程序的SQL Developer实例。一个在%ORACLE_HOME%\ client_1 \ sqldeveloper \中,另外两个在%ORACLE_HOME%\ client_1 \ sqldeveloper \ bin \中。

安装程序安装了一个开始菜单快捷方式,该快捷方式指向bin目录中的一个版本,该版本根本无法运行。每次我启动SQL Developer时它都会要求输入密码,当我选择TNS作为连接机制时,不记得我做出的选择,并显示一个空白列表。它在其他帖子中引用的数据库高级设置中也没有TNS目录字段。

我扔了旧的开始快捷方式并安装了%ORACLE_HOME%\ client_1 \ sqldeveloper \ sqldeveloper.exe的快捷方式。这个改变解决了我的问题。

相关问题