我正在尝试使用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名称显示为选项 .
有什么我想念的吗?
7 回答
打开SQL Developer . 转到工具 - >首选项 - >数据库 - >高级然后显式设置Tnsnames目录
我的TNSNAMES设置正确,我可以连接到Toad,SQL * Plus等,但我需要这样做才能让SQL Developer工作 . 也许这是一个Win 7问题,因为安装也很痛苦 .
SQL Developer将按此顺序查看以下位置以获取tnsnames.ora文件
$ HOME / .tnsnames.ora
$ TNS_ADMIN / tnsnames.ora
注册表中的
TNS_ADMIN查找键
/etc/tnsnames.ora(非窗口)
$ ORACLE_HOME / network / admin / tnsnames.ora
LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME
要查看SQL Developer正在使用哪一个,请在工作表中发出命令
show tns
如果您的tnsnames.ora文件未被识别,请使用以下过程:
在Windows中,通过导航到控制面板>系统>高级系统设置>环境变量来完成此操作...
在Linux中,在主目录的.profile文件中定义TNS_ADMIN变量 .
从Windows命令行:echo%TNS_ADMIN%
来自linux:echo $ TNS_ADMIN
重启SQL Developer
现在在SQL Developer中右键单击Connections并选择New Connection ....在下拉框中选择TNS作为连接类型 . 您现在应该在tnsnames.ora中显示您的条目 .
您始终可以通过运行TNSPING来检查连接所使用的tnsnames.ora文件的位置(9i或更高版本):
有时,问题在于您在tnsnames.ora中创建的条目,而不是系统找不到它 . 也就是说,我同意拥有tns_admin环境变量集是一件好事,因为它避免了在确定哪个tnsnames文件正在多个oracle家庭的系统中使用时出现的不可避免的问题 .
在 SQLDeveloper 浏览
Tools --> Preferences
,如下图所示 .在 Preferences 选项
expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory
,其中 tnsnames.ora 存在 .然后单击 Ok .
如下图所示 .
现在您可以通过 TNSnames 选项进行连接 .
杰森提到的步骤非常好,应该可行 . 不过,SQL Developer有点麻烦 . 它在第一次读取tnsnames.ora文件时缓存连接规范(主机,服务名称,端口) . 然后,当从tnsname.ora文件中删除原始条目时,它不会使规范无效 . 即使在SQL Developer终止并重新启动后,缓存仍然存在 . 这不是处理这种情况的不合逻辑的方式 . 即使tnsnames.ora文件暂时不可用,只要原始规范仍然存在,SQL Developer仍然可以 Build 连接 . 问题出现在他们的下一个小转弯 . 在解析连接时,SQL Developer将tnsnames.ora文件中的服务名称视为区分大小写的值 . 因此,如果你曾经在文件中有一个条目名称ABCD.world,并且用一个名为abcd.world的新条目替换它,SQL Developer就不会更新它的ABCD.world的连接规范 - 它会将abcd.world视为一个不同的完全连接 . 为什么我对Oracle产品将区分大小写的oracle开发文件格式的内容视为区分大小写并不感到惊讶?
在Sql Developer中,导航到Tools-> preferences-> Datababae-> advanced-> Set 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的快捷方式 . 这个改变解决了我的问题 .