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,就會出現報錯的現象。
新聞熱點
疑難解答