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