1、Oracle LARGE_POOL_SIZE大小設置值多少java
java_pool_size:
以字節爲單位, 指定 Java 存儲池的大小, 它用於存儲 Java 的方法和類定義在共享內存中的表示法, 以及在調用結束時移植到 Java 會話空間的 Java 對象。
large_pool_size:
指定大型池的分配堆的大小, 它可被共享服務器用做會話內存, 用做並行執行的消息緩衝區以及用做RMAN備份和恢復的磁盤 I/O 緩衝區。
LARGE_POOL一般用於共享服務器(MTS),並行計算或者RMAN備份恢復中。設置其大小的參數爲:LARGE_POOL_SIZE
若是不設置MTS,LARGE_POOL一般在RMAN 、OPQ 會使用到,LARGE_POOL_SIZE設置在10M --- 50M 應該差很少了。
若是RMAN備份恢復中,分配了多通道,能夠考慮參考給出的公式。windows
LARGE_POOL_SIZE = number_of_allocated_channels *服務器
(16MB ( 4 * size_of_tape_buffer))。
假如設置 MTS,則因爲 UGA 放到large_pool_size 的緣故,這個時候依據 session最大數量和 sort_ares_size 等參數設置,必須增大large_pool_size 的設置,
能夠考慮爲 session * (sort_area_size 2M)。這裏要提醒一點,不是必須使用MTS,咱們都不主張使用MTS,尤爲同時在線用戶數小於500的狀況下。session
2、關於SGA設置的一點總結oracle
本總結不針對特例,僅對服務器只存在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;spa
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 的開銷。hash
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信息來考慮微調。