天天看點

Oracle sga、pga介紹修改

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所指定的值。