GV$LOCK_ELEMENT或X$LE并检查指定列MODE_HELD, RELEASING, or ACQUIRING are
non-zero。
消息缓冲区
任何发送方或接收方在发送或接收消息之前都会分配消息缓冲区。消息缓冲区一般有两种类型:
KJCCMSG_T_REGULAR和 KJCCMSG_T_BATCH。
KJCCMSG_T_BATCH主要用于reconfiguration或remastering,或者在缓存融合中的数据块
被传送之后。此外正常情况下Oracle默认有三种消息池:
REGULAR:初始缓存数 =进程数* 2 + 2 * 10 + 10 + 20
BATCH:初始缓存数 =进程数* 2 + 2 * 10 + 10 + 20
RESERVE:初始缓存数 = min(2 *进程数,1000)
注意:
如果REGULAR池耗尽,则从共享池申请更多的内存。
消息缓冲区队列
多个队列持有的消息缓冲区都是来自SGA消息池(如REGULAR,BATCH和RESERVE池)。这
样设计的目的是为了方便恢复消息缓冲区。
每个进程都有OutstandingQueue,FreeMsgQueue和PendingSendQueue。每个实例都有
SendQueue和MsgPool。此外Oracle设计了一个阈值可以触发进程开始将可用的可用消息缓
冲区缓存释放回共享消息池。
相关文档
评论