我们有一个本地运行的应用程序,我们遇到了以下错误:

ORA-12514: TNS:监听器当前不知道所请求的服务 在连接描述符中

我已经使用正确解决的tnspring测试了连接 我尝试使用SQLPlus进行连接,但失败了,出现了与上面相同的错误。我在SQLPlus中使用了以下语法:

sqlplus username/password@addressname[or host name]

我们已核实:

服务器上的TNS Listener正在运行。 服务器上的Oracle本身正在运行。

我们不知道这个环境发生了什么变化。 还有什么可以测试的吗?


当前回答

我的问题解决了,用“服务名称”和正确的主机替换URL中的“sid”。

其他回答

以我的Linux环境为例,oracle文件在ORACLE_HOME/bin以“红色”颜色突出显示,具有如下不同的权限:

我修改了这个文件的权限如下:

1)停止Oracle -> sudo systemctl Stop Oracle .service 2)修改“ORACLE_HOME/bin”目录下的oracle文件权限为“sudo chmod 777 oracle” 3)启动Oracle -> sudo systemctl Start Oracle .service

修改完成后,我使用lsnrctl status检查listener的状态。在这里,我可以看到db实例成功加载。

但是,我只能使用sqldeveloper连接,使用sqlplus命令行我得到ORA-12547: TNS失联错误。因此,这可以作为使用sqldeveloper的快速解决方案。

注意:修改权限前请备份oracle文件。

在我的例子中,数据库已经耗尽了磁盘空间。这导致它没有反应。一旦我解决了这个问题,一切都恢复正常了。

对于使用spring-boot和jdbc进行连接的用户。 在application.properties中编写jdbcUrl时必须小心

与SID在数据库连接- source.datasource.jdbcUrl = jdbc:oracle:thin:@[HOST][:PORT]:SID

在db连接中使用服务名称 global .datasource. jdbcurl = jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

这对我很有用:)

检查数据库是否启动。登录到服务器,将ORACLE_SID环境变量设置为您的数据库SID,并作为本地连接运行SQL*Plus。

当应用程序为每个数据库交互建立新连接或连接未正确关闭时,可能会发生此错误。监视和确认这一点的免费工具之一是Oracle Sql developer(尽管这不是您可以用来监视DB会话的唯一工具)。

您可以从oracle网站Sql Developer下载该工具

下面是如何监控你的会话的截图。(如果您在看到ORA-12514错误时看到应用程序用户堆积了许多会话,那么这很好地表明您可能有连接池问题)。