【问题标题】:Use tnsnames.ora in Oracle SQL Developer在 Oracle SQL Developer 中使用 tnsnames.ora
【发布时间】:2026-01-18 21:25:02
【问题描述】:

我正在评估Oracle SQL Developer

我的tnsnames.ora 已填充,tnspingtnsnames.ora 中定义的连接工作正常。尽管如此,SQL Developer 并没有显示任何连接。

Oracle SQL Developer Soars 提到,如果

您的机器上已经安装了 Oracle 客户端软件和 tnsnames.ora 文件,Oracle SQL Developer 将自动从 tnsnames.ora 中定义的网络服务名称填充连接导航器。

我也尝试设置我的TNS_ADMIN 环境变量,但重启SQL Developer 后仍然没有显示连接。

有什么想法吗?
有人成功使用 SQL Developer 和 tnsnames.ora 吗?

【问题讨论】:

  • 我下载并安装了 Oracle SQL Developer 以连接到现有的 Oracle 11g 数据库。但是我似乎还需要下载和安装 Oracle 客户端软件,如果我在 Windows 10 上,我应该使用哪一个?

标签: sql oracle tnsnames oracle-sqldeveloper


【解决方案1】:

这个excellent answer 到一个类似的问题(我以前找不到,很遗憾)帮助我解决了这个问题。

从参考答案复制内容:

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

$HOME/.tnsnames.ora
$TNS_ADMIN/tnsnames.ora
注册表中的 TNS_ADMIN 查找键
/etc/tnsnames.ora(非 Windows)
$ORACLE_HOME/network/admin/tnsnames.ora
本地机器\软件\ORACLE\ORACLE_HOME_KEY
LocalMachine\SOFTWARE\ORACLE\ORACLE_HOME

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

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

在 Windows 中,这是通过导航到控制面板 > 系统 > 高级系统设置 > 环境变量...
在 Linux 中,在主目录的 .profile 文件中定义 TNS_ADMIN 变量。

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

从 Windows 命令行:echo %TNS_ADMIN%

来自 linux:echo $TNS_ADMIN

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

【讨论】:

  • 我知道已经有一段时间了,但你能在这里拿出答案的相关部分吗?以防万一那个答案(甚至是问题)被删除。
  • 基本上它会四舍五入设置 TNS_ADMIN 系统变量(因为 SQL Developer 在那里搜索〜首先),并且在重新启动 SQL Developer 后,选择 New Connection,然后在 Connection Type 下拉列表中,而不是 Basic,选择 TNS -所以 - tnsnames 看起来没问题,但你不应该期望连接会自动填充(我就是这种情况)
  • 搜索带我去她,所以已经更新了答案,因为已经提到了作者@DennisMeng​​span>
【解决方案2】:

我遇到了同样的问题,tnsnames.ora 在所有其他工具上都可以正常工作,但 SQL Developer 不会使用它。我尝试了网络上可以找到的所有建议,包括此处提供的链接上的解决方案。
没有任何效果。

事实证明,数据库正在缓存 tnsnames.ora 的备份副本,例如 tnsnames.ora.bk2tnsnames09042811AM4501.baktnsnames.ora.bk 等。普通用户无法读取这些文件。

我怀疑 sqldeveloper 正在为名称进行模式匹配,它试图读取其中一个备份副本但无法读取。所以它只是优雅地失败并且在下拉列表中没有显示任何内容。

解决方案是使所有文件可读或删除或将备份副本移出 Admin 目录。

【讨论】:

  • 这可能正是您所看到的。 SQLPlus 和 SQL Developer 都可以看到/解析/读取 tnsnames - 因此,如果一个不好,它可能会级联并导致您的问题。
【解决方案3】:

这对我有帮助:

发布时间:2011 年 8 月 12 日 4:54

设置 tnsnames 目录 工具->首选项->数据库->高级->Tnsnames目录

https://forums.oracle.com/forums/thread.jspa?messageID=10020012&#10020012

【讨论】:

    【解决方案4】:
    • SQLDeveloper中浏览Tools --> Preferences,如下图所示。



    • Preferences 选项 expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory 中存在 tnsnames.ora
    • 然后点击确定, 如下图所示。
      tnsnames.ora 位于 Drive:\oracle\product\10x.x.x\client_x\NETWORK\ADMIN

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

    【讨论】:

    • 大家,只是对这篇旧(但很有帮助)帖子的一点更新:不要尝试在 Windows 上使用符号链接。 SQL 开发人员似乎不知道如何使用它。让我失去了一些时间。希望它能拯救你的。
    • @Hellday5432 - 是的,这是正确的。 SQL Dev 在不理解快捷方式的 Java 上运行;例如,当打开文件时,我们不能使用快捷方式跳转到目录。
    • Windows 快捷方式 != 符号链接。 howtogeek.com/howto/16226/…
    • 我下载并安装了 Oracle SQL Developer 以连接到现有的 Oracle 11g 数据库。但是我似乎还需要下载和安装 Oracle 客户端软件,如果我在 Windows 10 上,我应该使用哪一个?
    • 我在 SQL Developer 版本 1.5.5 中没有看到 Tnsnanes 目录选项。
    【解决方案5】:

    在较新版本的 macOS 上,还必须设置 java.library.path。最简单/最安全的方法 [1] 是创建 ~/.sqldeveloper/<version>/sqldeveloper.conf 文件并按如下方式填充它:

    AddVMOption -Djava.library.path=<instant client directory>
    

    [1]https://community.oracle.com/message/14132189#14132189

    【讨论】: