“ORA-00845: MEMORY_TARGET not supported on this system”不完全解决之道
2013-09-29 11:18
597 查看
最近在玩12c,在Oracle Linux 6.3上搭一个单实例带grid,在DBCA建库的时候出现:
ORA-00845: MEMORY_TARGET not supported on this system或者在启动数据库的时候:
SQL> startup ORA-00845: MEMORY_TARGET not supported on this system接着建库中止,仔细研究后发现,造成这个问题是由于设置SGA的大小超过系统的/dev/shm的大小:
[root@12c ~]# df -k /dev/shm Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 2027740 645152 1382588 32% /dev/shm查看alert_orcl.log日志,找到如下报错:
WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 1644167168 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 1415770112 and used is 660635648 bytes. Ensure that the mount point is /dev/shm for this directory. Wed Jul 31 21:04:42 2013 memory_target needs larger /dev/shm看到日志中:当前大小:1415770112 bytes =1350.1834 MB期望大小: at least 1644167168 bytes = 1568 MB一般来说,shm默认大小是系统内存的1/2大小。即系统内存是4G,则tmpfs就是2G。你可能会说既然期望是1568MB,2G也足够了,这里不能忘记还有ASM实例又会占用一些内存,剩下的就小于1568m了。
方法1:调低MEMORY_TARGET内存
alter system set MEMORY_MAX_TARGET=1G scope=spfile;当然如果已经无法启动库,也没法操作上述命令。而且对于真实应用调低MEMORY_TARGET内存也不是很实用。具体方法就不示范,以方法2为主。方法2:修改shm容量
[root@12c ~]# umount /dev/shm umount: /dev/shm: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@12c ~]# ls /dev/shm ora_+ASM_5308430_0 ora_+ASM_5341199_18 ora_+ASM_5341199_262 ora_+ASM_5308430_1 ora_+ASM_5341199_180 ora_+ASM_5341199_263 ora_+ASM_5341199_0 ora_+ASM_5341199_181 ora_+ASM_5341199_264 ora_+ASM_5341199_1 ora_+ASM_5341199_182 ora_+ASM_5341199_265 ora_+ASM_5341199_10 ora_+ASM_5341199_183 ora_+ASM_5341199_266 .............................发现shm也在被Grid进程正在使用,为了umount该装载点,必须先得shutdown ASM instance如果有数据库则先关闭数据库
su - grid sqlplus / as sysasm shutdown immediate再次查看
[root@12c ~]# ls /dev/shm pulse-shm-2298131991 pulse-shm-2650250879 pulse-shm-2472803980 pulse-shm-737986347 #还有进程占用 [root@12c ~]# fuser -m -v /dev/shm #详细查看那些进程正在使用 Cannot stat file /proc/2350/fd/79: No such file or directory Cannot stat file /proc/2350/fd/80: No such file or directory USER PID ACCESS COMMAND /dev/shm: oracle 2753 ....m gnome-settings- oracle 2775 ....m pulseaudio oracle 2815 ....m gnome-volume-co oracle 2836 ....m gpk-update-icon fuser -m -k /dev/shm #自动杀正在使用的进程 fuser -m -i -k /dev/shm #杀进程前会询问
vi /etc/fstab tmpfs /dev/shm tmpfs defaults,size=4g 0 0这时候不妨把值给的更大一点,因为还有ASM实例会需要占用一部分。或者也可以直接
vi /etc/fstab mount -o remount /dev/shm但是请注意,以上方法在OL6.3中,哪怕是修改/etc/fstab,重启机器后也还是会变成默认。实测在5.8的版本中修改/etc/fstab应该是直接生效的。所以需要在开机后马上执行下:mount -o remount /dev/shm或者一劳永逸的方法使用暴力方法,在开机的过程中remount。
[root@12c ~]# vi /etc/rc.local #!/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———————————————也可以通过/etc/rc.d/rc.sysinit使fstab中tmpfs的修改生效注释如下语句#mount -f /dev/shm >/dev/null2>&1在rc.syinit中找到如下内容:
if [ "$READONLY" != "yes" ] ; then action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev else action $"Mounting local filesystems: " mount -a -n -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev fi在如下部分里添加tmpfs这个类型:
if [ "$READONLY" != "yes" ] ; then action $"Mounting local filesystems: " mount -a -t tmpfs,nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev else action $"Mounting local filesystems: " mount -a -n -t tmpfs,nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev fi
方法3:强烈推荐
vim /etc/rc.d/rc.sysinit change the line: mount -f /dev/shm>/dev/null 2>&1 to mount /dev/shm>/dev/null 2>&1
转载请注明新炬网络www.shsnc.cn
相关文章推荐
- ORA-00845: MEMORY_TARGET not supported on this system 错误解决方法!
- ORA-00845 MEMORY_TARGET not supported on this system 的解决
- oracle报错ORA-00845: MEMORY_TARGET not supported on this system的解决办法
- oracle启动报错ORA-00845: MEMORY_TARGET not supported on this system解决办法
- 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决
- 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决
- 解决ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system(解决方法)
- ORA-01031: insufficient privileges与ORA-00845: MEMORY_TARGET not supported on this system——解决
- ORA-00845 MEMORY_TARGET not supported on this system 的解决
- ORA-00845: MEMORY_TARGET not supported on this system解决
- [Oracle]ORA-00845: MEMORY_TARGET not supported on this system解决
- ORA-00845 MEMORY_TARGET not supported on this system 的解决
- ORA-00845 MEMORY_TARGET not supported on this system 的解决
- ORA-00845 : MEMORY_TARGET not supported on this system(调大数据库内存无法启动)
- ORA-00845: MEMORY_TARGET not supported on this system
- ora-00845 MEMORY_TARGET not supported on this system 的问题
- Oracle 11g ORA-00845: MEMORY_TARGET not supported on this system 说明
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system