SGA的組成圖
-----------------------------------------------------------------------------------------------------------------------
| SGA |
| |
| |--------------------------| |--------------------------| |------------------------| |
| | | | | | | |
| | 數(shù)據(jù)庫緩沖區(qū) | | 重做日志緩沖區(qū) | | 共享池 | |
| | database bufferr cache | | redo log buffer | | shared pool | |
| | | | | | | |
| | | | | | | |
| |--------------------------| |--------------------------| |------------------------| |
| |
| |
| |--------------------------| |--------------------------| |------------------------| |
| | | | | | | |
| | Java池 | | 大池 | | 流池 | |
| | Java pool | | large pool | | stream pool | |
| | | | | | | |
| |--------------------------| |--------------------------| |------------------------| |
| |
-----------------------------------------------------------------------------------------------------------------------
數(shù)據(jù)庫緩沖區(qū) :該區(qū)域存放用戶從數(shù)據(jù)庫中讀取的數(shù)據(jù)
當(dāng)用戶查找數(shù)據(jù)庫時(shí)會(huì)首先在數(shù)據(jù)庫緩存中搜索,如果沒有才會(huì)讀取數(shù)據(jù)庫文件。
所以該區(qū)域不能設(shè)置的過小,不然頻繁的讀取數(shù)據(jù)文件會(huì)增大查詢時(shí)間,因?yàn)镮/O是耗時(shí)的行為
重做日志緩沖區(qū) :該緩沖區(qū)放置用戶改變的數(shù)據(jù),所有變化了的數(shù)據(jù)和回滾需要的數(shù)據(jù)都暫時(shí)保存
共享池 :包括數(shù)據(jù)字典高速緩存和庫高速緩存,庫高速緩存存放Oracle解析的SQL語句、PL/SQL過程、包以及各種控制結(jié)構(gòu),如鎖、庫緩沖句柄
數(shù)據(jù)字典高速緩存保存執(zhí)行SQL語句所需的各種數(shù)據(jù)字典定義如表和列的定義,用戶訪問表的權(quán)限等。
Java池 :執(zhí)行Java代碼的區(qū)域
大池 :該內(nèi)存區(qū)提供大型的內(nèi)存分配,在共享服務(wù)器連接模式下提供會(huì)話區(qū),在使用RMAN備份時(shí)也使用該內(nèi)存區(qū)作為磁盤I/O的數(shù)據(jù)緩沖區(qū)
流池 :該區(qū)域稱為流內(nèi)存,是為Oracle流專用的內(nèi)存池,流是Oracle數(shù)據(jù)庫中的一個(gè)數(shù)據(jù)共享,其大小可以通過參數(shù)streams_pool_size
SGA中的內(nèi)存參數(shù)可以動(dòng)態(tài)修改,但是總的內(nèi)存大小受到參數(shù)SGA_MAX_SIZE的限制。
優(yōu)化重做日志緩沖區(qū)
重做日志緩沖區(qū)是使一段臨時(shí)存儲(chǔ)重做數(shù)據(jù)的內(nèi)存區(qū),所有變化的數(shù)據(jù)前項(xiàng)和修改后的數(shù)據(jù)都保存在重做日志緩沖區(qū)中,由LGWR進(jìn)程負(fù)責(zé)寫入重做日志文件。
在優(yōu)化時(shí),需要考慮該內(nèi)存區(qū)的大小,以及LGWR的寫速度和重做日志文件所在磁盤的爭用
LGWR把重做日志緩沖區(qū)寫入重做日志文件的條件
1.每隔3秒鐘
2.事務(wù)被提交時(shí)
3.當(dāng)重做日志緩沖區(qū)的記錄的變化的數(shù)據(jù)量超過1MB字節(jié)
4.當(dāng)重做數(shù)據(jù)的大小為中做日志緩沖區(qū)大小的1/3時(shí),
當(dāng)重做數(shù)據(jù)量達(dá)到其容量的1/3這個(gè)閥值時(shí),LGWR進(jìn)程會(huì)寫出重做日志緩沖區(qū)的數(shù)據(jù),而剩下的2/3的數(shù)據(jù)可以提供其它服務(wù)器進(jìn)程使用。
5.檢查點(diǎn)發(fā)生時(shí)
6.當(dāng)DBWR進(jìn)程將數(shù)據(jù)庫高速緩沖區(qū)的數(shù)據(jù)寫到數(shù)據(jù)文件前
查看重做日志緩沖區(qū)的尺寸
show parameter log_buffer;
重做日志緩沖區(qū)相關(guān)的等待事件
如果需呀優(yōu)化重做日志緩沖區(qū),必須首先確認(rèn)發(fā)生了與重做日志緩沖區(qū)相關(guān)的等待時(shí)間,否則不應(yīng)該隨便調(diào)整重做日志緩沖區(qū)的尺寸
通過WAIT視圖和EXENT視圖,確認(rèn)等待時(shí)間以及該事件涉及的文件和會(huì)話
通過數(shù)據(jù)字典視圖查看會(huì)話等待事件
col event for a35
col username for a10
select sw.sid,s.username,sw.event,sw.wait_time
from v$session s,v$session_wait sw
where sw.event not like 'rdbms%'
and sw.sid=s.sid
order by sw.wait_time,sw.event
1.Log buffer space :該事件說明缺少重做日志的緩沖區(qū)空間,
造成該等待事件的原因一般是服務(wù)器進(jìn)程寫入重做日志緩沖區(qū)的速度高于LGWR重做日志緩沖區(qū)寫出的速度,
也有可能是重做日志文件所在磁盤設(shè)備速度慢或者存在設(shè)備爭用,造成LGWR進(jìn)程無法即使將重做日志緩沖區(qū)的重做數(shù)據(jù)寫入到重做日志文件
優(yōu)化方法:調(diào)整重做日志緩沖區(qū),
或者將重做日志數(shù)據(jù)文件遷移到高速磁盤
或者為了解決爭用,將重做日志文件和數(shù)據(jù)庫文件以及歸檔文件放在不同的磁盤上
2.log file parallel write :該事件的含義是日志文件并行寫等待,是在將重做日志緩沖區(qū)的重做數(shù)據(jù)寫入磁盤引起的等待事件。
造成該事件的原因一般是連接重做日志文件所在的設(shè)備速度慢或者存在磁盤爭用
優(yōu)化方法:將重做日志文件和數(shù)據(jù)庫數(shù)據(jù)文件以及歸檔文件放在不同的磁盤上。以及將重做日志文件放置在告訴盤上。
3.log file single write :該等待事件僅與寫日志文件頭塊有關(guān),表示檢測點(diǎn)中的等待
log file switch(archiving needed)該等待事件的含義是日志文件切換等待。
對于處于歸檔模式的數(shù)據(jù)庫而言,當(dāng)日志組寫滿后,在日志切換時(shí)需要覆蓋先前的日志,
而該日志需要?dú)w檔進(jìn)程寫入歸檔文件,由于寫入歸檔文件需要時(shí)間,而LGWR進(jìn)程需要將重做日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件,而歸檔未完成需要等待,在此期間
就產(chǎn)生了log file switch事件,該等待事件的原因一般是I/O問題、ARCH歸檔進(jìn)程跟不上LGWR日志寫進(jìn)程的速度或這日志組太少引起的
優(yōu)化方法:啟用多個(gè)歸檔ARCH進(jìn)程或I/O從進(jìn)程(slave processe ),
將歸檔的文件和數(shù)據(jù)文件或重做日志文件防止在不同的位置,減少磁盤爭用以減少ARCH歸檔進(jìn)程的歸檔事件,
或者增加重做日志組
4.log file switch(checkpoint incomplete):該事件是由日志切換太頻繁引起的,由于頻繁地切換重做日志文件,造成檢查點(diǎn)的排隊(duì)。
發(fā)生該等待事件的原因一般是重做日志緩沖區(qū)空間太小或者重做日志組太少。
優(yōu)化方法:增加重做日志組或者增加重做日志緩沖區(qū)尺寸。
5.log file sync:當(dāng)用戶提交時(shí),重做日志緩沖區(qū)中的數(shù)據(jù)會(huì)一次全部寫到重做日志文件中,此時(shí)發(fā)生的LGWR的寫出等待就是log file sync等待。
造成該等待的原因一般是放置聯(lián)機(jī)重做日志文件的磁盤組存在爭用或者磁盤速度慢。
優(yōu)化方法:將重做日志文件和數(shù)據(jù)文件或歸檔重做日志文件放置在不同磁盤上,以減少數(shù)據(jù)庫中的各種文件之間的I/O爭用,
同時(shí)可以把重做日志文件放在高速磁盤上,以減少重做數(shù)據(jù)寫入重做日志文件的時(shí)間。
6.Latch free:該等待事件的含義是當(dāng)前的服務(wù)器進(jìn)程需要某個(gè)閂鎖,比如等待共享池的庫高速緩存閂鎖。
如果發(fā)生該等待事件也可以通過數(shù)據(jù)字典V$Latch查看相關(guān)的閂鎖命中率。
查詢與閂鎖LATCH相關(guān)的信息
select latch#,name,gets,misses,1-(misses/(gets+misses)) "get rate"
from v$latch
where misses>1;
分享標(biāo)題:詳解SGA與實(shí)例優(yōu)化(部分)
當(dāng)前地址:
http://weahome.cn/article/gchshs.html