我认为,oracle在分配内存时首先检查MEMORY_TARGET,不为0时则忽略SGA_TARGET和PGA_AGGREGATE_TARGET;
为0时则检查SGA_TARGET,不为0时按该值动态分配,为0时则检查DB_CACHE_SIZE等sga组件的设置值,pga的规则相同。
这里有个问题,就是SGA_TARGET+PGA_AGGREGATE_TARGET>MEMORY_TARGET时,sga和pga组件内存和大于SGA_TARGET和PGA_AGGREGATE_TARGET时会怎样呢?
以SGA_TARGET+PGA_AGGREGATE_TARGET>MEMORY_TARGET为例,其他两种情况应该是一样的。
首先这三个参数的设置是受到其他两个参数制约的,不能随意设置,但确实可以出现这种情况。设置完后不报错,但在重启数据库时会遇到ORA-00838错误。
这时怎么办呢?
1、create pfile from spfile
2、修改对应参数值
3、startup pfile='xxx'
4、create spfile from pfile
5、重启数据库
第3步虽然启动数据库成功,但是参数文件用的是pfile,在用alter system修改参数并指定到spfile时会报错,建议重新创建spfile并使用spfile启动数据库
为0时则检查SGA_TARGET,不为0时按该值动态分配,为0时则检查DB_CACHE_SIZE等sga组件的设置值,pga的规则相同。
这里有个问题,就是SGA_TARGET+PGA_AGGREGATE_TARGET>MEMORY_TARGET时,sga和pga组件内存和大于SGA_TARGET和PGA_AGGREGATE_TARGET时会怎样呢?
以SGA_TARGET+PGA_AGGREGATE_TARGET>MEMORY_TARGET为例,其他两种情况应该是一样的。
首先这三个参数的设置是受到其他两个参数制约的,不能随意设置,但确实可以出现这种情况。设置完后不报错,但在重启数据库时会遇到ORA-00838错误。
这时怎么办呢?
1、create pfile from spfile
2、修改对应参数值
3、startup pfile='xxx'
4、create spfile from pfile
5、重启数据库
第3步虽然启动数据库成功,但是参数文件用的是pfile,在用alter system修改参数并指定到spfile时会报错,建议重新创建spfile并使用spfile启动数据库
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8367589/viewspace-730119/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8367589/viewspace-730119/