在 Oracle SQL Developer 中使用 tnsnames.ora

Posted

技术标签:

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

我正在评估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 上,我应该使用哪一个? 【参考方案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

【讨论】:

以上是关于在 Oracle SQL Developer 中使用 tnsnames.ora的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql developer工具 如何给用户分配权限

Oracle SQL Developer 连接 MySQL

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

ORACLE PL/SQL:在 Oracle SQL Developer 中测试 SELECT FOR UPDATE