Oracle SGA大小的解決方法的調(diào)整
以下的文章主要介紹的是調(diào)整Oracle SGA大小的解決方法,如果你是調(diào)整Oracle SGA大小的解決方法方面的新手,你就可以通過以下的文章對調(diào)整Oracle SGA大小的解決方法如何正確使用的詳細(xì)內(nèi)容的介紹。
本文主要向你介紹的是深入講解調(diào)整Oracle SGA大小的解決方法 ,你如果是Oracle SGA的瘋狂一族的話,以下的文章,你一定不要錯過。 深入講解調(diào)整Oracle SGA大小的解決方法
在修改數(shù)據(jù)緩沖區(qū)的時候,提示錯誤如下:
- 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>
出現(xiàn)這種錯誤的具體原因:
Oracle SGA(SGA_max_size)是由共享池(shared_pool_size),緩沖區(qū)高速緩存(db_cache_size 9i以上版本),大型池(large_pool_size),Java池(java_pool_size)組成的,在我們安裝的時候這些已經(jīng)分配了一定的值,由于需求需要對其進(jìn)行調(diào)整。
現(xiàn)在SGA的值是一定的,SGA通常是大于等于以上幾項的值之和。
假如正好SGA等于各項之和,那么調(diào)大其中任何一項都會出錯,調(diào)小是不成問題的。
在此情況下也就出現(xiàn)了以上的錯誤:
下面我們以db_cache_size為例:
解決方法如下:
1、調(diào)小其它項的值,一般情況下我們不會采用這種方法,隨著業(yè)務(wù)的增大對內(nèi)存的需求越來越高,估計其它項也沒有調(diào)小的余地
2、調(diào)大Oracle SGA此時數(shù)據(jù)庫需要是在關(guān)閉狀態(tài),由于SGA不是動態(tài)參數(shù),所以我們需要修改init$Oracle_SID.ORA的中SGA的大小
(1)首先創(chuàng)建參數(shù)文件,這是為了保持和服務(wù)器參數(shù)文件一致SQL>create pfile from spfile;
(2)修改init$ORACLE_SID.ORA中對應(yīng)的SGA_max_size大小
(3)創(chuàng)建服務(wù)器參數(shù)文件SQL>create spfile from pfile;
(4)啟動數(shù)據(jù)庫 修改db_cache_size的大小
- SQL> alter system set db_cache_size=25165824 scope=both;
- System altered.
修改完畢。
總結(jié):
SGA_max_size需要重啟數(shù)據(jù)庫來進(jìn)行調(diào)整,而其中的db_cache_size等可以動態(tài)調(diào)節(jié),在調(diào)節(jié)共享池時需要計算好Oracle SGA的總?cè)萘?,假如超過了SGA_max_size,就會出現(xiàn)報錯的現(xiàn)象。
【編輯推薦】