我正在尝试使用SQL Developer连接到oracle数据库。
我已经安装了.Net oracle驱动程序并将tnsnames.ora文件放在
C:\Oracle\product\11.1.0\client_1
etwork\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文件
$ 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
若要查看正在使用哪个SQL Developer,请在工作表中发出命令show tns
如果您的tnsnames.ora文件未被识别,请使用以下过程:
定义一个名为TNS_ADMIN的环境变量,以指向包含您的tnsnames.ora文件的文件夹。
在Windows中,这是通过导航到"控制面板">"系统">"高级系统设置">"环境变量..."来完成的。
在Linux中,在主目录的.profile文件中定义TNS_ADMIN变量。
确认操作系统正在识别此环境变量
在Windows命令行中:
回声%TNS_ADMIN%
从Linux:
回声$ TNS_ADMIN
重新启动SQL Developer
现在,在SQL Developer中,右键单击Connections,然后选择New Connection...。在下拉框中选择TNS作为连接类型。您从tnsnames.ora中输入的内容现在应显示在此处。
对我来说:$ HOME / .tnsnames.ora没有用...我改用$ HOME / tnsnames.ora。另请注意:您将需要转至工具->首选项,搜索" tns"并将目录指向$ HOME。
尽管在SQL开发人员1.5版本的发行说明中有此说明,但我发现在Ubuntu 12.04 LTS上,仅#5起作用。请尝试以下步骤来检查您的情况是否正确:forums.oracle.com/message/2769285#2769285。值得注意:作者在Win Vista上遇到了问题。
在Windows中为我工作。永远记录东西!
设置TNS_ADMIN对我不起作用。相反,我在计算机上搜索了所有TNSNAMES文件,并更新了所有文件的内容。不知道为什么Windows 7 Sql Developer坚持使用一些旧文件夹中的其他TNSNAMES文件。
注意:$TNS_ADMIN是目录,而不是实际的.ora文件
我发现TNS_ADMIN的env var需要以斜杠结尾的路径。如果没有斜杠,SQL Developer将看不到tnsnames.ora文件。
打开SQL Developer。
转到工具->首选项->数据库->高级
然后显式设置Tnsnames目录
我的TNSNAMES设置正确,可以连接到Toad,SQL * Plus等,但是我需要这样做才能使SQL Developer正常工作。也许这是Win 7的问题,因为安装也很麻烦。
这是最简单的解决方案,并且有效
接受的答案对我不起作用,但对我有用(Windows Server 2008R2)
在SQLDeveloper中,浏览Tools --> Preferences,如下图所示。
在"偏好设置"选项expand Database --> select Advanced --> under"Tnsnames Directory" --> Browse the directory中,其中存在tnsnames.ora。
然后单击"确定"。
如下图所示。
You have Done!
现在,您可以通过TNSnames选项进行连接。
找不到" Databse:Advanced" ==>我的版本是1.5.5
对于低于2.1的版本,或者如果您没有在2.1或更高版本上指定Tnsnames目录,请按照@JasonAnderson答案中的指定休假。
我在"工具"->"首选项"->"数据库"->"高级参数"菜单中没有Tnsnames目录选项。我正在使用SqlDeveloper v1.1.3
通过运行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
ETWORK\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工具?
在客户端安装中,有一个用于数据库工具或类似工具的复选框。
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
在Sql Developer中,导航到Tools-> preferences-> Datababae-> advanced->将Tnsname目录设置为包含tnsnames.ora的目录
上述变化对我的情况没有任何影响。我可以在命令窗口中运行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的快捷方式。这种变化解决了我的问题。