我在 Windows 环境中使用 ORACLE 数据库并在 tomcat 中运行 JSP/servlet Web 应用程序。在我对应用程序进行一些操作后,它给了我以下错误。
ORA-12518, TNS: 侦听器无法切换客户端连接
任何人都可以帮助我找出这个问题的原因并提出解决方案吗?
这个问题的解决方案是增加进程数:
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;
久经考验。
就我而言,我发现这是因为我没有在我的应用程序中正确关闭数据库连接。打开的连接太多,Oracle 无法建立更多连接。这是资源限制。后来,当我查看 oracle 论坛时,我可以看到那里提到的有关此问题的一些原因。他们之中有一些是。
如果是第二个,请验证 large_pool_size 或检查调度程序是否足以满足所有连接。
您可以参考下面的链接了解更多详情。 https://community.oracle.com/message/1874842#1874842
我遇到了同样的问题,在我的情况下,它是在新桌面上新安装的 Oracle 客户端导致错误,其他客户端正在工作,所以我知道它不会修复数据库配置。tnsping 正常工作,但 sqlplus 因 ora-12518 侦听器错误而失败。
我有一个带有 SID 而不是 service_name 的 tnsnames.ora 条目,然后一旦我修复了它,仍然是同样的错误,并且发现我的 service_name 也有误。一旦我解决了这个问题,错误就消失了。
如果一天到另一天没有明显原因显示问题,请在 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
在我的应用程序中执行查询时,我遇到了同样的问题。我正在使用带有 Ruby on Rails 的 Oracle 客户端。
当我不小心启动了几个与数据库的连接并且没有关闭它们时,问题就开始了。
当我解决这个问题时,一切又开始正常工作了。
希望这可以帮助另一个有同样问题的人。
我在实时应用程序中遇到了同样的问题,第二天问题就自行解决了。经过检查,发现服务器由于运行了额外的进程而耗尽了内存。
所以在我的情况下,原因是服务器内存不足
我遇到过同样的问题。重新启动所有 Oracle 服务后,它再次工作。
我遇到了同样的问题。而从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