oracle啟動遭遇ORA-27102: out of memory該怎么辦,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
OS: linux 2.6.9-103.ELsmp #1 SMP
DB: 10205, 4節點RAC
背景:
節點1前幾天重啟維護,3個instance起來了倆,第3個TEST03N1啟動時不斷報錯
$ $ORACLE_HOME/bin/sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Mon Sep 16 04:30:06 2013
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup nomount;
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
診斷思路:
首先想到的是共享內存耗光了
$ ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xa637e870 0 oracle 640 132120576 17
0x00000000 131073 oracle 660 4297064448 1 dest
0x09c77ebc 229378 oracle 660 4297064448 36
0x9b377f58 262147 oracle 640 4297064448 38
根據當前instance進程數判斷,第一行屬于ASM,后兩個為另外兩個instance,而第2行沒有被占用,應該是TEST03N1關閉時linux回收共享內存段失敗導致的;
$ cat /proc/sys/kernel/shmmax
12884901888
$ cat /proc/sys/kernel/shmall
4194304
PAGESIZE為4K,最大允許共享內存4194304*4096= 17179869184,當前已占用4297064448*3+132120576= 13023313920,還剩余4156555264= 3964M;
而TEST03N1的SGA_MAX_SIZE/SGA_TARGET=4G,所以會報out of memory.
而ipcrm不起作用
$ ipcrm -m 131073
經過一系列測試,可允許設置的SGA_MAX_SIZE/SGA_TARGET最大值為3952M.
此時的共享內存段使用情況
$ ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xa637e870 0 oracle 640 132120576 17
0x00000000 131073 oracle 660 4297064448 1 dest
0x09c77ebc 229378 oracle 660 4297064448 40
0x9b377f58 262147 oracle 640 4297064448 40
0x7ede1a40 557060 oracle 640 4146069504 43
大約還剩余10M左右
SQL> select to_char(17179869184-4297064448*3-132120576-4146069504) from dual;
TO_CHAR(
--------
10485760
SQL> select 10485760/1024/1024 from dual;
10485760/1024/1024
------------------
10
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。