打开数据库发现如下错误:
[ oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 21 00:21:56 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
@ 21-OCT-14>conn /as sysdba
Connected to an idle instance.
SYS@orcl2 21-OCT-14>startup mount;
ORA-00845: MEMORY_TARGET not supported on this system
到官方文档error messages查看ORA-00845错误的详细信息:
ORA-00845: MEMORY_TARGET not supported on this system
从文档资料可以知道,如果/dev/shm大小小于sga_max_size的话就会出现ORA-00845的错误。那么对应的就有两种解决方案:一种是改变sga的大小,一种是改变/dev/shm的大小,显然后者更加符合我们的需要。
首先看看原来/dev/shm的大小:
[ oracle@localhost dev]$ du -sh /dev/shm
480M /dev/shm
[ oracle@localhost dev]$ df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 1014M 480M 535M 48% /dev/shm
是480M。
再去看看oracle中memory_target的值(可以去init.ora中查看):
*.memory_target=848297984
可以看到,memory_target为809M,而/dev/shm却只有480M。这里我们将/dev/shm的大小修改为2G,即2048M。
打开/etc/fstab,在tmpfs一行中defaults后添加“,size=2048M”:
[oracle@localhost dbs]$ cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=2048M 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-sda3 swap swap defaults 0 0
/var/swap/swapfile swap swap defaults 0 0
/dev/sdb1 /u02 ext3 defaults 0 0
存盘退出。
重新mount下shm使其生效:
root@localhost /]# mount /dev/shm
重新使用df查看是否已经修改了:
[ root@localhost /]# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.0G 0 2.0G 0% /dev/shm
再次打开数据库就成功了。
[ oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 21 00:21:56 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
@ 21-OCT-14>conn /as sysdba
Connected to an idle instance.
SYS@orcl2 21-OCT-14>startup mount;
ORA-00845: MEMORY_TARGET not supported on this system
到官方文档error messages查看ORA-00845错误的详细信息:
ORA-00845: 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.
从oracle11g开始引入了自动内存管理AMM,这项技术可以自动管理内存,包括pga和sga,决定数据库是否使用AMM的参数是memory_target。这一特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于memory_target。
从文档资料可以知道,如果/dev/shm大小小于sga_max_size的话就会出现ORA-00845的错误。那么对应的就有两种解决方案:一种是改变sga的大小,一种是改变/dev/shm的大小,显然后者更加符合我们的需要。
首先看看原来/dev/shm的大小:
[ oracle@localhost dev]$ du -sh /dev/shm
480M /dev/shm
[ oracle@localhost dev]$ df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 1014M 480M 535M 48% /dev/shm
是480M。
再去看看oracle中memory_target的值(可以去init.ora中查看):
*.memory_target=848297984
可以看到,memory_target为809M,而/dev/shm却只有480M。这里我们将/dev/shm的大小修改为2G,即2048M。
打开/etc/fstab,在tmpfs一行中defaults后添加“,size=2048M”:
[oracle@localhost dbs]$ cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=2048M 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-sda3 swap swap defaults 0 0
/var/swap/swapfile swap swap defaults 0 0
/dev/sdb1 /u02 ext3 defaults 0 0
存盘退出。
重新mount下shm使其生效:
root@localhost /]# mount /dev/shm
重新使用df查看是否已经修改了:
[ root@localhost /]# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.0G 0 2.0G 0% /dev/shm
再次打开数据库就成功了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29800581/viewspace-1307223/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29800581/viewspace-1307223/