我正在尝试使用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名称显示为选项。
我有什么遗失的吗?
答案 0 :(得分:169)
SQL Developer将按此顺序查看以下位置以获取tnsnames.ora文件
要查看SQL Developer正在使用哪一个,请在工作表中发出命令show tns
如果无法识别您的tnsnames.ora文件,请使用以下过程:
定义一个名为 TNS_ADMIN 的环境变量,指向包含tnsnames.ora文件的文件夹。
在Windows中,通过导航到控制面板>来完成此操作。 系统> 高级系统设置> 环境变量......
在Linux中,在主目录的.profile文件中定义 TNS_ADMIN 变量。
确认操作系统正在识别此环境变量
从Windows命令行: echo%TNS_ADMIN%
来自linux: echo $ TNS_ADMIN
重新启动SQL Developer
答案 1 :(得分:28)
打开SQL Developer。 转到工具 - >偏好 - >数据库 - >高级 然后显式设置Tnsnames目录
我的TNSNAMES设置正确,我可以连接到Toad,SQL * Plus等,但我需要这样做才能让SQL Developer工作。也许这是一个Win 7问题,因为安装也很痛苦。
答案 2 :(得分:12)
通过运行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文件时出现的不可避免的问题。
答案 3 :(得分:12)
在 SQLDeveloper 中浏览Tools --> Preferences
,如下图所示。
在偏好设置选项expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory
中, tnsnames.ora 出现。
然后点击确定。
如下图所示。
你已经完成了!
现在您可以通过 TNSnames 选项进行连接。
答案 4 :(得分: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开发的文件格式的内容视为区分大小写,并且明确区分大小写?
答案 5 :(得分:1)
在Sql Developer中,导航到Tools-> preferences-> Datababae-> advanced->将Tnsname目录设置为包含tnsnames.ora的目录
答案 6 :(得分:0)
以上所有变更都没有对我的情况造成任何影响。我可以在命令窗口中运行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的快捷方式。这个改变解决了我的问题。