ASMM 导致的latch: library cache 和latch: shared pool

简介: 核心系统故障及调整报告核心系统数据库在2012年7月13日下午2点到4点和2012年7月16上午11点出现了高负载,影响了核心系统的正常使用,我随即进行了性能分析。

核心系统故障及调整报告
核心系统数据库在2012年7月13日下午2点到4点和2012年7月16上午11点出现了高负载,影响了核心系统的正常使用,我随即进行了性能分析。得出报告如下:
2012年7月13日
 Snap Id Snap Time Sessions Cursors/Session
Begin Snap: 28264 13-Jul-12 14:00:26 173 14.3
End Snap: 28265 13-Jul-12 15:00:17 189 15.0
Elapsed:   59.84 (mins)   
DB Time:   798.99 (mins) 

  
Begin Snap: 28265 13-Jul-12 15:00:17 189 15.0
End Snap: 28266 13-Jul-12 16:00:18 187 14.4
Elapsed:   60.01 (mins)   
DB Time:   1,541.16 (mins)   


Top5-event
Top 5 Timed Events
Event Waits Time(s) Avg Wait(ms) % Total Call Time Wait Class
latch: library cache 44,082 11,456 260 12.4 Concurrency
CPU time   5,880   6.4 
latch: shared pool 21,572 5,318 247 5.8 Concurrency
db file scattered read 1,070,575 5,075 5 5.5 User I/O
read by other session 752,209 3,937 5 4.3 User I/O


问题基本确定是当然出现了library cache和shared pool latch。一般来说遇到这两个latch是由于过多的硬解析照成,但是在我们的系统中硬解析并不多,同时看看Latch Miss Sources部分,发现如下:


library cache kglpndl: child: before processing 0 3,236 1,444
library cache kglhdgn: child: 0 2,234 24,921
library cache kglLockCursor 0 1,623 2,956
shared pool kgh: add extent to quiesced list 0 14,022 15
shared pool kghalo 0 3,211 10,250
shared pool kghupr1 0 1,040 6,190


quiesced list是ORACLE ASMM(自动内存分配)相关的组件,猜测是在动态进行SGA分配的时候出现了问题,然后查看动态分配的日志发现:
shared pool SHRINK shared_pool_size 1308622848 2012-7-13 14:15:58
DEFAULT buffer cache GROW db_cache_size 15703474176 2012-7-13 14:15:58
DEFAULT buffer cache SHRINK db_cache_size 15653142528 2012-7-13 14:18:00
shared pool GROW shared_pool_size 1358954496 2012-7-13 14:18:00
shared pool SHRINK shared_pool_size 1291845632 2012-7-13 14:28:42
DEFAULT buffer cache GROW db_cache_size 15720251392 2012-7-13 14:28:42
DEFAULT buffer cache SHRINK db_cache_size 15669919744 2012-7-13 14:30:11
shared pool GROW shared_pool_size 1342177280 2012-7-13 14:30:11
shared pool SHRINK shared_pool_size 1275068416 2012-7-13 14:34:45
DEFAULT buffer cache GROW db_cache_size 15737028608 2012-7-13 14:34:45
DEFAULT buffer cache SHRINK db_cache_size 15686696960 2012-7-13 14:38:48
shared pool GROW shared_pool_size 1325400064 2012-7-13 14:38:48
DEFAULT buffer cache SHRINK db_cache_size 15636365312 2012-7-13 14:41:54
shared pool GROW shared_pool_size 1375731712 2012-7-13 14:41:54
shared pool SHRINK shared_pool_size 1308622848 2012-7-13 14:47:25
DEFAULT buffer cache GROW db_cache_size 15703474176 2012-7-13 14:47:25
shared pool SHRINK shared_pool_size 1258291200 2012-7-13 14:49:28
DEFAULT buffer cache GROW db_cache_size 15753805824 2012-7-13 14:49:28
DEFAULT buffer cache SHRINK db_cache_size 15703474176 2012-7-13 14:53:10
shared pool GROW shared_pool_size 1308622848 2012-7-13 14:53:10
DEFAULT buffer cache SHRINK db_cache_size 15653142528 2012-7-13 14:56:19
shared pool GROW shared_pool_size 1358954496 2012-7-13 14:56:19
shared pool SHRINK shared_pool_size 1291845632 2012-7-13 15:04:23
DEFAULT buffer cache GROW db_cache_size 15720251392 2012-7-13 15:04:23
DEFAULT buffer cache SHRINK db_cache_size 15669919744 2012-7-13 15:06:25
shared pool GROW shared_pool_size 1342177280 2012-7-13 15:06:25
shared pool SHRINK shared_pool_size 1275068416 2012-7-13 15:09:36
DEFAULT buffer cache GROW db_cache_size 15737028608 2012-7-13 15:09:36
DEFAULT buffer cache SHRINK db_cache_size 15686696960 2012-7-13 15:14:34
shared pool GROW shared_pool_size 1325400064 2012-7-13 15:14:34
shared pool SHRINK shared_pool_size 1275068416 2012-7-13 15:17:40
DEFAULT buffer cache GROW db_cache_size 15737028608 2012-7-13 15:17:40
DEFAULT buffer cache SHRINK db_cache_size 15686696960 2012-7-13 15:20:47
shared pool GROW shared_pool_size 1325400064 2012-7-13 15:20:47
shared pool SHRINK shared_pool_size 1275068416 2012-7-13 15:24:27
DEFAULT buffer cache GROW db_cache_size 15737028608 2012-7-13 15:24:27
DEFAULT buffer cache SHRINK db_cache_size 15686696960 2012-7-13 15:27:43
shared pool GROW shared_pool_size 1325400064 2012-7-13 15:27:43
shared pool SHRINK shared_pool_size 1275068416 2012-7-13 15:45:58
DEFAULT buffer cache GROW db_cache_size 15737028608 2012-7-13 15:45:58
DEFAULT buffer cache SHRINK db_cache_size 15686696960 2012-7-13 15:46:59
shared pool GROW shared_pool_size 1325400064 2012-7-13 15:46:59
DEFAULT buffer cache SHRINK db_cache_size 15636365312 2012-7-13 15:50:27
shared pool GROW shared_pool_size 1375731712 2012-7-13 15:50:27
shared pool SHRINK shared_pool_size 1308622848 2012-7-13 16:39:58
DEFAULT buffer cache GROW db_cache_size 15703474176 2012-7-13 16:39:58
shared pool SHRINK shared_pool_size 1258291200 2012-7-13 16:42:28
DEFAULT buffer cache GROW db_cache_size 15753805824 2012-7-13 16:42:28
DEFAULT buffer cache SHRINK db_cache_size 15703474176 2012-7-13 16:46:00
shared pool GROW shared_pool_size 1308622848 2012-7-13 16:46:00
DEFAULT buffer cache SHRINK db_cache_size 15653142528 2012-7-13 16:52:30
shared pool GROW shared_pool_size 1358954496 2012-7-13 16:52:30
发现在问题期间SGA不断的动态分配,为了让shared_pool_size不因为动态分配而导致出现问题,我手动执行了如下语句:
alter system set shared_pool_size=1800m scope=both;
手动设置一个较大的最小值1800m,避免频繁的动态分配。设置后观察效果。

关于ASMM 这个文章可以参考,非常好的文章
http://www.oracledatabase12g.com/archives/tag/memory-broker
这是我提的问题
http://www.itpub.net/thread-1636268-1-1.html

 

相关文章
|
SQL 关系型数据库 Oracle
|
数据库管理 关系型数据库 Oracle
shared pool latch和library cache latch
shared pool latch和library cache latch    >                                   >          ...
909 0