oracle推薦oltp(on-line transactionprocessing)系統oracle占系統總記憶體的80%,然後再配置設定80%給sga,20%給pga。也就是
sga=system_total_memory*80%*80%
pga=system_total_memory*80%*20%
sga指系統全局區域(system globalarea),是用于存儲資料庫資訊的記憶體區,該資訊為資料庫程序所共享。
設定sga時,理論上sga可占os系統實體記憶體的1/2——1/3
原則:sga+pga+os使用記憶體<總實體ram ——比例一般是2(sga):1(pga):1(os系統)
sga=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1mb
檢視 desc v$sga select * fromv$sga ; select *
from v$sgastat t;
序号
記憶體名稱
byte
1024byte=1k
說明
大小設定
1
fixed size
1415972
存儲了sga 各部分元件的資訊,可以看作引導建立sga的區域。
一般固定大小,不修改
2
variable size
1059677404
包含了shared_pool_size、
java_pool_size、large_pool_size
shared_pool_size 10%
java_pool_size >20m(不用java 30m)
large_pool_size 5-10m(不用mts不該太大
3
database buffers
511705088
資料緩存池(緩存資料)
40%
4
redo buffers
4259840
日志緩存池(修改資訊)
128k ---- 1m之間,不應該太大
語句:(oracle10伺服器需要重新開機)
檢視語句
修改語句
show parameter sga_max_size;
alter system set sga_max_size=2000m scope=spfile;
show parameter sga_target;
alter system set sga_target=2000m scope=spfile;
show parameter pga_aggregate_target;
alter system set pga_aggregate_target=500m scope=spfile;
pga:包含單個伺服器程序或單個背景程序的資料和控制資訊,與幾個程序共享的sga 正相反pga 是隻被一個程序使用的區域,pga在建立程序時配置設定在終止程序時回收.
a、sort_area_size 用于排序所占記憶體
b、hash_area_size 用于散列聯接,位圖索引
這兩個參數在非mts下都是屬于pga ,不屬于sga,是為每個session單獨配置設定的,在我們的伺服器上除了os + sga,一定要考慮這兩部分
原則:os
使用記憶體+sga+并發執行程序數*(sort_area_size+hash_ara_size+2m)<
0.7*總記憶體
oracle 10g提供了pga記憶體的自動管理。參數pga_aggregate_target可以指定pga記憶體的最大值。當參數 pga_aggregate_target大于0時,oracle将自動管理pga記憶體,并且各程序的所占pga之和,不大于 pga_aggregate_target所指定的值。