在修改數據緩沖區的時候提示錯誤如下:
SQL> alter system set db_cache_size= scope=both;
alter system set db_cache_size= scope=both
*
ERROR at line :
ORA: parameter cannot be modified because specified value is invalid
ORA: Insufficient memory to grow cache
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就會出現報錯的現象
From:http://tw.wingwit.com/Article/program/Oracle/201311/16919.html