向SQL Developer添加新连接时未显示Oracle TNS名称


93

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

有什么我想念的吗?

Answers:


176

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. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

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

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

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

    在Windows中,这是通过导航到“ 控制面板” >“ 系统” >“ 高级系统设置” >“ 环境变量...”来完成的。

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

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

    从Windows命令行:echo%TNS_ADMIN%

    从Linux:echo $ TNS_ADMIN

  3. 重新启动SQL Developer

  4. 现在,在SQL Developer中右键单击连接并选择新建连接。在下拉框中选择TNS作为连接类型。您从tnsnames.ora中输入的内容现在应显示在此处。

1
对我来说:$ HOME / .tnsnames.ora不起作用...我改用$ HOME / tnsnames.ora。另请注意:您将需要转至工具->首选项,搜索“ tns”并将目录指向$ HOME
Ryan Delucchi 2012年

尽管在SQL开发人员1.5版本的发行说明中有此说明,但我发现在Ubuntu 12.04 LTS上,仅#5起作用。请尝试以下步骤来检查是否符合您的情况:forums.oracle.com/message/2769285#2769285值得注意的是:作者在Win Vista上遇到了问题。
LAFK说恢复莫妮卡

在Windows中为我工作。永远记录东西!
艾萨克(Isaac)

设置TNS_ADMIN对我不起作用。相反,我在计算机上搜索了所有TNSNAMES文件,并更新了所有文件的内容。不知道为什么Windows 7 Sql Developer坚持在某些旧文件夹中使用其他TNSNAMES文件。
2014年

1
注意:$TNS_ADMIN目录不是实际.ora文件
吗?

30

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

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


接受的答案对我不起作用,但对我却有效(Windows Server 2008R2)
Josh Werts 2015年

发生了同样的问题,但是SQL Developer还查看了%TNS_ADMIN%\ tnsnames.ora之前的%userprofile%\ tnsnames.ora,这是我拥有额外的tnsnames.ora文件的地方。
MBWise

15

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

在此处输入图片说明

tnsnames.ora所在的“首选项选项expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory中。然后单击确定。 如下图所示。


在此处输入图片说明

你做完了!

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


找不到“ Databse:Advanced” ==>我的版本是1.5.5
Tarek El-Mallah 2013年

1
对于低于2.1的版本,或者如果您未在2.1或更高版本上指定Tnsnames目录,请按照@JasonAnderson answer中指定的方式休假
Chandra Sekhar 2013年

我在“工具”->“首选项”->“数据库”->“高级参数”菜单中没有Tnsnames目录选项。我正在使用SqlDeveloper v1.1.3
Ahmedov

14

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


如何安装tnsping工具?
Kiquenet

在客户端安装中,有一个用于数据库工具或类似工具的复选框。
DCookie

2

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开发的文件格式的内容视为大小写?


@allen:您知道如何强制其清除此列表吗?如果是这样,请回复stackoverflow.com/q/6412559/168646
David Oneill

1

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


0

上述变化对我的情况没有任何影响。我可以在命令窗口中运行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目录字段。

我抛弃了旧的“开始”快捷方式,并安装了%ORACLE_HOME%\ client_1 \ sqldeveloper \ sqldeveloper.exe的快捷方式。这种变化解决了我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.