为了开启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