Oracle 11g 錯誤:ORA-00845

利用 Oracle Enterprise Manager 來設定記憶體的上限後,重新啟動資料庫,但是重新整理後卻還是關閉的狀態。

 直接到 SQLPLUS 啟動,結果出現錯誤: SQL> startup ORA-00845: MEMORY_TARGET not supported on this system 

一開始還真不知道為什麼會有這個錯誤訊息,上網查了一下,原來是Oracle 11g的新功能AMM的設定值有問題,

AMM會使用到Linux主機上/dev/shm, 所以這個問題是由於設置SGA的大小超過了操作系統/dev/shm 的大小。

 這也說明了我在 OEM 內看到預設的記憶體上限為432MB,指的就是 /dev/shm預設的大小。 注:/dev/shm預設為實體記憶體的一半。

 # df -vh
 Filesystem       Size          Used              Avail          Use%       Mounted on
 tmp                 444M             0             444M         0%         /dev/shm

 沒錯,我將記憶體的上限設定為700MB,果然超過 /dev/shm 解決這個問題只有兩個方法,

一種是修改初始化參數,使得初始化參數中SGA的設置小於/dev/shm的大小, 

另一種方法就是調整/dev/shm的大小。

 修改初始化參數就是修改 init.ora,再 startup pfile=?/dbs/init.ora; create spfile from pfile; 


 修改 /etc/fstab 來調整 /dev/shm 的大小:


 原來:tmpfs /dev/shm tmpfs defaults 0 0 改為:tmpfs /dev/shm tmpfs defaults,size=700M 0 0


 # umount /dev/shm # mount -a 這樣就可以了。