idle> startup


ORA-00845: MEMORY_TARGET not supported on this system


因为我一个库里有两个实例,启动时/dev/shm就不够用了。



在Oracle 11g中如果采用AMM内存管理,那么当MEMORY_TARGET的值大于/dev/shm的时候,就会报ORA-00845: MEMORY_TARGET not supported on this system错误,解决办法增加/dev/shm大小,在redhat系列系统中,/dev/shm的默认值是系统总内存的一半


1、修改/dev/shm大小



[oracle@rtest ~]$  df -h


Filesystem            Size  Used Avail Use% Mounted on


/dev/sda3             140G   57G   76G  43% /


/dev/sda1              99M   12M   82M  13% /boot


tmpfs                 3.9G  995M  3.0G  25% /dev/shm


[oracle@rtest ~]$  mount -o size=8G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm


mount: only root can do that


[oracle@rtest ~]$ su -


Password: 


[root@rtest ~]# mount -o size=8G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm


[root@rtest ~]# df -h


Filesystem            Size  Used Avail Use% Mounted on


/dev/sda3             140G   57G   76G  43% /


/dev/sda1              99M   12M   82M  13% /boot


tmpfs                 8.0G  995M  7.1G  13% /dev/shm




2、 vi /etc/fstab





LABEL=/                 /                       ext3    defaults        1 1


LABEL=/boot             /boot                   ext3    defaults        1 2


tmpfs                   /dev/shm                tmpfs   defaults,size=8G        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-sda2         swap                    swap    defaults        0 0




3、启动数据库验证:



[oracle@rtest ~]$ export ORACLE_SID=test0924


[oracle@rtest ~]$ sqlplus / as sysdba




SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 28 14:41:13 2013




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






Connected to an idle instance.




idle> idle> 


idle> conn /as sysdba


Connected to an idle instance.


idle> startup


ORACLE instance started.




Total System Global Area 3340451840 bytes


Fixed Size                  2232960 bytes


Variable Size            3204451712 bytes


Database Buffers          117440512 bytes


Redo Buffers               16326656 bytes


Database mounted.


Database opened.


idle> conn /as sysdba


Connected.



sys@TEST0924> show parameter mem




NAME                                 TYPE        VALUE


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


hi_shared_memory_address             integer     0


memory_max_target                    big integer 3200M


memory_target                        big integer 0


shared_memory_address                integer     0




4、官方解析



Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.

5、解决问题建议

5.1. If you are installing Oracle 11g on a Linux system, note that Memory Size (SGA and PGA), which sets the initialization parameter MEMORY_TARGET or MEMORY_MAX_TARGET, cannot be greater than the shared memory filesystem (/dev/shm) on your operating system. To resolve the current error, increase the /dev/shm file size.

5.2. If configuring AMM is not possible due to lack of space on /dev/shm mount point, you can configure ASMM instead of AMM, i.e. set SGA_TARGET, SGA_MAX_SIZE and PGA_AGGREGATE_TARGET instead of MEMORY_TARGET.