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

问题描述 投票:0回答:11

我在 windows 环境中使用 ORACLE 数据库并在 tomcat 中运行 JSP/servlet web 应用程序。在我对应用程序进行一些操作后,出现以下错误。

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

谁能帮我找出这个问题的原因并提出解决方案?

jsp servlets oracle11g
11个回答
7
投票

这道题的解决办法就是增加进程数:

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;

经过试验和测试。


4
投票

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

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

如果是第二个,请验证 large_pool_size 或检查 dispatcher 是否足够用于所有连接。

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


2
投票

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

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


0
投票

如果一天又一天问题无缘无故地出现,请在 listner.ora 文件的底部添加以下几行。如果你的 oracle_home 环境变量是这样设置的:

(ORACLE_HOME = C:\oracle11 pp\oracle\product .2.0\server)

要添加的行是:

ADR_BASE_LISTENER = C:\oracle11 pp\oracle\

DIRECT_HANDOFF_TTC_LISTENER=关闭


0
投票

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

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

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

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


0
投票

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

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


0
投票

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


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


0
投票

我在实时应用程序中遇到了同样的问题,第二天问题就自行消失了。检查后发现,由于运行了额外的进程,服务器内存不足。

所以就我而言,原因是服务器内存不足


0
投票

首先 检查侦听器日志 检查 show parameter processes 与 select count(*) from v$processes; 增加进程,可能需要增加SGA ;


0
投票

我在 Windows 服务器上托管的新创建的 oracle DB 中遇到了这个问题。 TNSNAMES、LISTENER 都很好,TNSping 正在工作。还是TNS-12518: TNS:listener could not hand off client connection error used to reflect while making connection through service name.

连同上述所有建议,请遵循我所做的更改。 主机名是 16 个字符,我将主机名更改为少于 16 个字符。它工作完美。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.