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服務器需要重啟)
序號
查看語句
修改語句
1
show parameter sga_max_size;
alter system set sga_max_size=2000m scope=spfile;
2
show parameter sga_target;
alter system set sga_target=2000m scope=spfile;
3
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所指定的值。