定期 tns-12531:TNS:无法分配内存

Periodic tns-12531: TNS: Cannot allocate memory

我有一个问题已经困扰我大约一年了。我的机器上安装了 Oracle 12.1.x.x。一两天后,侦听器停止响应并且 listener.log 包含一堆 TNS-12531 消息。如果我重新启动,问题就会消失,再过一两天我就没事了。我很懒惰,我讨厌重新启动,所以我决定最终找到它,但我没有运气。因为替代方案是做我真的不想做的工作,所以我会把所有的时间都花在研究这个上。

一些注意事项:

下面是 listener.log 文件的示例:

Fri Jul 28 14:21:47 2017
System parameter file is D:\app\user\product.1.0\dbhome_1\network\admin\listener.ora
Log messages written to D:\app\user\diag\tnslsnr\LJ-Quad\listener\alert\log.xml
Trace information written to D:\app\user\diag\tnslsnr\LJ-Quad\listener\trace\ora_24288_14976.trc
Trace level is currently 16

Started with pid=24288
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=LJ-Quad)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.\pipe\EXTPROC1521ipc)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
28-JUL-2017 14:22:06 * 12531
TNS-12531: TNS:cannot allocate memory
28-JUL-2017 14:22:47 * 12531
TNS-12531: TNS:cannot allocate memory
28-JUL-2017 14:26:24 * 12531
TNS-12531: TNS:cannot allocate memory

非常感谢您提供的任何帮助!

第 1 期

如果 运行 在非英语 Windows 安装中,大约在通过侦听器建立 2048 个连接后会发生此错误。

修复问题 1

在 listener.exe 所在的计算机上创建一个名为 Administrators 的 Windows 用户组。这可以解决听众死亡的问题。

参考:我会post一找到就link第一期[=43] =]


第 2 期

此错误也可能发生在 Windows 64 位系统上,其中 桌面应用程序堆 太小。

修复问题 2

Try to Increase the Desktop Application Heap Registry in windows its located in

HKLM\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows

Just as note don't add this Value by yourself, you have to depend on document.

基本上搜索注册表项并更改键的第三个值 SharedSection=1024,20480,1024。这是一种反复试验的方法,但似乎可以改善侦听器的稳定性和内存问题。

参考: TNS:cannot allocate memory - is there limit to the num databases on one box(Oracle 开发者社区)