环境
虚拟机:VMware 10
操作系统:Linux 64位
数据库:Oracle 11g R2
现象
原Linux上跑着一个数据库实例,增加一个实例(orange)后,启动新实例时,报错:ORA-00845: MEMORY_TARGET not supported on this system
具体如下:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
原因
[oracle@oracle ~]$ oerr ora 845
00845, 00000, "MEMORY_TARGET not supported on this system"
// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.
// *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.
查找资料后发现在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求
/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错
解决办法
初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),可通过调整共享内存(/dev/shm)大小来解决
查看共享内存的大小,如下,显示其为2G,
[root@oracle ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 188G 38G 142G 21% /
/dev/sda3 2.0G 36M 1.9G 2% /tmp
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 2.0G 1.1G 877M 56% /dev/shm
因为之前只有一个实例,设置的2G大小正好适应,现有两个实例,这两个实例类似,所以共享内存可设置为4G.
[root@oracle ~]# mount -o remount,size=4G /dev/shm
[root@oracle ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 188G 38G 142G 21% /
/dev/sda3 2.0G 36M 1.9G 2% /tmp
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 4.0G 1.1G 3.0G 27% /dev/shm
为了确保操作系统重启之后能生效,需要修改/etc/fstab文件,修改后的fstab文件如下:
[root@oracle ~]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/tmp /tmp ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
修改后保存,重启虚拟机,然后可以正常打开数据库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29367946/viewspace-1800253/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29367946/viewspace-1800253/