Java ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID?

Java ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID?,java,oracle,Java,Oracle,当我试图通过SQLDeveloper或java应用程序连接到oracle时,我会遇到以下错误,尽管我能够连接 来自SQL PLUS(命令行工具) 每当我重新启动系统时,我都会遇到这个问题。虽然系统重启后10次中有1次,但我能够成功连接 我可以看到所有的oracle服务,包括OracleOraDb11g\u Home1TransListener都在服务部分。仅供参考 我的SID名称是orcl 经过路加回答之后 看起来在重新启动时,oracle数据库的启动时间早于OracleOraDb11g\u H

当我试图通过SQLDeveloper或java应用程序连接到oracle时,我会遇到以下错误,尽管我能够连接 来自SQL PLUS(命令行工具)

每当我重新启动系统时,我都会遇到这个问题。虽然系统重启后10次中有1次,但我能够成功连接

我可以看到所有的oracle服务,包括OracleOraDb11g\u Home1TransListener都在服务部分。仅供参考 我的SID名称是
orcl

经过路加回答之后 看起来在重新启动时,oracle数据库的启动时间早于OracleOraDb11g\u Home1TransListener。所以这是不可能的 向侦听器注册

我认为解决方案应该是先创建侦听器,然后启动数据库如何配置在重新启动后的一段时间延迟后启动数据库?

每当我重新启动系统时,我都会遇到这个问题。虽然系统重启后10次中有1次,但我能够成功连接

可能的原因是系统重新启动后,
服务
未启动。检查它的方法取决于
操作系统

例如,在Windows操作系统中,您可以转到
services.msc
,查看TNS服务是否已启动并正在运行


要检查侦听器是否已启动,以及数据库是否已注册,请检查
lsnrctl status
。另外,请记住,
侦听器在系统重新启动后需要一段时间。这同样适用于对侦听器进行任何更改后,您必须等待一段时间。

@lalit kumar正如我在帖子中所说的“我可以看到所有oracle服务,包括OracleOraDb11g_home1TNSListener都在服务部分”。所以我认为db并没有注册到listener。我确实运行了“lsnrctl状态”。但是哪个参数告诉我们DB是否已注册到listener?发布lsnrctl状态的结果。您是否尝试过lsnrctl停止和启动?我没有看到任何已注册的服务…没有识别的实例。数据库应尝试定期注册;如果DB先启动的话,我希望它能在侦听器出现的一分钟内完成。它最终会出现吗?或者如果您从SQL*Plus显式地将系统注册为SYS,则会出现吗?如果没有,您的IP地址在重新启动时是否会更改,并且是否设置了
local\u listener
init参数?(呃,除了监听器位于另一条评论的localhost上,所以这可能不是IP问题……)几乎每次我重新启动系统时都会发生这种情况。此外,我没有向ListNet显式注册db(它应该在重新启动时自动发生。是的,有时会发生,但有时不会)。我将“lsnrctl状态”的结果粘贴在LILT答案的注释下。你能从中看出些什么吗?你问“重启时你的IP地址会改变吗?”可能是的。但它会产生怎样的影响?您还问“是否设置了local_listener init参数?”我不确定在哪里检查这个问题,以及它的重要性是什么?@emily-这可能不重要,因为您的侦听器位于localhost上<代码>显示参数监听器将告诉您是否设置了该参数,但必须存在差异和一些奇怪的事情才能起作用。如果未设置,则默认为localhost:1521,这就是您的侦听器所在的位置。
    Listener refused the connection with the following error :

    ORA-12505, TNS:listener does not currently know 
    of SID given in connect descriptor