OS version : Red Hat Enterprise Linux Server release 5.5 (Tikanga)

database version :

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 -  Production

现象:修改了spfile文件后,启动数据库报错

oracle#sqlplus  / as sysdba

SQL>startup

ORACLE instance started.


Total System Global Area  945786880 bytes

Fixed Size                  1340468 bytes

Variable Size             553651148 bytes

Database Buffers          385875968 bytes

Redo Buffers                4919296 bytes

ORA-00845 :MEMORY_TARGET not support on this system

查资料得知:

在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错

解决方案:

1.初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),为了解决这个问题,可以增大/dev/shm

如:

# mount -t tmpfs shmfs -o size=7g /dev/shm

2.为了确保操作系统重启之后能生效,需要修改/etc/fstab文件

shmfs /dev/shm tmpfs size=7g 0

3.如果/dev/shm没有挂载也会报上面的错,所认需要确保已经挂载

oracle@aaaprod-db ~]$ df -h

……

tmpfs                16G 8.9G 7.2G 56% /dev/shm


在此启动就ok

SQL> startup

ORACLE instance started.

Total System Global Area 9420095488 bytes

Fixed Size                2236248 bytes

Variable Size          2315255976 bytes

Database Buffers        7046430720 bytes

Redo Buffers              56172544 bytes

Database mounted.

Database opened.

SQL> exit