ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle启动遭遇ORA-27102: out of memory

oracle启动遭遇ORA-27102: out of memory

原创 Linux操作系统 作者:myownstars 时间:2013-09-16 14:41:57 0 删除 编辑

OS: linux 2.6.9-103.ELsmp #1 SMP

DB: 10205, 4节点RAC

背景:

节点1前几天重启维护,3instance起来了俩,第3TEST03N1启动时不断报错

$ $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

PAGESIZE4K,最大允许共享内存4194304*4096= 17179869184,当前已占用4297064448*3+132120576= 13023313920,还剩余4156555264= 3964M

TEST03N1SGA_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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-772778/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3109645