ITPub博客

首页 > 数据库 > Oracle > [20261013]光标跟踪事件.txt

[20261013]光标跟踪事件.txt

原创 Oracle 作者:lfree 时间:2026-10-20 20:45:53 0 删除 编辑

[20261013]光标跟踪事件.txt

--//参考链接:https://www.0xchris.dev/posts/2026-07-30-understanding-the-cursortrace-event/
--//简单测试看看:

1.环境:
SCOTT@book01p> @ ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

SCOTT@book01p> select * from dept where deptno=61;
no rows selected

SCOTT@book01p> @ hashz
HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET HASH_HEX   SQL_EXEC_START      SQL_EXEC_ID
---------- ------------- ------------ ---------- ---------- ------------------- -----------
 602167305 gm1yr8wjy8q09            0      22537  23e45809  2026-10-13 16:56:24    16777216
--//HASH_VALUE=602167305
--//缺省optimizer_index_cost_adj=100,仅仅建立CHILD_NUMBER=0.

2.测试:
--//建立测试脚本:
$ cat aaa.txt
define hash_value=602167305
alter session set events 'immediate trace name cursortrace level 0x41, address &hash_value';
alter session set optimizer_index_cost_adj=8;
select * from dept where deptno=61;
alter session set optimizer_index_cost_adj=9;
select * from dept where deptno=61;
alter session set optimizer_index_cost_adj=9;
select * from dept where deptno=61;
alter session set events 'immediate trace name cursortrace level 0x80, address &hash_value';
--//执行3次,最后2次optimizer_index_cost_adj=9,应该共享相同光标。

SCOTT@book01p> @ aaa.txt
Session altered.
Session altered.
no rows selected
Session altered.
no rows selected
Session altered.
no rows selected
Session altered.

3.查看跟踪文件:
PDB#3 CUR#1 XSC 0x7fe656d3c2e0 CHILD#-1 CI (nil) CTX (nil)
 PARSING SQLTEXT=select * from dept where deptno=61
 SQLHASH=23e45809
 kksfbc begin 0x108 0 0
 No valid child pinned
 Parent 0x6fb02460(0x69c74a50) ready for search
 kksCheckCursor: next child is #0
 kksCheckCursor: pinning child #0 in shared mode 0x6fb02550 0x69643df8
 kksUnlockChild: releasing child
 Failed sharing : 4
 kksSearchChildList: no suitable child found (hash_match=1)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 SearchChildList failed ctx=(nil) xscflg=20 ctxflg=0 flg=108
 allocated new child slot bi=0x696f6cd0 flg=1 cld=1 hsh=23e45809
kkshinins insert child into incomplete list bi=0x696f6cd0 cld=1 flg=25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Created new child obj #1 dsfl=2002011 8003c00 xsc=0x7fe656d3c2e0 chd=0x6bd848d8 clk=0x6f810ad8
 Pin new child obj #1 dsfl=2002011 xsc=0x7fe656d3c2e0 chd=0x6bd848d8 clk=0x6f810ad8 cpn=(nil)
 kksLoadChild: reload 0 path 2 kkscsusr 109 ksuudsid 109
 ~~~~~~~~~~~~~
 kksLoadChild: reload 0 path 3 kkscsusr 109 ksuudsid 109
 ~~~~~~~~~~~~~~
 Child creation successful xsc=0x7fe656d3c2e0 chd=0x6bd848d8 cpn=0x6b58db88 sta=0 bi=0x696f6cd0 cld=1
 Add new child to parent list pi=0x69581468 psn=1 bi=0x696f6cd0 cld=1 flg=35
kkshindel remove child from incomplete list bi=0x696f6cd0 cld=1 flg=30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 kkshhcins insert child into hash table bi=0x696f6cd0 cld=1 flg=38
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Downgrading child pin to share
 kksfbc begin 0x102 1 1
 Cursor about get executed
 kksfbc begin 0x1 1 1
PDB#3 CUR#1 XSC 0x7fe656d3c2e0 CHILD#1 CI 0x697a7e58 CTX (nil)
 Closing cursor

$ ./lookup.awk  kksfbc
kksfbc : kernel compile shared objects (cursor) find bound cursor
 
--//1.执行kksCheckCursor看看是否有合适的子光标,如果没执行有kksSearchChildList,还是没有
--//2.执行kkshinins insert child into incomplete list,插入子光标到incomplete list,建立新的子光标,然后执行kksLoadChild
--//加载(执行2次?)。
--//3.执行kkshindel remove child from incomplete list,删除子光标从incomplete list。
--//4.执行kkshhcins insert child into hash table,插入子光标进入hash table。

 PARSING SQLTEXT=select * from dept where deptno=61
 SQLHASH=23e45809
 kksfbc begin 0x108 0 0
 No valid child pinned
 Parent 0x6f810ad8(0x69c74a50) ready for search
 kksCheckCursor: next child is #1
 kksCheckCursor: pinning child #1 in shared mode 0x6fb02280 0x6bd848d8
 kksUnlockChild: releasing child
 Failed sharing : 4
 kksCheckCursor: next child is #0
Child was pruned
 kksSearchChildList: no suitable child found (hash_match=1)
 SearchChildList failed ctx=(nil) xscflg=20 ctxflg=0 flg=108
 allocated new child slot bi=0x696f7430 flg=1 cld=2 hsh=23e45809
kkshinins insert child into incomplete list bi=0x696f7430 cld=2 flg=25
 Created new child obj #2 dsfl=2002011 8003c00 xsc=0x7fe656d28d10 chd=0x6ff373d8 clk=0x6fb02550
 Pin new child obj #2 dsfl=2002011 xsc=0x7fe656d28d10 chd=0x6ff373d8 clk=0x6fb02550 cpn=(nil)
 kksLoadChild: reload 0 path 2 kkscsusr 109 ksuudsid 109
 kksLoadChild: reload 0 path 3 kkscsusr 109 ksuudsid 109
 Child creation successful xsc=0x7fe656d28d10 chd=0x6ff373d8 cpn=0x6b58db88 sta=0 bi=0x696f7430 cld=2
 Add new child to parent list pi=0x69581468 psn=2 bi=0x696f7430 cld=2 flg=35
kkshindel remove child from incomplete list bi=0x696f7430 cld=2 flg=30
 kkshhcins insert child into hash table bi=0x696f7430 cld=2 flg=38
 Downgrading child pin to share
 kksfbc begin 0x102 1 1
 Cursor about get executed
 kksfbc begin 0x1 1 1
PDB#3 CUR#1 XSC 0x7fe656d28d10 CHILD#2 CI 0x699006c8 CTX (nil)
 Closing cursor
--//基本与前面类似,仅仅kksCheckCursor从child #1,然后child is #0,不合适建立新子光标child #2.

 PARSING SQLTEXT=select * from dept where deptno=61
 SQLHASH=23e45809
 kksfbc begin 0x108 0 0
 No valid child pinned
 Parent 0x6f810ad8(0x69c74a50) ready for search
 kksCheckCursor: next child is #2
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 kksCheckCursor: pinning child #2 in shared mode 0x6fb02550 0x6ff373d8
 Calling for auth
 kksfbc begin 0x102 1 1
 Cursor about get executed
 kksfbc begin 0x1 1 1
PDB#3 CUR#1 XSC 0x7fe656d28d10 CHILD#2 CI 0x699006c8 CTX (nil)
 Closing cursor
--//第3次执行,kksCheckCursor检查光标兼容,没有产生新的子光标,直接执行。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3186164/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4010
  • 访问量
    7972709