Oracle数据库pfile中的参数memory_target

Oracle新手如有错误的地方请各位大佬指正

环境

  • Oracle 11g
  • Centos 6.4
  • 报错信息:ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 2272M
image.png

解决过程

1.先了解参数的意义

首先查下文档看这个参数怎么解释,可以看memory_target和SGA、PGA之间的关系
Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整;
Oracle 10g引入sga_target,可以自动对SGA进行调整;
Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存,这就是新引入的自动内存管理特性。

2.错误来源
  • 了解了参数的意义我们就试一下,调整了pga_target参数为0
    结果报错信息变为least 1548M (减少的那部分正好是PGA参数对应的内存大小)
image.png
  • 再试一下调整sga_target参数为0
    结果同上,报错信息变为least 924M(减少的那部分为SGA参数对应的内存大小)
image.png

也就是说这个memory_target参数值是和SGA+PGA的参数值有正向联系,并且必须大于这两个值加起来(其实不算错误)

解决问题

找到了原因就来解决问题,memory_target参数应该大于SGA+PGA的内存值
我多给点,那就多给点 给了3G
问题解决! 出现了新报错! good !

image.png

报错信息:ORA-00845: MEMORY_TARGET not supported on this system

在这个系统不支持? (本机物理内存及可用内存都大于3G)

  • 其实这个报错不是不支持,经查阅这里设置的值要小于/dev/shm的磁盘空间。查看本机的才1.9G(/dev/shm大小默认为系统内存的一半大小)
    什么? /dev/shm明明是磁盘 -- 和memory_target会有什么关系?
    只能继续了解/dev/shm是什么。 /dev/shm详解入口
image.png

默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。

mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

image.png

修改之后去startup

image.png

问题解决。启动成功

总结: sga_target+pga_target+预留部分内存memory_target < /dev/shm

你可能感兴趣的:(Oracle数据库pfile中的参数memory_target)