ORA-00845错误原因及解决办法
故障现象:
用startup命令启动数据库时出现ora-00845错误提示:
SQL> startup ORA-00845: MEMORY_TARGET not supported on this system
故障原因:
在oracle database 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错。
解决办法:
- 修改初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET,使其不能大于共享内存(/dev/shm);
- 修改/etc/fstab文件;
补充知识,来自http://www.linuxidc.com/Linux/2014-05/101818.htm:
- /dev/shm/是linux下一个非常有用的目录,该目录不在硬盘上,而是在内存里。
- 在linux下,使用df -h命令可以看到/dev/shm目录的容量大小,默认值为内存大小的一半,但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有 100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的。
- 默认情况下,系统启动时就会加载/dev/shm ,它就是所谓的tmpfs。象虚拟磁盘一样,tmpfs 可以使用RAM,也可以使用交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个mkfs之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:
- 动态文件系统的大小;
- tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的;
- tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作;