【问题标题】:Can't connect to Oracle database with SQL developer, SQL*Plus is working fine无法使用 SQL 开发人员连接到 Oracle 数据库,SQL*Plus 工作正常
【发布时间】:2017-04-08 22:58:31
【问题描述】:

当我在 Windows 命令行上调用 net start OracleServiceORCL 时,我得到了

请求的服务已经启动。

当我在命令行上运行sqlplus 时,我可以成功登录到我的数据库。

但是,当使用 SQL Developer 连接到具有相同凭据的数据库时,我收到了错误

I/O 错误:网络适配器无法建立连接。

供应商代码:17002

当我启动连接到数据库的应用程序服务器时,也会发生同样的错误。

我已经能够使用 SQL 开发人员或启动我的服务器,但不知道从那时起发生了什么变化。我怎样才能让它再次工作?

【问题讨论】:

  • 一些需要查看的东西是:连接的端口,连接的服务名称。因为,12c 连接 PDB 时使用的是服务名,而不是服务 ID。

标签: oracle sqlplus oracle12c


【解决方案1】:

您使用的是哪种连接方式? Oracle 客户端可以通过 TCP 或遗赠连接使用两种类型的连接。

当在您的数据库运行的同一主机上使用 sqlplus 时,您通常执行sqlplus / as sysdba 这将使用 bequeauth 创建连接。 Bequeauth 完全绕过了监听器,直接生成了一个子进程来处理对 DB 的请求。

如果您像 sqlplus username@host 这样使用 sqlplus,您将通过侦听器使用 TCP 进行连接,该侦听器处理连接并生成将与数据库通信的进程。

默认情况下,Oracle 监听器在端口 1521 上运行,所以如果监听器正在运行,我的第一个猜测是防火墙阻止了对 1521 的访问。

您应该尝试使用第一个 bequeatuh 然后通过侦听器连接到 db,如果 bequeauth 有效并且 TCP 连接没有问题,则问题可能出在侦听器和网络之间。 (您也可以设置 sqldeveloper 以使用 bequeauth,但它必须与 DB 安装在同一主机上)

您可以使用lsnrctl status 检查侦听器状态,如果一切正常,请检查侦听器日志文件 下列出的文件,以查看是否通过侦听器建立了任何连接,或者是否存在任何错误.

【讨论】:

    【解决方案2】:

    这些原因可能有很多。您可以开始检查您的侦听器状态。检查 Oracle 侦听器是否正在为您的数据库运行。即使侦听器停止,sqlplus 也可以连接到您的数据库,我不确定它是怎么做的。但是如果监听器没有运行,它会禁用像 sqldeveloper 这样的客户端,即使它在同一台机器上来定位你的数据库。

    > lsnrctl services 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多