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

我有什么遗漏的吗?

有帮助吗?

解决方案

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. LocalMachine\SOFTWARE\ORACLE\ORACLE_HOME_KEY
  7. 本地机器\SOFTWARE\ORACLE\ORACLE_HOME

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

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

  1. 定义一个名为的环境变量 TNS_管理员 指向包含 tnsnames.ora 文件的文件夹。

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

    在 Linux 中,定义 TNS_管理员 主目录中 .profile 文件中的变量。

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

    从 Windows 命令行:回显%TNS_ADMIN%

    从Linux:回显 $TNS_ADMIN

  3. 重新启动 SQL 开发人员

  4. 现在在 SQL Developer 中右键单击 连接 并选择 新连接.... 。选择 总神经系统 作为下拉框中的连接类型。您来自 tnsnames.ora 的条目现在应该显示在此处。

其他提示

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

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

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

SQLDeveloper 中浏览工具 - >首选项,如下图所示。



偏好设置选项中展开数据库 - >选择高级 - >在“Tnsnames目录”下 - >浏览目录,其中 tnsnames.ora 目前。
然后点击确定
如下图所示。

  

你已经完成了!

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

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开发的文件格式的内容视为区分大小写,并且明确区分大小写?

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

以上所有变更都没有对我的情况造成任何影响。我可以在命令窗口中运行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的快捷方式。这个改变解决了我的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top