oracle数据库释放资源,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。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值