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

时间:2009-01-08 16:57:44

标签: database oracle oracle-sqldeveloper tnsnames 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中,当我尝试创建新连接时,没有TNS名称显示为选项。

我有什么遗失的吗?

7 个答案:

答案 0 :(得分:169)

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 \ ORACLE_HOME_KEY
  7. LOCALMACHINE \ SOFTWARE \ ORACLE \ ORACLE_HOME
  8. 要查看SQL Developer正在使用哪一个,请在工作表中发出命令show tns

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

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

      在Windows中,通过导航到控制面板>来完成此操作。 系统> 高级系统设置> 环境变量......

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

    2. 确认操作系统正在识别此环境变量

      从Windows命令行: echo%TNS_ADMIN%

      来自linux: echo $ TNS_ADMIN

    3. 重新启动SQL Developer

    4. 现在在SQL Developer中右键单击 Connections 并选择 New Connection ... 。在下拉框中选择 TNS 作为连接类型。您现在应该在tnsnames.ora中显示您的条目。

答案 1 :(得分:28)

打开SQL Developer。 转到工具 - >偏好 - >数据库 - >高级 然后显式设置Tnsnames目录

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

答案 2 :(得分:12)

通过运行TNSPING来检查连接(9i或更高版本),您始终可以找到正在使用的tnsnames.ora文件的位置:

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文件时出现的不可避免的问题。

答案 3 :(得分:12)

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

enter image description here

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

enter image description here

  

你已经完成了!

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

答案 4 :(得分:2)

Jason提到的步骤非常好,应该可行。不过,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开发的文件格式的内容视为区分大小写,并且明确区分大小写?

答案 5 :(得分:1)

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

答案 6 :(得分: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的快捷方式。这个改变解决了我的问题。