Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103682932
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-07 10:24:20

   来源:赛迪网    作者:Richard

在修改数据缓冲区的时候,提示错误如下:

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,就会出现报错的现象。

阅读(336) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~