標籤:
Linux下,Oracle 11g的自動記憶體管理不能指定大於這個/dev/shm的總量記憶體。否則就會出現如下錯誤
ORA-00845: MEMORY_TARGET not supported on this system
Linux環境下,掛載點 /dev/shm預設是系統記憶體的50%。根據Oracle的安裝手冊,需要手工指定 /dev/shm的空間大小,以便自動記憶體管理可以使用更多的記憶體。
最近wait4friend在一台CentOS6.2的VM上,修改/dev/shm之後出現問題,現象是系統重啟後這個配置總是回複成預設值。整個過程如下
- 1. 查看系統當前的配置,tmpfs是1.9G,是系統記憶體的50%。
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos00-lv_root
14G 11G 2.6G 80% /
tmpfs 1.9G 88K 1.9G 1% /dev/shm
/dev/sda1 485M 37M 424M 8% /boot
- 2. 修改/etc/fstab,給/dev/shm指定一個比較大的數值。下面的紅色部分就是新指定的數值。
[[email protected] ~]# cat /etc/fstab
/dev/mapper/vg_centos00-lv_root / ext4 defaults 1 1
UUID=3f3c551e-902d-46f6-9b93-0430c175421d /boot ext4 defaults 1 2
/dev/mapper/vg_centos00-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=3276M 0 0
- 3. 重新mount之後,可以確定新的設定3.2G可以生效。
[[email protected] ~]# fuser -km /dev/shm
/dev/shm: 2136m
[[email protected] ~]# umount /dev/shm
[[email protected] ~]# mount /dev/shm
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos00-lv_root
14G 11G 2.6G 80% /
/dev/sda1 485M 37M 424M 8% /boot
tmpfs 3.2G 0 3.2G 0% /dev/shm
- 4. 奇怪的問題出現在reboot之後,這個配置消失了,居然又變回了預設值。
[[email protected] ~]# reboot
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos00-lv_root
14G 11G 2.6G 80% /
tmpfs 1.9G 88K 1.9G 1% /dev/shm
/dev/sda1 485M 37M 424M 8% /boot
- 5. 難道剛才的修改沒有寫到設定檔?確認一下剛才的修改是儲存成功的。
[[email protected] ~]# cat /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=3276M 0 0
並且/etc/mtab的記錄資訊也是匹配的
[[email protected] ~]# cat /etc/mtab
/dev/mapper/vg_centos00-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw,size=3276M 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
- 6. 經過多次測試,這個問題反覆出現。wait4friend沒找到其他辦法,最後只能用比較暴力的辦法在開機過程中remount這個目錄,見下面紅色的增加部分。
[[email protected] ~]# vi /etc/rc.local
"/etc/rc.local" 11L, 274C#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
mount -o remount /dev/shm
重新啟動之後,問題解決。
centos 修改shm