linux中出现ora27102,关于 ORA-27102: out of memory 解决一例 | YallonKing

问题描述:对内存为24GB的linux 64位之上的oracle11g调整sga大小导致错误ORA-27102,并进一步阐述参数kernel.shmmax和参数kernel.shmall设置问题。

基本信息

OS:linux x86-64 DB:11.2.0.3

[oracle@tongjidb ~]$ more /etc/fstab

#

# /etc/fstab

# Created by anaconda on Fri Nov 1 22:06:11 2013

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=9cf955b0-f18f-4848-90d0-0605663fbab1 / ext4 defaults 1 1

UUID=7d64dc55-51e1-4f9d-89a4-42cbaf6f229a /boot ext4 defaults 1 2

UUID=427C-4136 /boot/efi vfat umask=0077,shortname=winnt 0 0

UUID=66b835cf-0b77-4a2d-bba9-55c821d3215c swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults,size=20G 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

[oracle@tongjidb ~]$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda4 786G 57G 690G 8% /

tmpfs 20G 0 20G 0% /dev/shm

/dev/sda2 3.9G 98M 3.6G 3% /boot

/dev/sda1 3.9G 260K 3.9G 1% /boot/efi

tmpfs 20G 0 20G 0% /dev/shm

[oracle@tongjidb ~]$ free -g

total used free shared buffers cached

Mem: 23 2 20 0 0 2

-/+ buffers/cache: 0 22

Swap: 29 0 29

当前sga设置如下

[root@tongjidb ~]# su - oracle

[oracle@tongjidb ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 11 10:30:58 2013

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> sho parameter sga

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

lock_sga boolean FALSE

pre_page_sga boolean FALSE

sga_max_size big integer 7920M

sga_target big integer 7920M

SQL> sho parameter spfile

NAME TYPE

------------------------------------ ----------------------

VALUE

------------------------------

spfile string

/u01/app/oracle/product/11.2.0

/db_1/dbs/spfiletongji.ora

调大sga参数设置,重启数据库报错

SQL> alter system set sga_target=16g scope=spfile;

System altered.

SQL> alter system set sga_max_size=16g scope=spfile;

System altered.

SQL> shutdown immediate;

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> startup nomount;

ORA-27102: out of memory

Linux-x86_64 Error: 28: No space left on device

修改操作系统参数[/etc/sysctl.conf]

#oracle set

fs.aio-max-nr = 1048576

fs.file-max = 6815744

#kernel.shmall = 2097152

kernel.shmall = 5767168

#kernel.shmmax = 4294967295

kernel.shmmax = 23622320128

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

#oracle set

[root@tongjidb ~]# sysctl -p

参数生效后尝试启动数据库,正常。

SQL> startup nomount;

ORACLE instance started.

Total System Global Area 1.9241E+10 bytes

Fixed Size 2236488 bytes

Variable Size 7247761336 bytes

Database Buffers 1.1945E+10 bytes

Redo Buffers 45682688 bytes

SQL> sho parameter sga

NAME TYPE

------------------------------------ ----------------------

VALUE

------------------------------

lock_sga boolean

FALSE

pre_page_sga boolean

FALSE

sga_max_size big integer

18G

sga_target big integer

18G

参数说明与设定(64位OS):

kernel.shmmax:

Controls the maximum shared segment size, in bytes

kernel.shmall:

Controls the maximum number of shared memory segments, in pages

[root@tongjidb ~]# getconf PAGE_SIZE

4096

kernel.shmmax 一般为物理内存的一半,最大为物理内存-2GB

我们设置的参数

kernel.shmmax 值为:24GB-2GB=22GB=22*1024*1024*1024=23622320128

kernel.shmall 值为:kernel.shmmax/PAGE_SIZE=23622320128/4096=5767168

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值