博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何设定ASH buffer大小
阅读量:4487 次
发布时间:2019-06-08

本文共 3038 字,大约阅读时间需要 10 分钟。

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 u_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 name='ASH buffers';

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;

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

---下面的查询结果应验了上面的计算

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 name='ASH buffers';

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,ksptvl 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;

---计算一下此时的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 name='ASH buffers';

POOL        NAME                            BYTES

------------ -------------------------- ----------

shared pool  ASH buffers                  67108864

因此Ash Buffer的计算公式可以修正为

Size of ASH Circular Buffer = Max [Min [ #CPUs * 2 MB, 5% of Shared Pool Size, 30MB ], _ash_size ]

如果要调整ash buffer的大小,需要修改_ash_size参数,且确保_ash_size> Min [ #CPUs * 2 MB, 5% of Shared Pool Size, 30MB ]

  • 本文来自:

转载于:https://www.cnblogs.com/haoboke/p/4252005.html

你可能感兴趣的文章
Vector
查看>>
为什么要应用编排,应用编排能做什么?
查看>>
实习生招聘笔试
查看>>
Linux忘记root登录密码解决方法
查看>>
String类的常用方法
查看>>
week 13 java——网络
查看>>
python curl实现
查看>>
C/C++ http协议加载sessionID
查看>>
个人应用开发详记. (二)
查看>>
一款由css3和jquery实现的卡面折叠式菜单
查看>>
uva 10791
查看>>
openlayers 4快速渲染管网模型数据
查看>>
MySQL相关小技巧
查看>>
SSH整合- 2- add service layout
查看>>
IP地址与UInt之间不得不说的故事
查看>>
【代码笔记】iOS-两个滚动条,上下都能滑动
查看>>
矩阵乘法-洛谷P2233 [HNOI2002] 公交车路线
查看>>
openstack云主机硬盘复制查询
查看>>
写个神经网络,让她认得我`(๑•ᴗ•๑)(Tensorflow,opencv,dlib,cnn,人脸识别)
查看>>
《程序是怎样跑起来的》第三章
查看>>