Oracle SQL Developer:失败 - 测试失败:网络适配器无法建立连接?

Gee*_*ega 9 oracle database-connection oracle11g oracle-sqldeveloper

问题

请注意,我出于安全目的更改了详细信息.但问题仍然存在.

我在位置上的服务器上安装了Oracle 11g数据库,例如herp-devDV.derp.edu.现在我在位置的服务器上有另一个Oracle 11g数据库,比如derp-db.derp.edu.

我在Oracle SQL开发人员中为herp-devDV.derp.edu和derp-db.derp.edu输入了连接名称,用户名,密码,主机名和服务名称.我可以连接到derp-db.derp.edu中的模式,但不能连接到herp-devDV.derp.edu.它给了我这样的信息:

Failure - Test failed: The Network Adapter could not establish the connection
Run Code Online (Sandbox Code Playgroud)

细节

我有以下信息:

  • 我telnet时,任何一台服务器都没有打开端口1521
  • 我的听众已经准备好了.
  • 我可以在Oracle SQL Developer上访问derp-db.derp.edu.
  • Oracle客户端位于我的本地计算机+ Oracle SQL Developer上
  • 我可以远程桌面到两台服务器

我做了什么

  • 谷歌搜索
  • 堆栈溢出
  • 跑停并启动lnrctl命令
  • 在herp-devDB.derp.edu上我跑了 lsnrctl status

我收到了以下输出

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date                03-JUN-2014 13:37:22
Uptime                    6 days 0 hr. 53 min. 4 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File         d:\oracle\diag\tnslsnr\HERP-DEVDB\listener\alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HERP-DEVDB.derp.edu)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "HERPDEVDBXDB" has 1 instance(s).
  Instance "herpdevdb", status READY, has 1 handler(s) for this service...
Service "herpdevdb" has 1 instance(s).
  Instance "herpdevdb", status READY, has 1 handler(s) for this service...
The command completed successfully
Run Code Online (Sandbox Code Playgroud)

然后我看看我的listener.ora并找到

  SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = HERP-DEVDB.derp.edu)(PORT = 1521))
    )
  )
Run Code Online (Sandbox Code Playgroud)

在这一点上,我承认我正在挠头,因为我没有看到任何突出的东西告诉我为什么这不应该起作用.

唯一的线索就是当我检查derp-db.derp.edu并运行命令时lsnrctl status.请参阅下面的摘录:

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DERP-DB.edu)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
Start Date                18-MAY-2014 02:19:01
Uptime                    22 days 12 hr. 23 min. 18 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
---etc----
Run Code Online (Sandbox Code Playgroud)

所以我仍在挠头.为什么derp-db会连接到DERP-DB.edu但是herp-devDB连接到EXTPROC1521?我该如何解决?除了实例的名称之外,这两个服务器之间的listener.ora和其他文件几乎相同.嗯.

  • EDIT1:我改变了herp中的listener.ora.这没有解决它.

  • EDIT2:我无法在端口1521上telnet到derp-db.derp.edu但是我仍然可以用SQL Developer连接到它?WTH?

  • EDIT3我也无法通过端口1521远程登录到herp-devdb.derp.edu.
  • EDIT4我无法ping通任一服务器的IP地址.

无论如何,非常感谢帮助.谢谢

问候,令人讨厌

Gee*_*ega 14

我正在回答这个问题,以造福未来的社区用户.有很多问题.如果您遇到此问题,我建议您查找以下内容:

  • 确保您的tnsnames.ora已完成,并且包含您要连接的数据库
  • 确保您可以调整要连接的服务器
  • 在服务器上,确保它将使用您正在使用的特定应用程序在所需的端口上打开.

一旦我做了这三件事,我解决了我的问题.

  • tnsnames.ora位于何处?我怎么知道它是完整的? (3认同)
  • @Lucky SOMEPATH\app\<user>\product\12.1.0\dbhome_1\NETWORK\ADMIN (2认同)

scv*_*scv 9

我有一个类似的问题,我也不断得到同样的错误.我尝试了很多东西,如更改侦听器端口号,关闭防火墙等.最后我通过更改listener.ora文件来解决问题.我更改了以下行:

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
Run Code Online (Sandbox Code Playgroud)

(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) 
Run Code Online (Sandbox Code Playgroud)

我还在/etc/hosts文件中添加了一个条目.

您可以使用Oracle网络管理器更改listener.ora文件中的上述行.有关如何使用网络管理器执行此操作的详细信息,请参阅"Oracle网络服务管理员指南".

此外,您可以database_name.domain_name在建立连接时使用服务名称()而不是SID.

我希望它有所帮助.


Ely*_*755 9

我通过将 Listener.ora 文件中定义的显式 IP 地址写入作为主机名解决了这个问题。

在此输入图像描述

因此,我在 SQL Developer 字段中写了“192.168.1.2”作为“主机名”,而不是“localhost”。

在下图中,我突出显示了我修改过的输入框: 在此输入图像描述


小智 5

当我安装 oracle 11g 然后创建数据库时,我遇到了同样的问题。

我什至不知道监听器必须手动创建。因此,我打开网络配置助手并手动创建侦听器。

而且我可以通过sql developer连接我在本地创建的数据库。


Cod*_*ker 5

listener.ora您可以在安装文件夹下找到一个名为的文件,oraclexe\app\oracle\product\11.2.0\server\network\ADMIN 它包含以下条目

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = Codemaker-PC)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)
Run Code Online (Sandbox Code Playgroud)

您应该验证 HOST(这里是 Codemaker-PC)应该是计算机名称。如果不正确,请将其更改为计算机名称。

然后在以管理员身份运行的命令提示符下尝试以下命令,

lsnrctl start
Run Code Online (Sandbox Code Playgroud)