日期:2014-05-16  浏览次数:20435 次

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%

1、SGA系统全局区

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;

2、PGA程序全局区

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