ChatGPT解决这个技术问题 Extra ChatGPT

在 Oracle SQL Developer 中使用 tnsnames.ora

我正在评估 Oracle SQL Developer

我的 tnsnames.ora 已填充,并且 tnsnames.ora 中定义的连接的 tnsping 工作正常。尽管如此,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 上,我应该使用哪一个?

C
Chandra Sekhar

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

在首选项选项中展开数据库 --> 选择高级 --> 在“Tnsnames 目录”下 --> 浏览 tnsnames.ora 所在的目录。

然后点击确定,如下图所示。 tnsnames.ora 位于 Drive:\oracle\product\10x.xx\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 目录选项。
C
Community

这个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 LocalMachine\SOFTWARE\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...。在下拉框。您来自 tnsnames.ora 的条目现在应该显示在此处。


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

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

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

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

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


这可能正是您所看到的。 SQLPlus 和 SQL Developer 都看到/解析/读取 tnsnames - 所以如果一个不好,那可能会级联并导致您的问题。
m
marchelloUA

这帮助了我:

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

设置tnsnames目录tools->Preferences->Database->advanced->Tnsnames目录

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


d
dinvlad

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

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

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