ORA-00845: MEMORY_TARGET not supported on this system

最近在玩12c,在Oracle Linux 6.3上搭一个单实例带grid,在DBCA建库的时候出现:

或者在启动数据库的时候:

接着建库中止,仔细研究后发现,造成这个问题是由于设置SGA的大小超过系统的/dev/shm的大小:


查看alert_orcl.log日志,找到如下报错:

看到日志中:
当前大小: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容量


发现shm也在被Grid进程正在使用,为了umount该装载点,必须先得shutdown ASM instance

如果有数据库则先关闭数据库

再次查看



这时候不妨把值给的更大一点,因为还有ASM实例会需要占用一部分。

或者也可以直接

但是请注意,以上方法在OL6.3中,哪怕是修改/etc/fstab,重启机器后也还是会变成默认。实测在5.8的版本中修改/etc/fstab应该是直接生效的。

所以需要在开机后马上执行下:mount -o remount /dev/shm

或者一劳永逸的方法

使用暴力方法,在开机的过程中remount。(强烈推荐

增加红色部分:

———————————————

也可以通过/etc/rc.d/rc.sysinit使fstab中tmpfs的修改生效

注释如下语句

#mount -f /dev/shm >/dev/null2>&1

在rc.syinit中找到如下内容:

在如下部分里添加tmpfs这个类型:

 方法3:

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.