首页 文章

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

提问于
浏览
87

我正在尝试使用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 回答

  • 11

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

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

  • 2

    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文件未被识别,请使用以下过程:

    • 定义一个名为TNS_ADMIN的环境变量,指向包含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中显示您的条目 .

  • 1

    您始终可以通过运行TNSPING来检查连接所使用的tnsnames.ora文件的位置(9i或更高版本):

    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环境变量集是一件好事,因为它避免了在确定哪个tnsnames文件正在多个oracle家庭的系统中使用时出现的不可避免的问题 .

  • 12

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

    enter image description here

    Preferences 选项 expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory ,其中 tnsnames.ora 存在 .
    然后单击 Ok .
    如下图所示 .

    enter image description here

    你做完了!

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

  • 0

    杰森提到的步骤非常好,应该可行 . 不过,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开发文件格式的内容视为区分大小写并不感到惊讶?

  • 164

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

  • 28

    上述变化均未对我的情况产生任何影响 . 我可以在命令窗口中运行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的快捷方式 . 这个改变解决了我的问题 .

相关问题