粗浅记录Oracle RAC系统内存无法释放

简介:

交代一下环境,是现网实时生产数据库主机。Hp-ux 11.31+Oracle 10.2.0.4.0 RAC集群。

两台机器户外RAC,essdb3与essdb4两台机器。

物理内存128G,SGA分配64G,PGA分配5G。早上发现essdb4主机glance运行只有6G的空闲内存。

使用如下命令进行简单分析:

SQL> select distinct sid from v$mystat;  得到sid,算算一个空闲进程占用的pga有多大。

SQL>select b.PGA_USED_MEM PGA_USED_MEM, b.PGA_ALLOC_MEM PGA_ALLOC_MEM,b.PGA_FREEABLE_MEM PGA_FREEABLE_MEM,b.PGA_MAX_MEM PGA_MAX_MEM from v$session a, v$process b where a.PADDR=b.ADDR and a.sid ='&sid'

输入刚刚得到的SID号。算出一个空闲进程大概占用的内存,系统总的PGA的使用基本上稳定在1.29G到2G之间(系统设置的PGA的最大值是5G),与往常相比也是一个非常合理的状态。

 SQL>  select sum(PGA_USED_MEM) from v$process;

SUM(PGA_USED_MEM)
-----------------
       1298679359

我们使用ipcs观察共享内存段的使用情况:

essdb4_oracle[/var/adm/syslog]$ipcs -mb

IPC status from /dev/kmem as of Thu Jun 23 10:18:00 2016

T         ID     KEY        MODE        OWNER     GROUP      SEGSZ

Shared Memory:

m          0 0x411c06cb --rw-rw-rw-      root      root        348

m          1 0x4e0c0002 --rw-rw-rw-      root      root      61760

m          2 0x4120077b --rw-rw-rw-      root      root       8192

m          3 0x00a5c581 --rw-------     sfmdb     users   10469376

m          4 0x411c14fb --rw-------      root      root       4096

m   13893637 0x00000000 --rw-r-----    oracle  oinstall 18790481920

m          6 0x06347849 --rw-rw-rw-      root      root      65544

m          7 0x0c6629c9 --rw-r-----      root      root   22614264

m      32776 0x01205c0a --rw-rw-r--      root      root       4192

m          9 0x00000000 D-rw-rw-r--      root      root       4192

m         10 0x00000000 D-rw-rw-r--      root      root       4192

m         11 0x4918a061 --rw-r--r--      root      root      22912

m         12 0x0120468b --rw-rw-r--      root      root       4192

m         13 0x00000000 --rw-r-----    oracle  oinstall 18807521280

m         14 0x00000000 --rw-r-----    oracle  oinstall 18807259136

m         15 0x00000000 --rw-r-----    oracle  oinstall 12367142912

m         16 0x3546761c --rw-r-----    oracle  oinstall     135168

共享内存的详细使用信息:

essdb4_oracle[/]#ipcs -mb

IPC status from /dev/kmem as of Thu Jun 23 13:42:57 2016

T         ID     KEY        MODE        OWNER     GROUP      SEGSZ

Shared Memory:

m          0 0x411c06cb --rw-rw-rw-      root      root        348

m          1 0x4e0c0002 --rw-rw-rw-      root      root      61760

m          2 0x4120077b --rw-rw-rw-      root      root       8192

m          3 0x00a5c581 --rw-------     sfmdb     users   10469376

m          4 0x411c14fb --rw-------      root      root       4096

m   13893637 0x00000000 D-rw-r-----    oracle  oinstall 18790481920

m          6 0x06347849 --rw-rw-rw-      root      root      65544

m          7 0x0c6629c9 --rw-r-----      root      root   22614264

m      32776 0x01205c0a --rw-rw-r--      root      root       4192

m          9 0x00000000 D-rw-rw-r--      root      root       4192

m         10 0x00000000 D-rw-rw-r--      root      root       4192

m         11 0x4918a061 --rw-r--r--      root      root      22912

m         12 0x0120468b --rw-rw-r--      root      root       4192

m         13 0x00000000 --rw-r-----    oracle  oinstall 18807521280

m         14 0x00000000 --rw-r-----    oracle  oinstall 18807259136

m         15 0x00000000 --rw-r-----    oracle  oinstall 12367142912

m         16 0x3546761c --rw-r-----    oracle  oinstall     135168


共享内存段状态为D - Delete,这在通常情况下是不正常的,这是一个Oracle用户占用的共享内存段,由于状态为D的共享内存段本身就是没有正常使用的内存段,所以满以为使用ipcrm –m id删除这个共享内存段,应该就可以解决问题,但是,当时上述做法的结果是系统报告找不到找个ID。

essdb4_oracle[/]#ipcrm -m 13893637

现在我们使用shminfo要使用root权限,查看一下当前到底哪个进程在使用找个共享内存段:

essdb4_oracle[/]#shminfo -s 13893637

sh: shminfo:  not found.

最后重启该节点数据库依然持有该共享内存,无果最后只能重启操作系统,得到释放,当前系统可用内存40G。



本文转自yangjunfeng 51CTO博客,原文链接:http://blog.51cto.com/yangjunfeng/1792231

相关文章
|
2月前
|
存储 缓存 监控
|
2月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
268 2
|
28天前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
115 48
|
10天前
|
机器学习/深度学习 人工智能 缓存
【AI系统】推理内存布局
本文介绍了CPU和GPU的基础内存知识,NCHWX内存排布格式,以及MNN推理引擎如何通过数据内存重新排布进行内核优化,特别是针对WinoGrad卷积计算的优化方法,通过NC4HW4数据格式重排,有效利用了SIMD指令集特性,减少了cache miss,提高了计算效率。
26 3
|
13天前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
14天前
|
机器学习/深度学习 人工智能 算法
【AI系统】内存分配算法
本文探讨了AI编译器前端优化中的内存分配问题,涵盖模型与硬件内存的发展、内存划分及其优化算法。文章首先分析了神经网络模型对NPU内存需求的增长趋势,随后详细介绍了静态与动态内存的概念及其实现方式,最后重点讨论了几种节省内存的算法,如空间换内存、计算换内存、模型压缩和内存复用等,旨在提高内存使用效率,减少碎片化,提升模型训练和推理的性能。
32 1
|
28天前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
62 16
|
28天前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
|
2月前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
2月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第5天】麒麟系统mate-indicators进程占用内存过高问题解决
178 0

推荐镜像

更多