ORA-00845,ORA-00844,ORA-00851:MEMORY_TARGET,PGA,SGA
标签:
oracle |
分类: Oracle |
Memory_max_target 和 SGA
PGA的关系
1.如果想开启AMM(auto memory
management),需要设置memory_target,
2.memory_max_target/sga_max_size是静态参数,
memory_target/sga_target/pga_aggregate_target为动态参数,
3.设置memory_target后,sga_target+pga_aggregate_target=memory_target
且都为动态值,最大值为memory_target
启动数据库出现如下问题
SQL>
startup
ORA-00844: Parameter
not taking MEMORY_TARGET into account
ORA-00851:
SGA_MAX_SIZE 734003200 cannot be set to more than MEMORY_TARGET
415236096.
解决方法:
1.[oracle@PETER /]$ sqlplus / as sysdba
2. 通过spfile创建pfile,会覆盖原始存在的pfile文件数据
3.再通过pfile文件重新创建spfile文件
SQL> create spfile from
pfile='/u01/oracle11g/product/11.2.0/dbs/init.ora';
4.SQL>
startup 能正常启动
调整sga的顺序,先调整tmpfs大小,再调整MEMORY_TARGET大小,最后调整SGA,
保证tmpfs>memory_target>sga+pga
---------------------------------------------------------------------------------
1.修改memory_max_target后,重启数据库报下图问题

在oracle
11g中新增的内存自动管理的参数Memory_target,它能自动调整SGA和PGA,
这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于Memory_target,
如果/dev/shm比Memory_target小就会报错。
解决方案
1.初始化参数Memory_target或Memory_max_target不能大于共享内存(/dev/shm),
为了解决这个问题,可以增大/dev/shm
在/etc/fstab里面,2个修改地方,
一是swap后面修改成defaults,size=11G,
二是tmpfs后面修改成defaults,size=11G,修改完,如下所示
修改完后,需要重新挂载一下,才能生效:
[root@PETER /]# mount -o
remount,size=11G /dev/shm
再次启动数据库,就不会报错了,正常启动:

加载中…