深入讲解调整Oracle SGA大小的解决方法

本文介绍了当尝试调整Oracle数据库的db_cache_size参数时遇到ORA-02097及ORA-00384错误的原因及解决办法。通常由于sga_max_size限制导致无法直接调整,需要通过调整SGA总大小来实现。
在修改数据缓冲区的时候,提示错误如下:

  SQL> alter system set db_cache_size=25165824 scope=both;

  alter system set db_cache_size=25165824 scope=both

  *

  ERROR at line 1:

  ORA-02097: parameter cannot be modified because specified value is invalid

  ORA-00384: Insufficient memory to grow cache

  SQL>

  出现这种错误的具体原因:

  SGA(sga_max_size)是由共享池(shared_pool_size),缓冲区高速缓存(db_cache_size 9i以上版本),大型池(large_pool_size),java池(java_pool_size)组成的,在我们安装的时候这些已经分配了一定的值,由于需求需要对其进行调整。

  现在sga的值是一定的,sga通常是大于等于以上几项的值之和。

  假如正好sga等于各项之和,那么调大其中任何一项都会出错,调小是不成问题的。

  在此情况下也就出现了以上的错误:

  下面我们以db_cache_size为例:

  解决方法如下:

  1、调小其它项的值,一般情况下我们不会采用这种方法,随着业务的增大对内存的需求越来越高,估计其它项也没有调小的余地

  2、调大sga此时数据库需要是在关闭状态,由于sga不是动态参数,所以我们需要修改init$ORACLE_SID.ORA的中sga的大小

  (1)首先创建参数文件,这是为了保持和服务器参数文件一致SQL>create pfile from spfile;

  (2)修改init$ORACLE_SID.ORA中对应的sga_max_size大小

  (3)创建服务器参数文件SQL>create spfile from pfile;

  (4)启动数据库 修改db_cache_size的大小

  SQL> alter system set db_cache_size=25165824 scope=both;

  System altered.

  修改完毕。

  总结:

  sga_max_size需要重启数据库来进行调整,而其中的db_cache_size等可以动态调节,在调节共享池时需要计算好SGA的总容量,假如超过了sga_max_size,就会出现报错的现象。[@more@]

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

转载于:http://blog.itpub.net/8119050/viewspace-1007333/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值