利用 Oracle Enterprise Manager 來設定記憶體的上限為700MB後,重新啟動資料庫,但是重新整理後卻還是關閉的狀態。
直接到 SQLPLUS 啟動,結果出現錯誤:
ORA-00845: MEMORY_TARGET not supported on this system
這個問題是由於設置SGA的大小超過了操作系統/dev/shm(可查閱Linux->關於/dev/shm)的大小。
這也說明了我在 OEM 內看到預設的記憶體上限為432MB,指的就是 /dev/shm預設的大小。
注:/dev/shm預設為實體記憶體的一半。
# df -vh
Filesystem Size Used Avail Use% Mounted on
tmpfs 444M 0 444M 0% /dev/shm
tmpfs 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
這樣就可以了。