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

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

我有一个问题已经困扰我一年了。我的计算机上安装了 Oracle 12.1.x.x。一两天后,侦听器停止响应,listener.log 包含一堆

TNS-12531
消息。如果我重新启动,问题就会消失,再过一两天就可以了。我很懒,我讨厌重新启动,所以我决定最终找到这个问题,但我没有运气。由于替代方案是做我真的不想做的工作,所以我将花费所有时间研究这个。

一些注意事项:

  • Windows 10 专业版
  • 64 位
  • 32 GB 内存
  • 一般出现错误时大约有20GB空闲空间
  • 我有多个数据库,运行哪个数据库并不重要
  • 重新启动数据库没有帮助
  • 重新启动监听器没有帮助
  • 只有重新启动才能解决问题
  • 当我设置
    TRACE_LEVEL_LISTENER = 16
    时,我没有得到更多信息。跟踪文件未写入
  • 如果绕过侦听器,我可以连接到数据库(即设置
    ORACLE_SID=xxx
    并在没有数据库标识符的情况下连接)
  • 监听器停止后,所有其他网络交互似乎都工作正常
  • lsnrctl 状态挂起并添加另一个
    TNS-12531
    到listener.log
  • 我家里的配置大致相同,但不会发生这种情况

以下是

listener.log
文件的示例:

Fri Jul 28 14:21:47 2017
System parameter file is D:\app\user\product\12.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

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

oracle database-administration
2个回答
0
投票

第 1 期

在非英语 Windows 安装上运行时,大约在通过侦听器建立 2048 个连接后,可能会出现此错误。

修复问题 1

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

参考:第一期的链接我一找到就贴出来

第2期

此错误也可能发生在

桌面应用程序堆

太小的 Windows 64 位系统上。 修复问题 2

尝试增加 Windows 中的桌面应用程序堆注册表,其位于

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

注意不要自己添加这个值,你必须依赖文档。

基本上搜索注册表项并更改键
SharedSection=1024,20480,1024

的第三个值。这是一种反复试验的方法,但似乎可以改善听众的稳定性和记忆问题。


参考: TNS:无法分配内存 - 一台机器上的数据库数量是否有限制(Oracle 开发者社区)


0
投票

Linux 版 LSNRCTL:版本 12.2.0.1.0 - 于 2023 年 11 月 13 日 17:07:13 投入生产

版权所有 (c) 1991、2016,Oracle。保留所有权利。

欢迎来到 LSNRCTL,输入“帮助”获取信息。

LSNRCTL>

设置 TRACE_LEVEL_LISTENER = 16

NL-00853:未定义的设置命令“TRACE_LEVEL_LISTENER”。尝试“帮助设置”

LSNRCTL> 设置 trc_level 16

连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.62)(PORT=1521)))

TNS-12541:TNS:没有监听器

TNS-12560:TNS:协议适配器错误

TNS-00511:没有听众

Linux 错误:111:连接被拒绝

连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

TNS-12541:TNS:没有监听器

TNS-12560:TNS:协议适配器错误 TNS-00511:没有听众

Linux 错误:2:没有这样的文件或目录

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