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

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

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

sqlplus username/password@addressname[or host name]

我们已核实:

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

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


当前回答

我也有同样的问题。对我来说,就是写作

sqlplus myusername/mypassword@localhost

这样做使它连接到默认的服务名,我猜。

其他回答

我在Windows server 2008 R2和Oracle 11g上遇到了这个问题

进入网络管理器>监听>从组合框中选择数据库服务>“全局数据库名称”必须与“SID”相同,“Oracle主目录”必须正确。

如果没有数据库服务条目,请创建一个并设置正确的global database, sid和oracle home。

对我来说很简单,我只需要在“Windows服务”中手动启动服务。MSC在CMD trompt)。 我的服务名称是:OracleServiceXXXXX。

我也遇到过同样的问题,花了3天时间才把它挖出来。

发生这种情况是因为您错误的TNS服务条目。

首先检查是否能够使用sql > sqlplus sys@orastand作为sysdba (orastand是一个备用数据库)从主数据库连接到备用数据库。

如果您无法连接,那么这是与服务的问题。更正主端TNS文件中服务名称的填写。

用同样的方法检查备用数据库。如果需要,也可以在这里进行更改。

确保log_archive_dest_2参数具有正确的服务名称。

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

对于那些可能在虚拟机中运行Oracle的人(比如我),我看到这个问题是因为我的虚拟机内存不足,这似乎阻止了OracleDB正确启动/运行。增加我的虚拟机内存和重新启动修复了这个问题。