[20190409]latch get 参数where and why.txt --//这一阵子一直在探究latch,mutex的问题,思路好乱.放假在https://andreynikolaev.wordpress.com看了许多链接. --//被里面的X$搞得有点晕.慢慢理解看看: kslgetl(laddr, wait, why, where) – Get exclusive latch --//感觉作者这里写错了,应该是kslgetl(laddr, wait, where, why).这样才与下面的链接对上. More precisely, to request the latch Oracle kernel needs: --//更准确地说,要请求闩锁Oracle内核需要: laddress -- address of latch in SGA wait -- flag. If true, this is latch get in willing-to-wait mode.. where -- code for location from where the latch is acquired. why -- context why the latch is acquired at this where. --//我主要关注where,why如何取值. https://fritshoogland.wordpress.com/2015/07/17/oracle-12-and-latches/ 1-latch address 2-immediate get (0 means yes, 1 means no) 3-where (X$KSLLW.INDX) 4-why (X$KSLWSC.INDX) 5-mode (8=shared,16=exclusive; only for ksl_get_shared_latch function) --//以作者写的例子看看latch='DMON Work Queues Latch'的情况: 1.环境: SYS@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SYS@book> select addr, name from v$latch where name='DMON Work Queues Latch'; ADDR NAME ---------------- ---------------------------------------- 000000006004C300 DMON Work Queues Latch SYS@book> select addr, name from v$latch_parent where name='DMON Work Queues Latch'; ADDR NAME ---------------- ---------------------------------------- 000000006004C300 DMON Work Queues Latch SYS@book> select addr, name from v$latch_children where name='DMON Work Queues Latch'; no rows selected --//仅仅存在父拴锁. 2.首先看看why的取值: --//4-why (X$KSLWSC.INDX) SYS@book> select * from x$kslwsc where ksllasnam ='DMON Work Queues Latch'; ADDR INDX INST_ID KSLNOWTF KSLSLEEP KSLWSCWSL KSLWSCLTHG KSLLASNAM ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------------- 00000000861C08C0 4972 1 0 1 1 0 DMON Work Queues Latch 00000000861C08E0 4973 1 0 0 0 0 DMON Work Queues Latch 00000000861C0900 4974 1 0 0 0 0 DMON Work Queues Latch 00000000861C0920 4975 1 0 0 0 0 DMON Work Queues Latch 00000000861C0940 4976 1 0 0 0 0 DMON Work Queues Latch 00000000861C0960 4977 1 0 0 0 0 DMON Work Queues Latch 00000000861C0980 4978 1 0 0 0 0 DMON Work Queues Latch 00000000861C09A0 4979 1 0 0 0 0 DMON Work Queues Latch 00000000861C09C0 4980 1 0 0 0 0 DMON Work Queues Latch 00000000861C09E0 4981 1 0 0 0 0 DMON Work Queues Latch 00000000861C0A00 4982 1 0 0 0 0 DMON Work Queues Latch 00000000861C0A20 4983 1 0 0 0 0 DMON Work Queues Latch 00000000861C0A40 4984 1 0 0 0 0 DMON Work Queues Latch 00000000861C0A60 4985 1 0 0 0 0 DMON Work Queues Latch 00000000861C0A80 4986 1 0 0 0 0 DMON Work Queues Latch 00000000861C0AA0 4987 1 0 0 0 0 DMON Work Queues Latch 00000000861C0AC0 4988 1 0 0 0 0 DMON Work Queues Latch 00000000861C0AE0 4989 1 0 0 0 0 DMON Work Queues Latch 00000000861C0B00 4990 1 0 0 0 0 DMON Work Queues Latch 00000000861C0B20 4991 1 0 0 0 0 DMON Work Queues Latch 00000000861C0B40 4992 1 0 0 0 0 DMON Work Queues Latch 00000000861C0B60 4993 1 0 0 0 0 DMON Work Queues Latch 00000000861C0B80 4994 1 0 0 0 0 DMON Work Queues Latch 00000000861C0BA0 4995 1 0 0 0 0 DMON Work Queues Latch 00000000861C0BC0 4996 1 0 0 0 0 DMON Work Queues Latch 00000000861C0BE0 4997 1 0 0 0 0 DMON Work Queues Latch 00000000861C0C00 4998 1 0 0 0 0 DMON Work Queues Latch 00000000861C0C20 4999 1 0 0 0 0 DMON Work Queues Latch 00000000861C0C40 5000 1 0 0 0 0 DMON Work Queues Latch 00000000861C0C60 5001 1 0 0 0 0 DMON Work Queues Latch 00000000861C0C80 5002 1 0 0 0 0 DMON Work Queues Latch 00000000861C0CA0 5003 1 0 0 0 0 DMON Work Queues Latch 00000000861C0CC0 5004 1 0 0 0 0 DMON Work Queues Latch 00000000861C0CE0 5005 1 0 0 0 0 DMON Work Queues Latch 00000000861C0D00 5006 1 0 0 0 0 DMON Work Queues Latch 00000000861C0D20 5007 1 0 0 0 0 DMON Work Queues Latch 00000000861C0D40 5008 1 0 0 0 0 DMON Work Queues Latch 00000000861C0D60 5009 1 0 0 0 0 DMON Work Queues Latch 00000000861C0D80 5010 1 0 0 0 0 DMON Work Queues Latch 00000000861C0DA0 5011 1 0 0 0 0 DMON Work Queues Latch 00000000861C0DC0 5012 1 0 0 0 0 DMON Work Queues Latch 00000000861C0DE0 5013 1 0 0 0 0 DMON Work Queues Latch 00000000861C0E00 5014 1 0 0 0 0 DMON Work Queues Latch 00000000861C0E20 5015 1 0 0 0 0 DMON Work Queues Latch 00000000861C0E40 5016 1 0 0 0 0 DMON Work Queues Latch 00000000861C0E60 5017 1 0 0 0 0 DMON Work Queues Latch 46 rows selected. --//可以看出取值在4972-5017之间. SYS@book> select * from x$ksllw where indx between 4972 and 5017; ADDR INDX INST_ID KSLLWNAM KSLLWLBL ---------------- ---------- ---------- --------------------------- ----------------- 0000000009AB0CC0 4972 1 rfifdrcxch 0000000009AB0CD0 4973 1 rfifreqch 0000000009AB0CE0 4974 1 rfm_do_hc 0000000009AB0CF0 4975 1 rfm_init_boot_te1 0000000009AB0D00 4976 1 rfm_init_boot_te2 0000000009AB0D10 4977 1 rfm_init_boot_te3 0000000009AB0D20 4978 1 rfm_init_boot_te4 0000000009AB0D30 4979 1 rfm_free_te 0000000009AB0D40 4980 1 rfm_setup_te 0000000009AB0D50 4981 1 rfmeadvphs 0000000009AB0D60 4982 1 rfmdophs 0000000009AB0D70 4983 1 rfmdolocalop 0000000009AB0D80 4984 1 rfmdowrop1 0000000009AB0D90 4985 1 rfmdowrop2 0000000009AB0DA0 4986 1 rfmdowrop3 0000000009AB0DB0 4987 1 rfmdomonproperty1 0000000009AB0DC0 4988 1 rfmdomonproperty2 0000000009AB0DD0 4989 1 rfm_init_boot_te5 0000000009AB0DE0 4990 1 rfmdoremoteop1 0000000009AB0DF0 4991 1 rfmdoremoteop2 0000000009AB0E00 4992 1 rfmdodisable 0000000009AB0E10 4993 1 rfm_do_switchover1 0000000009AB0E20 4994 1 rfm_do_switchover2 0000000009AB0E30 4995 1 rfm_do_failover 0000000009AB0E40 4996 1 rfmtecb1 0000000009AB0E50 4997 1 rfmtecb2 0000000009AB0E60 4998 1 rfm_quiesce_site 0000000009AB0E70 4999 1 rfm_quiesce_instance 0000000009AB0E80 5000 1 rfm_enable_object 0000000009AB0E90 5001 1 rfmdsite 0000000009AB0EA0 5002 1 rfm_execute_task_fn1 0000000009AB0EB0 5003 1 rfm_execute_task_fn2 0000000009AB0EC0 5004 1 rfm_inst_phase_dispatch1 0000000009AB0ED0 5005 1 rfm_inst_phase_dispatch2 0000000009AB0EE0 5006 1 rfm_inst_phase_dispatch3 0000000009AB0EF0 5007 1 rfm_get_chief_lock 0000000009AB0F00 5008 1 rfm_release_chief_lock 0000000009AB0F10 5009 1 rfmhcadvphs 0000000009AB0F20 5010 1 rfm_do_client_hc 0000000009AB0F30 5011 1 rfm_execute_sprobe 0000000009AB0F40 5012 1 rfm_broker_cleanup 0000000009AB0F50 5013 1 rfm_init_dmon 0000000009AB0F60 5014 1 rfrm_set_param 0000000009AB0F70 5015 1 rfm_init_boot_te6 0000000009AB0F80 5016 1 rfm_phase_dispatch_sby1 0000000009AB0F90 5017 1 rfm_phase_dispatch_sby2 46 rows selected. --//KSLLWNAM 对应的就是location.通过gV$LATCH_MISSES 定义修改一下增加indx如下: /* Formatted on 2019/4/9 12:10:49 (QP5 v5.269.14213.34769) */ SELECT t1.inst_id inst_id ,t1.indx indx ,t1.ksllasnam PARENT_NAME ,t2.ksllwnam "WHERE" ,t1.kslnowtf NWFAIL_COUNT ,t1.kslsleep SLEEP_COUNT ,t1.kslwscwsl WTR_SLP_COUNT ,t1.kslwsclthg LONGHOLD_COUNT ,t2.ksllwnam LOCATION FROM x$ksllw t2, x$kslwsc t1 WHERE t2.indx = t1.indx AND t1.ksllasnam LIKE 'DMON Work Queues Latch'; --//location 与where 对应的内容一样. INST_ID INDX PARENT_NAME WHERE NWFAIL_COUNT SLEEP_COUNT WTR_SLP_COUNT LONGHOLD_COUNT LOCATION ---------- ---------- ----------------------- ------------------------------ ------------ ----------- ------------- -------------- ------------------------------ 1 4972 DMON Work Queues Latch rfifdrcxch 0 1 1 0 rfifdrcxch 1 4973 DMON Work Queues Latch rfifreqch 0 0 0 0 rfifreqch 1 4974 DMON Work Queues Latch rfm_do_hc 0 0 0 0 rfm_do_hc 1 4975 DMON Work Queues Latch rfm_init_boot_te1 0 0 0 0 rfm_init_boot_te1 1 4976 DMON Work Queues Latch rfm_init_boot_te2 0 0 0 0 rfm_init_boot_te2 1 4977 DMON Work Queues Latch rfm_init_boot_te3 0 0 0 0 rfm_init_boot_te3 1 4978 DMON Work Queues Latch rfm_init_boot_te4 0 0 0 0 rfm_init_boot_te4 1 4979 DMON Work Queues Latch rfm_free_te 0 0 0 0 rfm_free_te 1 4980 DMON Work Queues Latch rfm_setup_te 0 0 0 0 rfm_setup_te 1 4981 DMON Work Queues Latch rfmeadvphs 0 0 0 0 rfmeadvphs 1 4982 DMON Work Queues Latch rfmdophs 0 0 0 0 rfmdophs 1 4983 DMON Work Queues Latch rfmdolocalop 0 0 0 0 rfmdolocalop 1 4984 DMON Work Queues Latch rfmdowrop1 0 0 0 0 rfmdowrop1 1 4985 DMON Work Queues Latch rfmdowrop2 0 0 0 0 rfmdowrop2 1 4986 DMON Work Queues Latch rfmdowrop3 0 0 0 0 rfmdowrop3 1 4987 DMON Work Queues Latch rfmdomonproperty1 0 0 0 0 rfmdomonproperty1 1 4988 DMON Work Queues Latch rfmdomonproperty2 0 0 0 0 rfmdomonproperty2 1 4989 DMON Work Queues Latch rfm_init_boot_te5 0 0 0 0 rfm_init_boot_te5 1 4990 DMON Work Queues Latch rfmdoremoteop1 0 0 0 0 rfmdoremoteop1 1 4991 DMON Work Queues Latch rfmdoremoteop2 0 0 0 0 rfmdoremoteop2 1 4992 DMON Work Queues Latch rfmdodisable 0 0 0 0 rfmdodisable 1 4993 DMON Work Queues Latch rfm_do_switchover1 0 0 0 0 rfm_do_switchover1 1 4994 DMON Work Queues Latch rfm_do_switchover2 0 0 0 0 rfm_do_switchover2 1 4995 DMON Work Queues Latch rfm_do_failover 0 0 0 0 rfm_do_failover 1 4996 DMON Work Queues Latch rfmtecb1 0 0 0 0 rfmtecb1 1 4997 DMON Work Queues Latch rfmtecb2 0 0 0 0 rfmtecb2 1 4998 DMON Work Queues Latch rfm_quiesce_site 0 0 0 0 rfm_quiesce_site 1 4999 DMON Work Queues Latch rfm_quiesce_instance 0 0 0 0 rfm_quiesce_instance 1 5000 DMON Work Queues Latch rfm_enable_object 0 0 0 0 rfm_enable_object 1 5001 DMON Work Queues Latch rfmdsite 0 0 0 0 rfmdsite 1 5002 DMON Work Queues Latch rfm_execute_task_fn1 0 0 0 0 rfm_execute_task_fn1 1 5003 DMON Work Queues Latch rfm_execute_task_fn2 0 0 0 0 rfm_execute_task_fn2 1 5004 DMON Work Queues Latch rfm_inst_phase_dispatch1 0 0 0 0 rfm_inst_phase_dispatch1 1 5005 DMON Work Queues Latch rfm_inst_phase_dispatch2 0 0 0 0 rfm_inst_phase_dispatch2 1 5006 DMON Work Queues Latch rfm_inst_phase_dispatch3 0 0 0 0 rfm_inst_phase_dispatch3 1 5007 DMON Work Queues Latch rfm_get_chief_lock 0 0 0 0 rfm_get_chief_lock 1 5008 DMON Work Queues Latch rfm_release_chief_lock 0 0 0 0 rfm_release_chief_lock 1 5009 DMON Work Queues Latch rfmhcadvphs 0 0 0 0 rfmhcadvphs 1 5010 DMON Work Queues Latch rfm_do_client_hc 0 0 0 0 rfm_do_client_hc 1 5011 DMON Work Queues Latch rfm_execute_sprobe 0 0 0 0 rfm_execute_sprobe 1 5012 DMON Work Queues Latch rfm_broker_cleanup 0 0 0 0 rfm_broker_cleanup 1 5013 DMON Work Queues Latch rfm_init_dmon 0 0 0 0 rfm_init_dmon 1 5014 DMON Work Queues Latch rfrm_set_param 0 0 0 0 rfrm_set_param 1 5015 DMON Work Queues Latch rfm_init_boot_te6 0 0 0 0 rfm_init_boot_te6 1 5016 DMON Work Queues Latch rfm_phase_dispatch_sby1 0 0 0 0 rfm_phase_dispatch_sby1 1 5017 DMON Work Queues Latch rfm_phase_dispatch_sby2 0 0 0 0 rfm_phase_dispatch_sby2 46 rows selected. 3.where的取值: --//3-where (X$KSLLW.INDX) SYS@book> select * from X$KSLLW where indx between 4972 and 5017 ; ADDR INDX INST_ID KSLLWNAM KSLLWLBL ---------------- ---------- ---------- ----------------------------- ---------------------------------- 0000000009AB0CC0 4972 1 rfifdrcxch 0000000009AB0CD0 4973 1 rfifreqch 0000000009AB0CE0 4974 1 rfm_do_hc 0000000009AB0CF0 4975 1 rfm_init_boot_te1 0000000009AB0D00 4976 1 rfm_init_boot_te2 0000000009AB0D10 4977 1 rfm_init_boot_te3 0000000009AB0D20 4978 1 rfm_init_boot_te4 0000000009AB0D30 4979 1 rfm_free_te 0000000009AB0D40 4980 1 rfm_setup_te 0000000009AB0D50 4981 1 rfmeadvphs 0000000009AB0D60 4982 1 rfmdophs 0000000009AB0D70 4983 1 rfmdolocalop 0000000009AB0D80 4984 1 rfmdowrop1 0000000009AB0D90 4985 1 rfmdowrop2 0000000009AB0DA0 4986 1 rfmdowrop3 0000000009AB0DB0 4987 1 rfmdomonproperty1 0000000009AB0DC0 4988 1 rfmdomonproperty2 0000000009AB0DD0 4989 1 rfm_init_boot_te5 0000000009AB0DE0 4990 1 rfmdoremoteop1 0000000009AB0DF0 4991 1 rfmdoremoteop2 0000000009AB0E00 4992 1 rfmdodisable 0000000009AB0E10 4993 1 rfm_do_switchover1 0000000009AB0E20 4994 1 rfm_do_switchover2 0000000009AB0E30 4995 1 rfm_do_failover 0000000009AB0E40 4996 1 rfmtecb1 0000000009AB0E50 4997 1 rfmtecb2 0000000009AB0E60 4998 1 rfm_quiesce_site 0000000009AB0E70 4999 1 rfm_quiesce_instance 0000000009AB0E80 5000 1 rfm_enable_object 0000000009AB0E90 5001 1 rfmdsite 0000000009AB0EA0 5002 1 rfm_execute_task_fn1 0000000009AB0EB0 5003 1 rfm_execute_task_fn2 0000000009AB0EC0 5004 1 rfm_inst_phase_dispatch1 0000000009AB0ED0 5005 1 rfm_inst_phase_dispatch2 0000000009AB0EE0 5006 1 rfm_inst_phase_dispatch3 0000000009AB0EF0 5007 1 rfm_get_chief_lock 0000000009AB0F00 5008 1 rfm_release_chief_lock 0000000009AB0F10 5009 1 rfmhcadvphs 0000000009AB0F20 5010 1 rfm_do_client_hc 0000000009AB0F30 5011 1 rfm_execute_sprobe 0000000009AB0F40 5012 1 rfm_broker_cleanup 0000000009AB0F50 5013 1 rfm_init_dmon 0000000009AB0F60 5014 1 rfrm_set_param 0000000009AB0F70 5015 1 rfm_init_boot_te6 0000000009AB0F80 5016 1 rfm_phase_dispatch_sby1 0000000009AB0F90 5017 1 rfm_phase_dispatch_sby2 46 rows selected. --//感觉不对,不大可能还是indx. --//链接 http://andreynikolaev.wordpress.com/2010/04/12/latch-internals-information-sources/ Also, these strings present as "Location from where latch is held" in process state object dumps. For example, look at the process holding cache buffers chains latch: --//此外,这些字符串在进程状态对象转储中以"持有锁的位置"的形式出现。例如,查看保存缓冲区链锁存的进程: PROCESS 299: ---------------------------------------- SO: 0x2d93be720, type: 2, owner: (nil), flag: INIT/-/-/0x00 (process) Oracle pid=299, calls cur/top: 0x2e9028a38/0x2e9028a38, flag: (0) … (latch info) wait_event=0 bits=2 holding 2dee1ac50 Child cache buffers chains level=1 child#=124200 Location from where latch is held: kcbgtcr: fast path: Context saved from call: 39022946 … "Why" meaning for some of "where" may be guessed from ksllwlbl column of x$ksllw. From the above listing one can conclude that "why" contain the SGA chunk address for shared pool latch and the session address for session idle bit latch correspondingly. --//从x$ksllw的ksllwlbl列中可以猜到"why"的意思是"WHERE"。从上面的列表中可以得出结论,"why"包含用于共享池闩锁的SGA块地址 --//,以及相应地包含会话空闲位闩锁的会话地址。 --//KSLLWLBL列显示的是空?视乎要按照上下文猜测why.
[20190409]latch get 参数where and why.txt
来源:这里教程网
时间:2026-03-03 13:17:07
作者:
编辑推荐:
- [20190409]latch get 参数where and why.txt03-03
- [20190409]latch get 参数where and why测试.txt03-03
- 实战演练丨SCN太大引发ORA-600[2252]03-03
- [20190409]pre_page_sga=true与连接缓慢的问题.txt03-03
- Oracle新一波大扫荡式裁员,二十年湾区老员工:接到通知30分钟内被扫地出门03-03
- Debian备份恢复全攻略(手把手教你轻松搞定Linux系统备份与还原)03-03
- Oracle 12c 查看CDB&PDBs信息(SQL*PLUS)03-03
- 9-oracle_union和union all03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 实战演练丨SCN太大引发ORA-600[2252]
实战演练丨SCN太大引发ORA-600[2252]
26-03-03 - Oracle新一波大扫荡式裁员,二十年湾区老员工:接到通知30分钟内被扫地出门
- Debian备份恢复全攻略(手把手教你轻松搞定Linux系统备份与还原)
Debian备份恢复全攻略(手把手教你轻松搞定Linux系统备份与还原)
26-03-03 - 9-oracle_union和union all
9-oracle_union和union all
26-03-03 - 记一次ORA-00600 kdsgrp1处理
记一次ORA-00600 kdsgrp1处理
26-03-03 - Oracle Enqueue Waits
Oracle Enqueue Waits
26-03-03 - Oracle数据库备份与恢复
Oracle数据库备份与恢复
26-03-03 - expdp ORA-01555(二)(大表拆分)
expdp ORA-01555(二)(大表拆分)
26-03-03 - Debian集群监控告警设置(手把手教你搭建高效稳定的服务器监控与告警系统)
- 实验之 RMAN-异机增量备份恢复
实验之 RMAN-异机增量备份恢复
26-03-03
