如何设定ASH buffer大小

php中文网
发布: 2016-06-07 16:33:31
原创
1451人浏览过

Ash Buffer是SGA里的一块循环使用的内存区域,用于存放MMON捕捉到的active session信息,MMNL每隔60min将Ash buffer的内容经过过

ash buffer是sga里的一块循环使用的内存区域,用于存放mmon捕捉到的active session信息,mmnl每隔60min将ash buffer的内容经过过滤后dump到awr,对应的视图是dba_hist_active_sess_history,以腾出ash buffer空间用于之后的采集。ash buffer的大小在instance启动时就已经决定了,并且在instance运行期间不能被动态调整,那么ash buffer的大小是由哪些因素决定的?
关于ash buffer的大小mos 243132.1上有如下描述
size of ash circular buffer = max [min [ #cpus * 2 mb, 5% of shared pool size, 30mb ], 1mb ]

###看下实际环境里和ash buffer有关的参数
SQL> show parameter cpu_count


 NAME                                TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 cpu_count                            integer    16


 SQL> show parameter shared_pool_size
 NAME                                TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 shared_pool_size                    big integer 1312M

---计算一下ash buffer应该为多少大小
Max [Min [ 16 * 2 MB, 5%*1312M, 30MB ], 1MB ]=30MB


---实际Ash buffer大小可以从v$sgastat、v$ash_info获得,均为32MB,和公式提供的稍有差别,选择32MB作为Ash Buffer
 select * from v$sgastat where;
 POOL        NAME                            BYTES
 ------------ -------------------------- ----------
 shared pool  ASH buffers                  33554432


 select total_size,fixed_size,sampling_interval from v$ash_info;
 TOTAL_SIZE FIXED_SIZE SAMPLING_INTERVAL
 ---------- ---------- -----------------
  33554432  33554432              1000


###更改一下cpu_count
 alter system set cpu_count=8 scope=spfile;


 startup force


 show parameter cpu_count
 NAME                                TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 cpu_count                            integer    8


---按照公式Size of ASH Circular Buffer = Max [Min [ #CPUs * 2 MB, 5% of Shared Pool Size, 30MB ], 1MB ]计算
Ash buffer=Max [Min [ 8 * 2 MB, 5%*1312M, 30MB ], 1MB ]=16MB

标小兔AI写标书
标小兔AI写标书

一款专业的标书AI代写平台,提供专业AI标书代写服务,安全、稳定、速度快,可满足各类招投标需求,标小兔,写标书,快如兔。

标小兔AI写标书 40
查看详情 标小兔AI写标书


---下面的查询结果应验了上面的计算
select total_size,fixed_size,sampling_interval from v$ash_info;
 TOTAL_SIZE FIXED_SIZE SAMPLING_INTERVAL
 ---------- ---------- -----------------
  16777216  16777216              1000
 
 select * from v$sgastat where;
 POOL        NAME                            BYTES
 ------------ -------------------------- ----------
 shared pool  ASH buffers                  16777216 


###"_ash_size"隐含参数控制ash buffer的大小
 公式Size of ASH Circular Buffer = Max [Min [ #CPUs * 2 MB, 5% of Shared Pool Size, 30MB ], 1MB ]里的1MB是_ash_size的默认值
---_ash_size的默认值为1MB
 select ksppinm,ksppstvl from x$ksppi x, x$ksppcv y where (x.indx = y.indx) and ksppinm like '_ash_size%'


 KSPPINM                        KSPPSTVL
 ------------------------------ ------------------------------
 _ash_size                      1048618


---我们把_ash_size改大,改成64MB
 alter system set "_ash_size"=67108864 scope=spfile;


 startup force


---计算一下此时的Ash buffer值
ASH Circular Buffer = Max [Min [ 8 * 2 MB, 5%*1315M, 30MB ], 64MB ]=64MB


---下面的查询结果应验了上面的计算
SQL> select total_size,fixed_size,sampling_interval from v$ash_info;


 TOTAL_SIZE FIXED_SIZE SAMPLING_INTERVAL
 ---------- ---------- -----------------
  67108864  67108864              1000


 SQL> select * from v$sgastat where;


 POOL        NAME                            BYTES
 ------------ -------------------------- ----------
 shared pool  ASH buffers                  67108864

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号