Oracle统计内存实际占用的问题
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

Oracle统计内存实际占用的问题

yuc
yuc
2023-09-18 / 最后修改: 2023-09-18 04:00 / 0 评论 / 4 阅读 / 正在检测是否收录...
0x1 背景

在服务器上,一般我们要查询进程占用了多少内存,使用 top 查看其 res 即可,对于大多数的服务都比较适用,但是 Oracle 却不能使用这个办法。

0x2 原因

如何统计oracle使用的内存一直是一个复杂的问题,通过操作系统top命令观察oracle进程,在低版本或者低负载的情况我们可能觉得没问题,使用率不高,但如果在高负载的情况我们就会看到一个奇怪的事情,那就是不管是 RES 相加还是 %MEM 相加,数值远超过系统内存或者 100%,所以结论是直接通过 top 命令计算 Oracle 内存使用时行不通的。

0x3 为什么

因为Oracle有一个SGA的概念,改内存在Oracle所有进程之间共享数据,如果某些Oracle进程使用到了SGA中的一些数据,那么内存就会重复统计

Oracle关于不能正确获取内存使用的解释

# https://docs.oracle.com/en-us/iaas/os-management/doc/known-issues.html
Display of Memory Utilization data for DB Instance resource types is not supported in this release.
Memory Utilization(%) metric is not supported for Oracle Database Instance. Oracle Database processes have shared memory, and using a non-root user, it is not possible to accurately calculate memory across all processes without overcounting. This will be addressed in future releases with support for full monitoring of the Oracle Database.
0x4 how

那么该怎么统计Oracle实际使用的内存呢? 可以通过统计 SGA 和 PGA 使用的大小来确定

0

评论

博主关闭了当前页面的评论