首页 > 代码库 > Oracle sga、pga介绍修改
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所指定的值。Oracle sga、pga介绍修改