设为首页 加入收藏

TOP

手动模拟获取latch
2015-07-24 10:46:10 来源: 作者: 【 】 浏览:1
Tags:手动 模拟 获取 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/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。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇对触发器的思考 下一篇Oracle学习笔记18--存储函数和存..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)