概述
在Oracle 9i以后
1.PGA 手动管理模式
1.1 设置方法
1.2 pga手动管理模式的缺点
临时表空间申请一块2m的空间,与原来的pga2m空间一起使用, 就够2m了。 但是我们知道pga空间实际上就是内存空间, 而临时表空间对应1个或多个dbf,是1个物理磁盘空间。
所以9i 以后,绝大部分情况下,强烈建议使用pga自动管理模式。
2.PGA 自动管理模式
2.1 设置方法
2.2 应该设为多大才合适
在OLTP系统中, 典型PGA内存设置应该是内存的较小部分(例如15%), 剩下的80%交给SGA
2.3 pga_aggregate_target 其实并不是1个硬性指标, 而只是1个临界值。
怎么说呢, 举个例子:
2.4 每个session最大能分配多少sga空间
上面都提过了,实际上1个server process不能独占公共PGA中的所有空间, Oracle中存在1个_pga_max_size, 指定1个session 最多能获得多少pga空间。
1.PGA 手动管理模式
1.1 设置方法
alter system set workarea_size_policy=manual scope=both;
alter system set sort_area_size=2m scope=both;
alter system set hash_area_size=2m scope=both;
alter system set bitmap_merge_area_size scope=both;
1.2 pga手动管理模式的缺点
临时表空间申请一块2m的空间,与原来的pga2m空间一起使用, 就够2m了。 但是我们知道pga空间实际上就是内存空间, 而临时表空间对应1个或多个dbf,是1个物理磁盘空间。
所以9i 以后,绝大部分情况下,强烈建议使用pga自动管理模式。
2.PGA 自动管理模式
2.1 设置方法
alter system set workarea_size_policy=auto scope=both;
//默认就是auto
alter system set pga_aggregate_target=512m scope=both;
//将公共SGA大小上限设为512M
2.2 应该设为多大才合适
在OLTP系统中, 典型PGA内存设置应该是内存的较小部分(例如15%), 剩下的80%交给SGA
2.3 pga_aggregate_target 其实并不是1个硬性指标, 而只是1个临界值。
怎么说呢, 举个例子:
2.4 每个session最大能分配多少sga空间
上面都提过了,实际上1个server process不能独占公共PGA中的所有空间, Oracle中存在1个_pga_max_size, 指定1个session 最多能获得多少pga空间。
如上图, 这个值是200M, 也就是说任意1个process pga上限是200M啦
2.5 查看当前session占用Pga情况
其实我们也可以根据数据库大概的session数量来决定公共PGA的大小.
只有3个session啦. 其中PGA_MAX_MEM意思是这个session占用过PGA的最大值.
2.6 利用$pga_advice_target 来决定公共PGA大小
执行如下如句:
其中Cache_HIT_PREC 就是内存命中率, EDTD_OVERALLOC_COUNT就是硬盘IO次数, 上图中设为108MB就足够了.
2.7 数据库当前内存排序和磁盘排序的次数
执行如下如句:
select * from V$SYSSTATwhere name like '%sort%';
执行结果:
可以见到磁盘排序次数为0, 当然我用的只是符合很小的学习数据库啦.
但是在11g中, 使用的是AMM(Auto Memory Management)管理模式,pga的管理更加方便了, pga_aggregate_target 默认是0, 也就是说支持自动管理,会动态地增加和减少,但是大小不会超过memory_max_target 这个值.
转载于:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996775.html
最后
以上就是霸气大地为你收集整理的PGA管理和调整的全部内容,希望文章能够帮你解决PGA管理和调整所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复