PS:前些时间一台演示环境的Oracle 11g for Linux不知什么原因,启动不起来,报错ORA-00845。搜索了下,这个问题是由于设置SGA的大小超过了操作系统/dev/shm的大小。当时解决了没空写总结,今天有点空,总结分享一下:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
[root@oracle11g ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 3072000 1374176 1697824 45% /dev/shm
Oracle在metalink的文档:Doc ID: Note:460506.1中进行了说明。解决这个问题只有两个方法,一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,另一种方法就是调整/dev/shm的大小。
我的解决方法:
1、修改/dev/shm的大小可以通过修改/etc/fstab文件来实现(size的值要根据内存大小来调整,我调整了几次才成功。):
[root@oracle11g ~]# vim /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=3000m 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
2、修改/etc/fstab,重新mount /dev/shm,就可以启动数据库了,问题解决。
[root@oracle11g ~]# umount /dev/shm
[root@oracle11g ~]# mount /dev/shm
[root@oracle ~]# su - oracle
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 30 17:09:42 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1102344192 bytes
Fixed Size 2212576 bytes
Variable Size 838864160 bytes
Database Buffers 251658240 bytes
Redo Buffers 9609216 bytes
Database mounted.
Database opened.