爲了開啓oracle 11G 的 AMM ,但是數據庫運行在debian系統下。
先說下這個報錯:
ORA-00845: MEMORY_TARGET not supported on this system
簡單來說就是 MEMORY_MAX_TARGET 的設置不能超過 /dev/shm 的大小
要不把memory_max_target 改小,要不把/dev/shm改大。
普通linux系統:
修改/etc/fstab中tmpfs對應的行
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
然後重新mount使其生效:
mount -o remount /dev/shm
Ubuntu/Debian系統:
報錯原因:
因爲這些系統,將/dev/shm目錄改成了/run/shm,雖然已經有符號鏈接但是仍然出錯
修改步驟:
rm -f /dev/shm
mkdir /dev/shm
mount --move /run/shm /dev/shm
mount -B /dev/shm /run/shm
同時,爲防止機器重啓,需要部署加載腳本開啓啓動:
vi /etc/init.d/oracle-shm
#! /bin/sh
# /etc/init.d/oracle-shm
#
#
case $1 in
start)
echo "Starting script /etc/init.d/oracle-shm"
# Run only once at system startup
if [ -e /dev/shm/.oracle-shm ]; then
echo "/dev/shm is already mounted, nothing to do"
else
rm -f /dev/shm
mkdir /dev/shm
#mount -B /run/shm /dev/shm
mount --move /run/shm /dev/shm
mount -B /dev/shm /run/shm
touch /dev/shm/.oracle-shm
fi
;;
stop)
echo "Stopping script /etc/init.d/oracle-shm"
echo "Nothing to do"
;;
*)
echo "Usage:/etc/init.d/oracle-shm {start|stop}"
exit 1
;;
esac
#
### BEGIN INIT INFO
# Provides: oracle-shm
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5 www.2cto.com
# Default-Stop: 0 1 6
# Short-Description:Bind /run/shm to /dev/shm at system startup.
# Description: Fix to allow Oracle 11g use AMM on debian system.
### END INIT INFO
chmod +x /etc/init.d/oracle-shm
update-rc.d oracle-shm defaults 01 99