以下的文章主要介紹的是調整Oracle SGA大小的解決方法,如果你是調整Oracle SGA大小的解決方法方面的新手,你就可以通過以下的文章對調整Oracle SGA大小的解決方法如何正確使用的詳細內容的介紹。
本文主要向你介紹的是深入講解調整Oracle SGA大小的解決方法 ,你如果是Oracle SGA的瘋狂一族的話,以下的文章,你一定不要錯過。 深入講解調整Oracle 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>
出現這種錯誤的具體原因:
Oracle 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、調大Oracle 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等可以動態調節,在調節共享池時需要計算好Oracle SGA的總容量,假如超過了SGA_max_size,就會出現報錯的現象。