oracle內存分配與調整_第1頁
oracle內存分配與調整_第2頁
oracle內存分配與調整_第3頁
oracle內存分配與調整_第4頁
oracle內存分配與調整_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Oracle內存分配與參數設置基本初始化參數介紹內存分配與初始化參數的設置基本初始化參數的功能sga_max_size(SGA):說明:指定例程存活期間所占用的系統(tǒng)全局區(qū)的最大大小。值范圍:0到各操作系統(tǒng)所允許的最大值。請注意,由于該參數值的最小值在啟動時已經調整完畢,因而它無關緊要。默認值:如果未指定值,sga_max_size的默認值將與啟動時SGA的最初大小(比如說X)相同。該大小取決于SGA中各種池的大小,如緩沖區(qū)高速緩存,共享池,大型池等。如果指定的值小于X,則所使用的sga_max_size的值將為X。也就是說,它是X與用戶指定的sga_max_size值兩者之間的較大值。pga_aggregate_target(PGA):說明:指定連接到例程的所有服務器進程的目標PGA總內存。請在啟用自動設置工作區(qū)之前將此參數設置為一個正數。這部分內存不駐留在SGA中。數據庫將此參數值用作它所使用的目標PGA內存量。設置此參數時,要將SGA從可用于Oracle例程的系統(tǒng)內存總量中減去。然后可將剩余內存量分配給pga_aggregate_target。值范圍:整數加字母K,M或G,以將此限值指定為千字節(jié),兆字節(jié)或千兆字節(jié)。最小值為10M,最大值為4000G默認值:"未指定",表示完全禁用對工作區(qū)的自動優(yōu)化。processes:說明:指定可同時連接到一個OracleServer上的操作系統(tǒng)用戶進程的最大數量。該值應允許執(zhí)行所有后臺進程,如:作業(yè)隊列(SNP)進程和并行執(zhí)行(Pnnn)進程。值范圍:6到根據操作系統(tǒng)而定的一個值。默認值:由PARALLEL_MAX_SERVERS確定sessions:說明:指定用戶會話和系統(tǒng)會話的總量。默認數量大于PROCESSES,以允許遞歸會話。值范圍:任何整數值。默認值:派生(1.1*PROCESSES+5)內存分配與初始化參數的設置

SGA內參數設置Log_bufferLarge_pool_sizeJava_pool_sizeshared_pool_sizeDatabufferLog_buffer 對于日志緩沖區(qū)的大小設置,通常我覺得沒有過多的建議,因為參考LGWR寫的觸發(fā)條件之后,我們會發(fā)現通常超過3M意義不是很大。作為一個正式系統(tǒng),可能考慮先設置這部分為log_buffer=1—3M大小,然后針對具體情況再調整。Large_pool_size 對于大緩沖池的設置,假如不使用MTS,建議在20—30M足夠了。這部分主要用來保存并行查詢時候的一些信息,還有就是RMAN在備份的時候可能會使用到。如果設置了MTS,則由于UGA部分要移入這里,則需要具體根據serverprocess數量和相關會話內存參數的設置來綜合考慮這部分大小的設置。Java_pool_size 假如數據庫沒有使用JAVA,我們通常認為保留10—20M大小足夠。事實上可以更少,甚至最少只需要32k,但具體跟安裝數據庫的時候的組件相關(比如httpserver)。shared_pool_size 這是迄今為止最具有爭議的一部分內存設置。按照很多文檔的描述,這部分內容應該幾乎和數據緩沖區(qū)差不多大小。但實際上情況卻不是這樣的。首先我們要考究一個問題,那就是這部分內存的作用,它是為了緩存已經被解析過的SQL,而使其能被重用,不再解析。這樣做的原因是因為,對于一個新的SQL(shared_pool里面不存在已經解析的可用的相同的SQL),數據庫將執(zhí)行硬解析,這是一個很消耗資源的過程。而若已經存在,則進行的僅僅是軟分析(在共享池中尋找相同SQL),這樣消耗的資源大大減少。所以我們期望能多共享一些SQL,并且如果該參數設置不夠大,經常會出現ora-04031錯誤,表示為了解析新的SQL,沒有可用的足夠大的連續(xù)空閑空間,這樣自然我們期望該參數能大一些。但是該參數的增大,卻也有負面的影響,因為需要維護共享的結構,內存的增大也會使得SQL的老化的代價更高,帶來大量的管理的開銷,所有這些可能會導致CPU的嚴重問題。在一個充分使用綁定變量的比較大的系統(tǒng)shared_pool_size的開銷通常應該維持在300M以內。除非系統(tǒng)使用了大量的存儲過程、函數、包,比如oracleerp這樣的應用,可能會達到500M甚至更高。于是我們假定一個1G內存的系統(tǒng),可能考慮設置該參數為100M,2G的系統(tǒng)考慮設置為150M,8G的系統(tǒng)可以考慮設置為200—300M。Databuffer 現在我們來談數據緩沖區(qū),在確定了SGA的大小并分配完了前面部分的內存后,其余的,都分配給這部分內存。通常,在允許的情況下,我們都嘗試使得這部分內存更大。這部分內存的作用主要是緩存DBBLOCK,減少甚至避免從磁盤上獲取數據,在8i中通常是由 db_block_buffers*db_block_size來決定大小的。如果我們設置了buffer_pool_keep和buffer_pool_recycle,則應該加上后面這兩部分內存的大小。實際操作中可以根據ORACLE提供的圖形界面來設置前面介紹的那些參數(如下圖)oracle內存分配可以參考下面的公式: OS使用內存+SGA+并發(fā)執(zhí)行進程數*(sort_area_size+hash_ara_size+2M)<0.7*總內存32bit和64bit的問題 對于oracle來說,存在著32bit與64bit的問題。這個問題影響到的主要是SGA的大小。在32bit的數據庫下,通常oracle只能使用不超過1.7G的內存,即使我們擁有12G的內存,但是我們卻只能使用1.7G,這是一個莫大的遺憾。假如我們安裝64bit的數據庫,我們就可以使用很大的內存,我們幾乎不可能達到上限。但是64bit的數據庫必須安裝在64bit的操作系統(tǒng)上,可惜目windows上只能安裝32bit的數據ORACLE提供了共享池的建議大小,這個值設置到大小因子為1的建議內存大小就可以了。高速緩沖區(qū)的建議設置,如下圖40M哪個點就可以了,但很多情況這個建議并不準確,可以參考我下一頁給的處理方式針對數據緩沖區(qū)的大小來看。首先觀察命中率數據緩沖區(qū)命中率 SQL>selectvaluefromv$sysstatwherename='physicalreads'; VALUE ---------- 14764 SQL>selectvaluefromv$sysstatwherename='physicalreadsdirect'; VALUE ---------- 50 SQL>selectvaluefromv$sysstatwherename='physicalreadsdirect(lob)'; VALUE ---------- 0 SQL>selectvaluefromv$sysstatwherename='consistentgets'; VALUE ---------- 167763 SQL>selectvaluefromv$sysstatwherename='dbblockgets'; VALUE ---------- 14305 這里命中率的計算應該是 令x=physicalreadsdirect+physicalreadsdirect(lob) 命中率=100-(physicalreads-x)/(consistentgets+dbblockgets-x)*100 通常如果發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論