国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

[轉載]關于SGA設置的一點總結

2024-07-21 02:40:15
字體:
來源:轉載
供稿:網友

這是一篇關于sga設置的很好的文章,我收藏多年的,呵呵,見一位仁兄問這方面的問題,就拿出來跟大家共享,假如其中有錯誤,大家指正,不過別罵我,因為我是轉載。    
關于SGA設置的一點總結 
本總結不針對特例,僅對服務器只存在OS + Oracle 為例,假如存在其他應用請酌情考慮 
寫這個也是因為近來這種重復性的問題發生的太多所導致的 

首先不要迷信STS,SG,OCP,EXPERT 等給出的任何建議、內存百分比的說法 
基本把握的原則是, data buffer 通常可以盡可能的大,shared_pool_size 要適度,log_buffer 通常大到幾百K到1M就差不多了 

設置之前,首先要明確2個問題 
1: 除去OS和一些其他開銷,能給ORACLE使用的內存有多大 
2:oracle是64bit or 32 bit,32bit 通常 SGA有 1.7G 的限制(某些OS的處理或者WINDOWS上有特定設定可以支持到2G以上甚至達到3.7G,本人無這方面經驗) 

下面是我的windows2000下的oracle : 

SQL> select * from v$version; 

BANNER 
---------------------------------------------------------------- 
Oracle8i EnterPRise Edition Release 8.1.7.0.0 - ProdUCtion 
PL/SQL Release 8.1.7.0.0 - Production 
CORE 8.1.7.0.0 Production 
TNS for 32-bit Windows: Version 8.1.7.0.0 - Production 
NLSRTL Version 3.4.1.0.0 - Production 

SQL> 

windows上存在32bit的限制,如AIX、HP UNIX 等有明確的64BIT OS and ORACLE的版本,32bit oracle可以裝在64bit os 上,64 bit oracle不能裝在32 bit OS上 

不管oracle是32 bit ORACLE還是 64 bit 的,假定應用存在沒有很好的使用bind var 的情況,也不能設置 shared_pool_size 過大,通常應該控制在200M--300M,假如是 ORACLE ERP 一類的使用了很多存儲過程函數、包 ,或者很大的系統,可以考慮增大shared_pool_size ,但是假如超過500M可能是危險的,達到1G可能會造成CPU的嚴重負擔,系統甚至癱瘓。所以shared_pool_size 假如超過300M還命中率不高,那么應該從應用上找原因而不是一味的增加內存,shared_pool_size 過大主要增加了治理負擔和latch 的開銷。 

log_buffer : 128K ---- 1M 之間通常問題不大,不應該太大 

large_pool_size :假如不設置MTS,通常在 RMAN 、OPQ 會使用到,但是在10M --- 50M 應該差不多了。假如設置 MTS,則由于 UGA 放到large_pool_size 的緣故,這個時候依據 session最大數量和 sort_ares_size 等參數設置,必須增大large_pool_size 的設置,可以考慮為 session * (sort_area_size + 2M)。這里要提醒一點,不是必須使用MTS,我們都不主張使用MTS,尤其同時在線用戶數小于500的情況下。 

java_pool_size : 若不使用java,給30M通常就夠了 


data buffer ,在做了前面的設置后,凡可以提供給oracle的內存,都應該給data buffer = (db_block_size * db_block_buffers) 
在9i 中可以是 db_cache_size 

還有2個重要參數我們需要注重 

sort_area_size and hash_area_size 
這兩個參數在非MTS下都是屬于PGA ,不屬于SGA,是為每個session單獨分配的,在我們的服務器上除了OS + SGA,一定要考慮這兩部分 

(****) : OS 使用內存+ SGA + session*(sort_area_size + hash_area_size + 2M) < 總物理RAM 為好 


這樣歸結過來,假定oracle是 32 bit ,服務器RAM大于2G ,注重你的PGA的情況,,則建議 

shared_pool_size + data buffer +large_pool_size + java_pool_size < 1.6G 


再具體化,注重滿足上面(****) 的原則的基礎上可以參考如下設置 
假如512M RAM 
建議 shared_pool_size = 50M, data buffer = 200M 

假如1G RAM 
shared_pool_size = 100M , data buffer = 500M 

假如2G 
shared_pool_size = 150M ,data buffer = 1.2G 

物理內存再大已經跟參數沒有關系了 


假定64 bit ORACLE 

內存4G 
shared_pool_size = 200M , data buffer = 2.5G 

內存8G 
shared_pool_size = 300M , data buffer = 5G 

內存 12G 
shared_pool_size = 300M-----800M , data buffer = 8G 



以上僅為參考值,不同系統可能差異比較大,需要根據具體情況調整。建議在設置參數的同時,init中使用 lock_sga ,在不同的平臺上可能有不同的方式,使得SGA鎖定在物理內存中而不被放入 SWAP 中,這樣對效率有好處 


關于內存的設置,要再進行細致的調整,起的作用不大,但可根據statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息來考慮微調

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦东新区| 阳山县| 榆社县| 安图县| 崇礼县| 古蔺县| 黄山市| 河曲县| 盐城市| 沅江市| 宁蒗| 台安县| 克山县| 镇原县| 柳州市| 漳平市| 准格尔旗| 东明县| 东乌珠穆沁旗| 阿坝县| 鄂托克前旗| 罗源县| 万州区| 忻州市| 肇州县| 仪征市| 永定县| 上饶县| 仪陇县| 镇雄县| 温宿县| 蒙自县| 洪湖市| 广德县| 永清县| 安塞县| 汉川市| 望奎县| 武清区| 万年县| 望江县|