Oracle PGA自動管理在OLAP系統中的應用

wuyuanyong發表於2010-06-27

說明:
OLTP:聯機事務處理系統,也就是我們常用的業務系統;
OLAP:聯機分析處理系統,主要功能是資料查詢、分析、統計、挖掘等等

Oracle從9i開始增加了PGA自動管理的功能,可以說是開啟了ORACLE記憶體自動管理的新篇章。PGA自動管理把以前的sort_area_size,hash_area_size比較難配置的問題全解決了。一般建議OLTP系統PGA的大小為系統記憶體的20%左右,如一個系統2G的記憶體,那麼通常資料庫的PGA設定在400M左右。
ORACLE預設每個session可使用的記憶體並不是全部PGA大小,實際上比這個小得多,普通會話可使用只有PGA的5%,並且不能超過100M,也就是說如果PGA設成400M,那一個會話可使用的排序加HASH的記憶體最大為400*0.05=20M。
有些OLAP或者是OLTP、OLAP混合資料庫這個配置不一定能滿足實際需求,因為OLAP系統一般session比較少,但一個查詢要求的HASH及SORT的空間非常大,如果採用標準的5%的話,那麼會有許多查詢SORT及HASH記憶體不夠,導至過多的磁碟排序或多回HASH連線的問題,這將嚴重影響系統效能。對於這個問題可以用四種方法處理。
1、增加PGA大小
ORACLE資料庫的記憶體可以說主要由SGA+PGA兩塊組成。對於OLAP系統資料塊緩衝命中率一般不會大於80%,即使增加BUFFER_SIZE作用也不明顯,因為物量資料量明顯大於記憶體。OLAP系統的共享池也不需要太大,雖然OLAP的一條SQL會比較複雜,但OLAP的SQL數量一般比OLTP系統少得多,並且SQL解析的時間不是效能的主要瓶頸。綜上所述可以將減小的SGA大小用於PGA中
PGA的增大在OLAP系統中效能提升會比較明顯一些,特別是發現磁碟排序及HASH多次讀寫的情況下。
2.對特殊會話採用手動PGA管理
這個方法就是將某個會話的PGA改為手動管理,再設定會話的sort_area_size和hash_area_size,然後再執行SQL,如下所示:
alter session set workarea_size_policy=MANUAL;
--50M
alter session set sort_area_size=52428800;
--200M
alter session set hash_area_size=209715200;
--執行處理
處理完後,根據需要將會話改為自動PGA管理
alter session set workarea_size_policy=AUTO;

這種方法一般用於OLAP系統的ETL中,ETL一般SORT及HASH比較多,並且ETL的時候一般只有一兩個會話,所以手動管理不會對其它會話產生影響。

3.對查詢或表設定並行處理
上面提到普通會話可使用只有PGA的5%,但是並行事務會話可使用的記憶體是PGA的30%,所以如果在表上設定並行度或在查詢中設定並行提示可以一次使用比較多的PGA記憶體,如PGA=800M,那麼就可以使用400*0.3=120M。
4.調整ORACLE內部隱藏引數
如果系統的並行效能不好或者調節了並行度會有其它影響的情況下,我們可以調整ORACLE內部隱藏引數來達到效果。前面提到的5%和30%兩個數字其它是ORACLE的一個預設值,我們可以透過調整ORACLE內部隱藏引數來改變這個預設值。
這個兩個隱藏引數分別為:
"_smm_max_size":PGA的預設每個使用者使用的記憶體大小,單位為K
"_smm_px_max_size":PGA的預設並行使用者使用的記憶體大小,單位為K

如下所示,設定"_smm_max_size"=100M,"_smm_px_max_size"=200M

alter system set "_smm_max_size"=102400 scope=both;
alter system set "_smm_px_max_size"=204800 scope=both;

注:
1.Oracle隱藏引數一般以下劃線開頭,所以修改時需要加上引號
2.如果調整過引數pga_aggregate_target後以上兩個隱藏引數會重置為預設值 _smm_max_size=pga_aggregate_target*0.05
_smm__px_max_size=pga_aggregate_target*0.3

文章出處:飛諾網(

http://dev.firnow.com/course/7_databases/oracle/oraclejs/20100113/190062.html

http://dev.firnow.com/course/7_databases/oracle/oraclejs/2008617/125681.html

Oracle RAC學習筆記:基本概念及入門:http://publish.itpub.net/a2010/0415/874/000000874099.shtml

hpux下oracle RAC從10.2.0.3升級到10.2.0.4全過程
http://dev.firnow.com/course/7_databases/oracle/oraclexl/20090821/169557.html

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13879334/viewspace-1034674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章