数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2020年05月31日
 
深入讲解调整OracleSGA大小的解决方法

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

SQL>altersystemsetdb_cache_size=scope=both;

altersystemsetdb_cache_size=scope=both

*

ERRORatline:

ORA:parametercannotbemodifiedbecausespecifiedvalueisinvalid

ORA:Insufficientmemorytogrowcache

SQL>

出现这种错误的具体原因

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

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

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

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

下面我们以db_cache_size为例:

解决方法如下

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

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

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

()修改init$ORACLE_SIDORA中对应的sga_max_size大小

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

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

SQL> alter system set db_cache_size= scope=both;

System altered

修改完毕

总结

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

上一篇:oracle中ora-0100错误打开游标过大的解决

下一篇:SQLServer2000故障转移群集