oracle数据库错误代码27102,数据库启动出现ORA-27102错误

一台测试数据库启动时出现了这个错误。

数据库启动时报错:

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

SQL*Plus: Release 9.2.0.4.0 - Production on星期一11月16 08:04:00 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

已连接到空闲例程。

SQL> startup

ORA-27102: out of memory

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

在alert文件中包含了下面的信息:

WARNING: EINVAL creating segment of size 0x0000000233400000

fix shm parameters in /etc/system or equivalent

这种错误显然是操作系统参数设置不当造成的,因为操作系统中的内存和SWAP空间是足够的。

不过系统中的内核参数设置也没有更改,一直以来数据库启动也没有报错。

检查系统参数设置:

[oracle@bjtest dbs]$ more /etc/sysctl.conf

# Kernel sysctl configuration file for Red Hat Linux

#

# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and

# sysctl.conf(5) for more details.

# Controls IP packet forwarding

net.ipv4.ip_forward = 0

# Controls source route verification

net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing

net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename

# Useful for debugging multi-threaded applications

kernel.core_uses_pid = 1

# Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes

kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue

kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes

#kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages

#kernel.shmall = 4294967296

#fs.file-max = 6553600

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 8589934592

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

由于数据库初始化参数设置的内存小于内核的设置,不应该导致的产生。

SQL> select 2097152 * 4096 from dual;

2097152*4096

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

8589934592

不过无论是SHMMAX还是SHMALL的设置,都是和内存设置相差无几,下面尝试调整SHMALL参数,设置值为4194304:

[root@bjtest ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 4194304

kernel.shmmax = 8589934592

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@bjtest ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on星期二11月17 01:46:54 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

已连接到空闲例程。

SQL> startup

ORA-27123: unable to attach to shared memory segment

Linux-x86_64 Error: 22: Invalid argument

Additional information: 1

Additional information: 884740

这个错误信息显然是指出了SHMMAX参数的设置存在问题:

[root@bjtest ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 4194304

kernel.shmmax = 12000000000

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

再次修改SHMMAX参数后,数据库成功启动:

SQL> startup

ORACLE例程已经启动。

Total System Global Area 9432971568 bytes

Fixed Size                   756016 bytes

Variable Size             838860800 bytes

Database Buffers         8589934592 bytes

Redo Buffers                3420160 bytes数据库装载完毕。数据库已经打开。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值