当前位置:  数据库>oracle

如何设定ASH buffer大小

    来源: 互联网  发布时间:2017-06-13

    本文导语: Ash Buffer是SGA里的一块循环使用的内存区域,用于存放MMON捕捉到的active session信息,MMNL每隔60min将Ash buffer的内容经过过滤后dump到AWR,对应的视图是DBA_HIST_ACTIVE_SESS_HISTORY,以腾出Ash buffer空间用于之后的采集。Ash Buffer的大小在instan...

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


 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


---下面的查询结果应验了上面的计算
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,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 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 ]

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问我编译c++文件的时候需要设定系统变量,设定是在root用户的.bash_profile文件中写的,怎么使该设定生效?
  • 关于UNIX下的环境变量的设定
  • 在启动时设定网络参数,急!在线等!
  • 我有个问题 关于linux 网卡设定
  • 请问如何设定tomcat的session的失效时间
  • 请教:关于named的设定文档的问题
  • 嵌入式Linux 如何设定 telnet超时
  • 求助!ccmake中的CMAKE_BUILD_TYPE不能设定!
  • 请教各位:apach/conf/httpd.conf修改设定值的问题.
  • 怎样设定bsh的环境变量?(快来拿分呀)
  • 100分求救!!!如何设定网卡IRQ及i/地址?
  • 如何设定队列的长度、接受个数 ????
  • 在程序中如何设定可用^C或^D中断进程 ??????
  • cvs用户的权限设定
  • 如何设定ResultSet对象可上下fetch?
  • vi编辑中如何设定tab的空格数??
  • 如何设定LINUX下VSFTPD服务匿名登陆的默认目录
  • udp套接字能否设定成非阻塞模式?
  • red hat linux工作站如何设定屏幕刷新率?
  • 用iptables设定禁止ping 后,重启电脑后又会生效,


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,