Oracle RAC系統記憶體無法釋放解決方案

來源:互聯網
上載者:User

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。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.