故障:ORA-00845: MEMORY_TARGET not supported on this system

Oracle 11g的Linux版本在修改了MEMORY_TARGET或者SGA_TARGET后启动可能会报错:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

这个问题是由于设置SGA的大小超过了操作系统/dev/shm的大小:

[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 4089416 0 4089416 0% /dev/shm

Oracle在metalink的文档:Doc ID:Note:460506.1中进行了说明。解决这个问题只有两个方法,一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,另一种方法就是调整/dev/shm的大小。

修改/dev/shm的大小可以通过修改/etc/fstab来实现:

[root@db2  ~]# df  -h  /dev/shm    //查看/dev/shm大小

tmpfs                 1.0G  500M  500M 50%  /dev/shm
[root@db2 ~]#vi /etc/fstab      //更换/dev/shm默认大小为2G

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
#tmpfs                   /dev/shm               tmpfs   defaults        0 0
tmpfs                   /dev/shm     tmpfs   defaults,size=2048M  0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-hda3         swap                    swap    defaults        0 0

//注:本行defaults,size=10240M 中间无空格
[root@db2 ~]#
[root@db2 ~]# umount /dev/shm
[root@db2  ~]# mount /dev/shm
[root@db2  ~]# df  -h

/dev/hda2             8.2G  4.1G  3.8G  53% /
/dev/hda1              92M   12M   75M  14% /boot
tmpfs                 2.0G  240M  1.8G  12% /dev/shm
/dev/sda              7.9G  7.5G   39M 100% /array
修改/etc/fstab,重新mount /dev/shm,然后就可以启动数据库了。
[oracle@db2 ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on Sat Jan 21 13:26:28 2012

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

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 4743446528 bytes
Fixed Size 2143824 bytes
Variable Size 3892316592 bytes
Database Buffers 805306368 bytes
Redo Buffers 43679744 bytes
Database mounted.
Database opened