ITPub博客

首页 > 数据库 > Oracle > 11g下设置sga_max_size=4g时出现的报错

11g下设置sga_max_size=4g时出现的报错

原创 Oracle 作者:regonly1 时间:2014-09-28 09:46:58 0 删除 编辑
设置sga_max_size=4g后,重启数据库,出现如下信息:
SQL> startup force
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 3439329280.

查了下,发现是11g新增的一个参数,我的理解,这个参数是类似于10g新增的sga_max_size参数一样,用来自动管理oracle使用的全部内存的。
当初出现sga_max_size的时候,也是为了能够自动管理sga中library cache size、java pool、dic size这些区域的,而memory_max_size就是用来自动管理sga和pga两大块内存区域的。

这个符合了三国演义中结尾说的一句话,所谓“分久必合,合久必分”。Oracle一开始为了精确管理,所以规划了每个功能所需的内存区域,但是时间久了,发现这些区域如果被固定死大小,会出现在某些部分出现内存瓶颈的时候,另外的部分还有很大的剩余,造成了空间使用的浪费。加上对这些部分内存使用分配积累的大量的历史经验和实验,就逐渐把这些分配权限都回收,由一个限定大范围的参数来确定总的大小,然后内部由Oracle根据算法和经验来分配,并可能给予一定的学习能力,使之更加智能。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-1283261/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1067168