当我在Windows命令行上调用net start OracleServiceORCL
时,我得到了
请求的服务已经启动。
当我在命令行运行sqlplus
时,我可以成功登录我的数据库。
但是,当使用SQL Developer以相同的凭据连接到数据库时,我收到错误
I / O错误:网络适配器无法建立连接。
供应商代码:17002
当我启动连接到数据库的应用程序服务器时,会发生同样的错误。
我已经能够使用SQL开发人员或启动我的服务器但不知道从那以后发生了什么变化。我怎样才能让它再次运作?
答案 0 :(得分:0)
这些可能有很多原因。您可以开始检查您的侦听器状态。检查Oracle侦听器是否正在为您的数据库运行。即使监听器停止,sqlplus也可以连接到你的数据库,我不知道它是怎么做的。但是如果监听器没有运行,它将禁用像sqldeveloper这样的客户端,即使它位于同一台机器上也可以找到你的数据库。
> lsnrctl services
答案 1 :(得分:0)
您使用什么样的连接? 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
检查侦听器状态检查侦听器日志文件下列出的文件,以查看是否通过侦听器建立了任何连接,或者是否有任何连接出现错误。