当前位置: 首页 > 知识库问答 >
问题:

19c和11g版本上的Oracle内存泄漏问题

彭成天
2023-03-14

我们在OracleLinux8机器上安装了oracle DB(19c)。当我们用19c db连接我们的服务器时,DB机器的内存开始增长。只要服务器处理负载并执行db操作,内存就会不断增长,几个小时后所有内存都会用完,没有可用存储器。我们有简短的PS/SQL语句和存储过程,它们在执行不同的CRUD、提交、回滚操作时被执行。我们做了一些研究,发现这个命令可以释放内存,但这不起作用。

sync; echo 3 > /proc/sys/vm/drop_caches

注意:我们在11g数据库上发现了相同的行为,因此这不是特定于数据库版本的问题,我们还更改了DB机器,但问题仍然存在。

附上我们内存完全使用的机器截图。任何帮助都将不胜感激。

共有2个答案

向苗宣
2023-03-14

很难说你是否真的有内存泄漏。很可能没有。Oracle为每个连接生成专用进程。这个进程“挂载”共享内存区域。这就是为什么你会看到如此巨大的内存分配。尝试使用像ps_mem.py这样的工具,它可以更好地处理共享内存段。

Oracle DB有两个与内存相关的参数SGA PGA,通常DB使用的RAM不应超过这两个参数定义的总和。

只需执行vmstat并检查您的服务器是否真的在交换内存。

弘烨烁
2023-03-14

确保关闭所有数据库会话以及游标。您显示的所有这些进程似乎都是专用的服务器进程,每次登录数据库都会打开这些进程。这就是为什么您的内存一开始使用就会增加:除了后台服务器进程使用的内存之外,每个登录都需要自己的专用内存。

有关调整Oracle内存使用率的信息,请参见此处。

还要注意的是,您的内存并不是100%使用的:29.9%是最近使用或保留在缓冲区中的,如果有需要,可以随时提供。如果它被实际使用,那么使用的价值将是100%,您的掉期使用率可能会高得多。

 类似资料:
  • 本文向大家介绍Android 内存溢出和内存泄漏的问题,包括了Android 内存溢出和内存泄漏的问题的使用技巧和注意事项,需要的朋友参考一下 Android 内存溢出和内存泄漏的问题 在面试中,经常有面试官会问“你知道什么是内存溢出?什么是内存泄漏?怎么避免?”通过这篇文章,你可以回答出来了。 内存溢出 (OOM)是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;

  • 出现此错误,JSP页面变为空白(白色): Jan9, 2013 7:30:39PMorg.apache.catalina.loader.WebappClassLoader clearThreadLocalMap SEVERE:Web应用程序[/MyWebApp]创建了一个ThreadLocal,其中键的类型为[net.sourceforge.jtds.jdbc.DateTime1美元](值[net

  • 我对部署在Tomcat中的Java应用程序有严重的问题: 操作系统:Debian 6.06(内核3.2.13-grsec-xxxx-grs-ipv6) Tomcat:6.0.35 JDK:1.60_37-b06 JVM params:-Xms3584m-Xmx3584m-XX: MaxPermsize=256m-XX: ThreadStacksize=1024 线程数:200 使用几个小时后,RS

  • 我有一个课程调度问题,带有用于分数计算的约束流。当求解分配的堆时,它会不断增加,因此在几个小时后甚至超过8GB,我得到了一个java.lang.OutOfMemoryError:java堆空间。正如optaplanner文档中所述,堆大小在求解器阶段应保持不变。我需要关于这种行为的问题以及如何调试的建议。 optaplanners toList ConstraintCollector中提供的复制器

  • 我担心从泄漏金丝雀回来的信息。它显示了在UI上声明的所有变量,如片段中的材料按钮、材料卡片视图、文本视图、图像视图等,都导致了内存泄漏。我不知道为什么会这样。

  • 问题内容: 在多个帖子中都提到了这一点:不当使用会导致内存泄漏。我正在努力了解使用内存泄漏将如何发生。 我发现的唯一情况如下: Web服务器维护一个线程池(例如,用于servlet)。如果未删除其中的变量,则这些线程可能会导致内存泄漏,因为线程不会死亡。 这种情况下没有提到“ Perm Space”内存泄漏。那是内存泄漏的唯一(主要)用例吗? 问题答案: PermGen的exhaustions 与