设置oracle11g自动内存管理,重新设置了memory_max_target,但重新启动数据库时却报错:
ORA-00845: MEMORY_TARGET not supported on this system
原因:Oracle的官方解析是
Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.
大概意思就是:MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小(shm默认的实际内存的一半)
解决方案:
df -h |grep shm 查看大小
可以修改大小 /etc/fstab中
tmpfs /dev/shm tmpfs defaults 0 0 为
tmpfs /dev/shm tmpfs defaults,size=新大小 0 0
然后umount /dev/shm mount /dev/shm使设置生效
重新启动数据库
但尝试过程中还会遇到其它错误,都是由于参数设置错误导致的
可以看到之前设置参数的语句alter system set memory_max_target=32G scope=spfile
可见,设置只针对spfile有效,则可以用pfile启动数据库
即,startup pfile='pfile存放路径'
create spfile from pfile='pfile存放路径'
最后再次重启数据库即可
直接从参数配置数据库,需要操作人员对oracle不同版本的特性有深刻的了解,否则就容易出现这种不经意的错误,但危害极大