向SQL Developer添加新连接时不显示Oracle TNS名称

我试图用SQL Developer连接到一个oracle数据库。

我已经安装了.Net的oracle驱动,并把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中,当我尝试创build一个新的连接时,没有TNS名称显示为选项。

有什么我失踪?

SQL Developer将按照以下顺序查找tnsnames.ora文件

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora中
  3. TNS_ADMIN在registry中的查找键
  4. /etc/tnsnames.ora(非Windows)
  5. $ ORACLE_HOME /networking/ admin / tnsnames.ora中
  6. LOCALMACHINE \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LOCALMACHINE \ SOFTWARE \ ORACLE \ ORACLE_HOME

如果您的tnsnames.ora文件未被识别,请使用以下过程:

  1. 定义一个名为TNS_ADMIN的环境variables来指向包含你的tnsnames.ora文件的文件夹。

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

    在Linux中,在主目录中的.profile文件中定义TNS_ADMINvariables。

  2. 确认操作系统正在识别这个环境variables

    从Windows命令行:echo%TNS_ADMIN%

    从linux:echo $ TNS_ADMIN

  3. 重新启动SQL Developer

  4. 现在在SQL Developer中,右键单击Connections并selectNew Connection …。 在下拉框中selectTNS作为连接types。 你现在的tnsnames.ora条目现在应该显示在这里。

打开SQL Developer。 转到工具 – >首选项 – >数据库 – >高级然后明确设置Tnsnames目录

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

您可以随时通过运行TNSPING来查找正在使用的tnsnames.ora文件的位置以检查连接性(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中input的内容,而不是系统找不到它。 也就是说,我同意使用tns_admin环境variables集是一件好事,因为它避免了在确定具有多个oracle家的系统中使用哪个tnsnames文件时出现的不可避免的问题。

SQLDeveloper中浏览Tools --> Preferences ,如下图所示。

在这里输入图像说明

选项中, expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory tnsnames.ora所在expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory
然后点击确定
如下图所示。

在这里输入图像说明

你已经完成了!

现在您可以通过TNSnames选项进行连接。

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

在Sql Developer中,导航到Tools-> preferences-> Datababae-> advanced-> Set Tnsname目录到包含tnsnames.ora的目录

上述变化在我的情况中没有任何变化。 我可以在命令窗口中运行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时都会要求input密码,当我selectTNS作为连接机制时,不记得我做出的select,并显示一个空白列表。 在其他post中引用的数据库高级设置中也没有TNS目录字段。

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