12

我在 Windows 环境中使用 ORACLE 数据库并在 tomcat 中运行 JSP/servlet Web 应用程序。在我对应用程序进行一些操作后,它给了我以下错误。

ORA-12518, TNS: 侦听器无法切换​​客户端连接

任何人都可以帮助我找出这个问题的原因并提出解决方案吗?

4

9 回答 9

6

这个问题的解决方案是增加进程数:

1. Open command prompt 
2. sqlplus / as sysdba; //login  sysdba user
3. startup force;
4. show parameter processes;  // This shows 150(some default) processes allocated, then increase the count to 800
5. alter system set processes=800 scope=spfile;

久经考验。

于 2015-01-07T12:56:20.697 回答
4

就我而言,我发现这是因为我没有在我的应用程序中正确关闭数据库连接。打开的连接太多,Oracle 无法建立更多连接。这是资源限制。后来,当我查看 oracle 论坛时,我可以看到那里提到的有关此问题的一些原因。他们之中有一些是。

  1. 在大多数情况下,这是由于网络问题而发生的。
  2. 您的服务器可能内存不足,需要将内存交换到磁盘。一个原因可能是 Oracle 进程消耗了太多内存。

如果是第二个,请验证 large_pool_size 或检查调度程序是否足以满足所有连接。

您可以参考下面的链接了解更多详情。 https://community.oracle.com/message/1874842#1874842

于 2015-07-08T01:38:44.203 回答
2

我遇到了同样的问题,在我的情况下,它是在新桌面上新安装的 Oracle 客户端导致错误,其他客户端正在工作,所以我知道它不会修复数据库配置。tnsping 正常工作,但 sqlplus 因 ora-12518 侦听器错误而失败。

我有一个带有 SID 而不是 service_name 的 tnsnames.ora 条目,然后一旦我修复了它,仍然是同样的错误,并且发现我的 service_name 也有误。一旦我解决了这个问题,错误就消失了。

于 2015-05-15T15:53:29.270 回答
0

如果一天到另一天没有明显原因显示问题,请在 listner.ora 文件的底部添加以下几行。如果您的 oracle_home 环境变量设置如下:

(ORACLE_HOME = C:\oracle11\app\oracle\ product\11.2.0\server)

要添加的行是:

ADR_BASE_LISTENER = C:\oracle11\app\oracle\

DIRECT_HANDOFF_TTC_LISTENER=OFF

于 2014-02-27T10:32:44.470 回答
0

在我的应用程序中执行查询时,我遇到了同样的问题。我正在使用带有 Ruby on Rails 的 Oracle 客户端。

当我不小心启动了几个与数据库的连接并且没有关闭它们时,问题就开始了。

当我解决这个问题时,一切又开始正常工作了。

希望这可以帮助另一个有同样问题的人。

于 2015-07-07T19:12:27.190 回答
0

我在实时应用程序中遇到了同样的问题,第二天问题就自行解决了。经过检查,发现服务器由于运行了额外的进程而耗尽了内存。

所以在我的情况下,原因是服务器内存不足

于 2019-05-24T19:55:56.433 回答
0

我遇到过同样的问题。重新启动所有 Oracle 服务后,它再次工作。

于 2018-05-02T07:37:16.843 回答
0

升级到 Windows 10 后我遇到了同样的错误。我通过启动已停止的 Oracle 服务解决了这个问题。

启动所有服务,如下图所示:

在此处输入图像描述

于 2016-10-26T06:58:48.833 回答
0

我遇到了同样的问题。而从oracle server listener log,可以看到更多的信息。我发现 SERVICE_NAME 与 tnsnames.ora 配置的服务名称不匹配。所以我将应用程序的数据源配置从 SID 值更改为 Service_NAME 值并修复。

23-MAY-2019 02:44:21 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=XXXXXX$))(SERVICE_NAME=orclaic)) * (ADDRESS=(PROTOCOL=tcp)(HOST=::1)(PORT=50818)) * establish * orclaic * 12518
TNS-12518: TNS:listener could not hand off client connection
 TNS-12560: TNS:protocol adapter error
  TNS-00530: Protocol adapter error
   64-bit Windows Error: 203: Unknown error

于 2019-05-23T04:53:38.537 回答