阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle RAC系统内存无法释放解决方法

201次阅读
没有评论

共计 3076 个字符,预计需要花费 8 分钟才能阅读完成。

交代一下环境,是现网实时生产数据库主机。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。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-06/132685.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3076字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中