人工模拟获取latch

任意地dump一latches结构文件:

SQL> oradebug dump latches 10

ORA-00074: no process has been specified

SQL> oradebug setmypid

Statement processed.

SQL> oradebug dump latches 10

Statement processed.

SQL> oradebug tracefile_name

/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_5564.trc

找到文件并随便找一个latch地址查看:

我们这里找的是地址为0x60019d98的一个active checkpoint queue,当前状态为free:

60019d98  active checkpoint queue latch level=5

Location from where latch is held: kcbk.h LINE:2222 ID:kcbbacq: scan active checkpoints:

Context saved from call: 0

state=free [value=0] wlstate=free [value=0]

gotten 2345 times wait, failed first 0 sleeps 0

gotten 0 times nowait, failed: 0

通过oradebug验证:

SQL> oradebug peek 0x60019d98 8

[060019D98, 060019DA0) = 00000000 00000000

该latch的当前值为0,确为free状态,我将它值改动为1:

SQL> oradebug poke 0x60019d98 2 1

BEFORE: [060019D98, 060019D9C) = 00000000

AFTER:  [060019D98, 060019D9C) = 00000001

再次dump一个latches结构文件,并找到上述latch的信息:

60019d98  active checkpoint queue latch level=5

Location from where latch is held: kcbk.h LINE:2222 ID:kcbbacq: scan active checkpoints:

Context saved from call: 0

state=busy [holder orapid=1] wlstate=free [value=0]

waiters [orapid (seconds since: put on list, posted, alive check)]:

10 (30, 1402142587, 30)

waiter count=1

gotten 2607 times wait, failed first 0 sleeps 0

gotten 0 times nowait, failed: 0

的状态busy。

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-12-17 23:00:38

人工模拟获取latch的相关文章

手动模拟获取latch

随意dump一个latches结构文件: SQL> oradebug dump latches 10 ORA-00074: no process has been specified SQL> oradebug setmypid Statement processed. SQL> oradebug dump latches 10 Statement processed. SQL> oradebug tracefile_name /oracle/diag/rdbms/orcl/orc

Oracle内部latch获取函数简介

标签: oracle call 函数   oracle statpack 转自: http://blog.51cto.com/458302/998775 Oracle的内部函数一直非常神秘,其实Oracle提供了一个oradebug 工具,可以用于调用内部的一些方法/函数,这为我们窥探Oracle的内部机制打开了一扇窗户. 比如:Oracle内部获取latch的函数为kslgetl,全称为Kernel Service Lock Management Get Latch,可以使用oradebug

关于MySQL latch争用深入分析与判断

1.latch锁是什么锁? 2.latch锁是如何保护list? 3.latch争用的现象和过程? 4.latch什么时候会产生严重的争用? 5.如何监控latch争用情况? 6.如何确认latch争用类型? 7.如何降低latch争用? 一.latch锁是什么锁 1.定义 latch锁是内存锁,是一个小型的在内存中保护list的内存锁结构. 2.特点 1.不排队 2.spin,一个线程想获得一个锁,但是该锁已被另一线程持有,进行spin(空转随机时间)占用cpu间接性的等待锁的释放,然后获取去

深入理解Oracle中的latch

深入理解Oracle中的latch 串行化 概述 串行化 - 数据库系统本身是一个多用户并发处理系统,在同一个时间点上,可能会有多个用户同时操作数据库, 多个用户同时在相同的物理位置上写数据时,不能发生互相覆盖的情况,这叫做串行化,串行化会降低系统的并发性,但这对于保护数据结构不被破坏来说则是必需的.在Oracle数据库中,通过闩锁(latch)和锁定(lock)来解决这两个问题.闩锁和锁定既有相同点又有不同点.相同点在于它们都是用于实现串行化的资源.而不同点则在于闩锁(Latch)是一个低级别

oracle中lock和latch的用途

本文向各位阐述Oracle的Latch机制,Latch,用金山词霸翻译是门插栓,闭锁,专业术语叫锁存器,我开始接触时就不大明白为什么不写Lock,不都是锁吗?只是翻译不同而以?研究过后才知道两者有很大的区别. Oracle中锁的信息是数据块的一部分,是物理的,并不是逻辑上属于某个表或者某个行.Latch是Oracle提供的轻量级锁资源,他用于快速,短时间的锁定资源,防止多个并发进程同时修改访问某个共享资源,他只工作在内存中, 我们可以不大准确的说,内存中资源的锁叫latch,数据库对象(表,索引

Oracle Latch的学习【原创】

Latch详解 - MaxChou 本文以学习为目的,大部分内容来自网络转载. 什么是Latch 串行化 数据库系统本身是一个多用户并发处理系统,在同一个时间点上,可能会有多个用户同时操作数据库.多个用户同时在相同的物理位置上写数据时,不能发生互相覆盖的情况,这叫做串行化.串行化会降低系统的并发性,但这对于保护数据结构不被破坏来说则是必需的.在Oracle数据库中,通过闩锁(latch).锁定(lock).互斥(mutex)来实行串行化,保护数据结构一致性的. Latch的定义和作用 Oracl

[20190505]关于latch 一些统计信息.txt

--//我在两篇文章,提到一些latch的统计信息.链接如下:http://blog.itpub.net/267265/viewspace-2642329/ =>[20190423]简单测试latch nowilling等待模式.txthttp://blog.itpub.net/267265/viewspace-2641549/ =>[20190416]查看shared latch gets的变化.txt --//我提到过以前我对这些统计是非常混乱的,到底什么情况是immediate_gets

[转帖]Latch

Latch (转) http://blog.csdn.net/tianlesoftware/article/details/5263238 2013-05-24 15:33:09 huashanlunjian 阅读数 13更多 分类专栏: 数据库 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huashanlunjian/article/details/84435068 一.  Latc

Oracle core06_latch&lock

lock and latch 在oracle中为了保护共享资源,使用了两种不同的锁机制lock和latch,这两种锁有明显不同点: 1,lock和pin,采用的是队列的方式,先来先服务的策略,latch和mutex,采用的是抢占的方式,fast fail模式2,lock可以hold的时间比较长,而latch时间会非常的短3,lock主要用户锁定对象,面向用户,latch主要锁定的是内存,面向系统 理解这两种锁的设计思想,可以应用在实际的生产过程中,首先: 1,这两种锁的粒度不同,一个粒度粗,一个