【问题标题】:Oracle TNS names not showing when adding new connection to SQL Developer向 SQL Developer 添加新连接时不显示 Oracle TNS 名称
【发布时间】:2010-09-30 07:34:16
【问题描述】:

我正在尝试使用 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 名称显示为选项。

我有什么遗漏吗?

【问题讨论】:

    标签: database oracle oracle-sqldeveloper tnsnames tns


    【解决方案1】:

    SQL Developer 将按此顺序在以下位置查找 tnsnames.ora 文件

    1. $HOME/.tnsnames.ora
    2. $TNS_ADMIN/tnsnames.ora
    3. 注册表中的 TNS_ADMIN 查找键
    4. /etc/tnsnames.ora(非windows)
    5. $ORACLE_HOME/network/admin/tnsnames.ora
    6. Lo​​calMachine\SOFTWARE\ORACLE\ORACLE_HOME_KEY
    7. Lo​​calMachine\SOFTWARE\ORACLE\ORACLE_HOME

    要查看哪个 SQL Developer 正在使用,请在工作表中发出命令 show tns

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

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

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

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

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

      从 Windows 命令行: 回显 %TNS_ADMIN%

      来自 Linux: 回声 $TNS_ADMIN

    3. 重启 SQL Developer

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

    【讨论】:

    • 对我来说:$HOME/.tnsnames.ora 不起作用……我改用了 $HOME/tnsnames.ora。另请注意:您需要转到工具 -> 首选项,搜索“tns”并将目录指向 $HOME
    • 尽管这在 SQL developer 1.5 版本的发行说明中,但我发现在 Ubuntu 12.04 LTS 只有 #5 有效。请尝试以下步骤来检查您是否属于这种情况:forums.oracle.com/message/2769285#2769285值得注意:作者在Win Vista上遇到了问题。
    • 在 Windows 中为我工作。永远记录事情 FTW!
    • 设置 TNS_ADMIN 对我不起作用。相反,我在计算机上搜索了所有 TNSNAMES 文件并更新了所有文件的内容。不知道为什么 Windows 7 Sql Developer 坚持在某个旧文件夹中使用其他一些 TNSNAMES 文件。
    • 注意:$TNS_ADMIN 是 DIRECTORY 而不是实际的 .ora 文件
    【解决方案2】:

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

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

    【讨论】:

    • 接受的答案对我不起作用,但确实如此(Windows Server 2008R2)
    • 遇到了同样的问题,但是 SQL Developer 还在 %TNS_ADMIN%\tnsnames.ora 之前查看了 %userprofile%\tnsnames.ora,这就是我有多余的 tnsnames.ora 文件的地方。
    【解决方案3】:

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



    Preferences 选项 expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory 中出现 tnsnames.ora
    然后点击 Ok
    如下图所示。

    你已经完成了!

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

    【讨论】:

    • 找不到“Databse:Advanced” ==>我的版本是 1.5.5
    • 对于低于 2.1 的版本,或者如果您没有在 2.1 或更高版本上指定 Tnsnames 目录,请按照@JasonAnderson answer 中的说明进行休耕。
    • 我在工具->首选项->数据库->高级参数菜单中没有 Tnsnames 目录选项。我正在使用 SqlDeveloper v1.1.3
    【解决方案4】:

    您始终可以通过运行 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 home 的系统中准确使用哪个 tnsnames 文件时出现的不可避免的问题。

    【讨论】:

    • 如何安装tnsping工具??
    • 在客户端安装中有一个用于数据库工具或类似的复选框。
    【解决方案5】:

    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 开发的明确不区分大小写的文件格式的内容视为区分大小写的内容,我对此并不感到惊讶?

    【讨论】:

    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

      上述更改都没有对我的情况产生任何影响。我可以在命令窗口中运行 TNS_PING,但 SQL Developer 无法确定 tnsnames.ora 的位置。

      我的问题(Windows 7 - 64 位 - Enterprise)是 Oracle 安装程序将开始菜单快捷方式指向错误版本的 SQL Developer。安装程序似乎附带了三个 SQL Developer 实例。一个在 %ORACLE_HOME%\client_1\sqldeveloper\ 中,两个在 %ORACLE_HOME%\client_1\sqldeveloper\bin\ 中。

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

      我扔掉了旧的 Start 快捷方式并安装了 %ORACLE_HOME%\client_1\sqldeveloper\sqldeveloper.exe 的快捷方式。这种变化解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2017-12-04
        • 1970-01-01
        • 2018-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-01
        • 2019-04-08
        • 1970-01-01
        相关资源
        最近更新 更多