更改AMM上限後,重啟出現ORA-00845(11g)


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

直接到 SQLPLUS 啟動,結果出現錯誤:

SQL> startup
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

沒錯,我將記憶體的上限設定為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

這樣就可以了。