12 50,454,528 719,518 50,454,528
13 52,551,680 429,400 52,551,680
14 45,211,648 967,324 45,211,648
-------------------------------------------------------------
Undo Segment Summary for DB: ORA92 Instance: ora92 Snaps: 13 -14 -> Undo segment block stats:
-> uS - unexpired Stolen, uR - unexpired Released, uU - unexpired reUsed
-> eS - expired Stolen, eR - expired Released, eU - expired reUsed
Undo Undo Num Max Qry Max Tx Snapshot Out of uS/uR/uU/
TS# Blocks Trans Len (s) Concurcy Too Old Space eS/eR/eU
---- -------------- ---------- -------- ---------- -------- ------ -------------
1 13,853 ########## 56 1 0 0 0/0/0/0/0/0
-------------------------------------------------------------
Undo Segment Stats for DB: ORA92 Instance: ora92 Snaps: 13 -14 -> ordered by Time desc
Undo Num Max Qry Max Tx Snap Out of uS/uR/uU/
End Time Blocks Trans Len (s) Concy Too Old Space eS/eR/eU
------------ ------------ -------- ------- -------- ------- ------ -------------
14-Jul 00:28 13,853 ######## 56 1 0 0 0/0/0/0/0/0
16、闩锁统计信息
Latch是一种低级排队机制,用于防止对内存结构的并行访问,保护系统全局区(SGA)共享内存结构。Latch是一种快速地被获取和释放的内存锁。如果latch不可用,就会记录latch free miss 。
有两种类型的Latch:willing to wait和(immediate)not willing to wait。
对于愿意等待类型(willing-to-wait)的latch,如果一个进程在第一次尝试中没有获得latch,那么它会等待并且再尝试一次,如果经过_spin_count次争夺不能获得latch, 然后该进程转入睡眠状态,百分之一秒之后醒来,按顺序重复以前的步骤。在8i/9i中默认值是_spin_count=2000。睡眠的时间会越来越长。 对于不愿意等待类型(not-willing-to-wait)的latch,如果该闩不能立即得到的话,那么该进程就不会为获得该闩而等待。它将继续执行另一个操作。 大多数Latch问题都可以归结为以下几种:
没有很好的是用绑定变量(library cache latch和shared pool cache)、重作生成问题(redo allocation latch)、缓冲存储竞争问题(cache buffers LRU chain),以及buffer cache中的存在\热点\块(cache buffers chain)。
另外也有一些latch等待与bug有关,应当关注Metalink相关bug的公布及补丁的发布。 当latch miss ratios大于0.5%时,就需要检查latch的等待问题。
如果SQL语句不能调整,在8.1.6版本以上,可以通过设置CURSOR_SHARING = force 在服务器端强制绑定变量。设置该参数可能会带来一定的副作用,可能会导致执行计划不优,另外对于Java的程序,有相关的bug,具体应用应该关注Metalink的bug公告。 下面对几个重要类型的latch等待加以说明:
1) latch free:当‘latch free’在报告的高等待事件中出现时,就表示可能出现了性能问题,
就需要在这一部分详细分析出现等待的具体的latch的类型,然后再调整。