[20241129]21c下测试软软解析改cursor pin S的mutext gets的变化.txt --//21c下测试软软解析改cursor pin S的mutext gets的变化 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. SYS@book> alter system flush shared_pool; System altered. 2.建立测试环境: SCOTT@book01p> create table deptxxx as select * from dept; Table created. $ uniq -c m2.sh 1 #! /bin/bash 1 sleep $(echo $1/500 | bc -l ) 1 sqlplus -s -l scott/book@book01p <<EOF >/dev/null 1 set feedback off 1 select count(1) from deptxxx; 19999 / 1 quit 1 EOF 3.测试: $ /usr/local/bin/zzdate ; seq 10 | xargs -IQ -P 10 ./m2.sh Q ; /usr/local/bin/zzdate trunc(sysdate)+16/24+47/1440+58/86400 1732870078.723943549 trunc(sysdate)+16/24+48/1440+30/86400 1732870110.913587749 SYS@book> @ mutexprofz idn,hash,loc,maddr "ts>=trunc(sysdate)+16/24+47/1440+58/86400 and ts<=trunc(sysdate)+16/24+48/1440+30/86400 and idn=2945576271" -- MutexProf by Tanel Poder (http://www.tanelpoder.com) -- Showing profile of top 20 sleeps... -- column info : id idn hash hash_value=>hash_value ts=>sleep_timestamp -- req=>requesting_session blk=>blocking_session val=>mutex_value maddr=>mutex_addr SUM_SLEEPS GETS_DIFF MUTEX_TYPE IDN HASH GET_LOCATION mutex_addr OBJECT_NAME ---------- -------------- --------------- ---------- ---------- --------------------------------- -------------------- ---------------------------- 4 221257 Cursor Pin 2945576271 2945576271 kksLockDelete [KKSCHLPIN6] 0000000061310570 select count(1) from deptxxx 2 50202 Cursor Pin 2945576271 2945576271 kksfbc [KKSCHLPIN1] 0000000061310570 select count(1) from deptxxx SYS@book> @ opeek 0000000061310570 24 0 [061310570, 061310588) = 00000000 00000000 00061AA6 0000000B AF91ED4F 00000000 SYS@book> @ xto10 00061AA6 16 BASE16 BASE10 ERRMSG ------------------------------ ------------------------------ ------ 00061aa6 400038 good --//该语句一共执行10*20000 = 200000,实际上每次基本gets 2次。多了38次怎么回事,也许硬解析,软解析测试不同。 4.继续: --// 重新登录,第1次执行软解析。 SCOTT@book01p> select count(1) from deptxxx; COUNT(1) ---------- 4 SYS@book> @ opeek 0000000061310570 24 0 [061310570, 061310588) = 00000000 00000000 00061AA8 0000000B AF91ED4F 00000000 --//第2次执行软软解析. SCOTT@book01p> select count(1) from deptxxx; COUNT(1) ---------- 4 SYS@book> @ opeek 0000000061310570 24 0 [061310570, 061310588) = 00000000 00000000 00061AAA 0000000B AF91ED4F 00000000 --//可以看出每个软解析以及软软解析都是gets 2次。 5.看看硬解析需要几次: SYS@book> @ sharepool/shp4 2utgtqyrt3vag 0 HANDLE_TYPE KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 ---------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- child handle address 000000006961A100 0000000061310DF0 select count(1) from deptxxx 1 0 0 000000006130F900 0000000061310618 8128 12128 3293 23549 23549 2945576271 2utgtqyrt3vag 0 parent handle address 0000000061310DF0 0000000061310DF0 select count(1) from deptxxx 1 0 0 000000006CF10B60 00 4064 0 0 4064 4064 2945576271 2utgtqyrt3vag 65535 SYS@book> @ ksmsp 000000006CF10B60 '' '' GET_LOCATION KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC --------------------------------- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- ------------------------- SGA 000000006CF10AF0 1 1 KGLDA 544 freeabl 0 00 000000006CF10AF0 000000006CF10D10 SGA 000000006130FDC0 1 1 KGLH0^af91ed4f 4096 recr 4095 000000006CF10B60 000000006130FDC0 0000000061310DC0 KSMCHPAR=000000006CF10B60 SYS@book> @ fchaz 0000000061310570 GET_LOCATION KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --------------------------------- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 000000006130FDC0 1 1 KGLH0^af91ed4f 4096 recr 4095 000000006CF10B60 000000006130FDC0 0000000061310DC0 --//0000000061310570-000000006130FDC0 = 0x7b0 = 1968. --//muext在父游标堆0开始偏移0x7b0 , 1968的位置。 $ disp_addr.sh 000000006130FDC0 7b0 0x61310570: 0x00000000 0x00000000 0x00061ab2 0x0000000b 0x61310580: 0xaf91ed4f 0x00000000 0x00000000 0x00000000 SYS@book> @ opeek 0000000061310570 24 0 [061310570, 061310588) = 00000000 00000000 00061AB2 0000000B AF91ED4F 00000000 --//正常相同语句该mutex的偏移地址不会变动。 SYS@book> alter system flush shared_pool; System altered. SYS@book> alter system flush shared_pool; System altered. SCOTT@book01p> select count(1) from deptxxx; COUNT(1) ---------- 4 @ sharepool/shp4 2utgtqyrt3vag 0 HANDLE_TYPE KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 ---------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- child handle address 000000006961A100 0000000061310DF0 select count(1) from deptxxx 1 0 0 000000006130F900 0000000061310618 8128 12128 3293 23549 23549 2945576271 2utgtqyrt3vag 0 parent handle address 0000000061310DF0 0000000061310DF0 select count(1) from deptxxx 1 0 0 000000006CF10B60 00 4064 0 0 4064 4064 2945576271 2utgtqyrt3vag 65535 SYS@book> @ ksmsp 000000006CDD0FC8 '' '' GET_LOCATION KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC --------------------------------- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- ------------------------- SGA 000000006FE3A180 1 1 KGLH0^af91ed4f 4096 recr 4095 000000006CDD0FC8 000000006FE3A180 000000006FE3B180 KSMCHPAR=000000006CDD0FC8 SGA 000000006CDD0F58 1 1 KGLDA 512 freeabl 0 00 000000006CDD0F58 000000006CDD1158 $ disp_addr.sh 000000006FE3A180 7b0 8 0x6fe3a930: 0x00000000 0x00000000 0x00000004 0x00000000 0x6fe3a940: 0xaf91ed4f 0x00000000 0x00000000 0x00000000 --//第1次硬解析是4次gets。 --//af91ed4f = 2945576271,与KGLNAHSH一致。 $ disp_addr.sh 000000006FE3A180 7b0 8 0x6fe3a930: 0x00000000 0x00000000 0x00000006 0x00000000 0x6fe3a940: 0xaf91ed4f 0x00000000 0x00000000 0x00000000 --//第2次软解析是2次gets。 $ disp_addr.sh 000000006FE3A180 7b0 8 0x6fe3a930: 0x00000000 0x00000000 0x00000008 0x00000000 0x6fe3a940: 0xaf91ed4f 0x00000000 0x00000000 0x00000000 --//第3次软解析是2次gets。 $ disp_addr.sh 000000006FE3A180 7b0 8 0x6fe3a930: 0x00000000 0x00000000 0x0000000a 0x00000000 0x6fe3a940: 0xaf91ed4f 0x00000000 0x00000000 0x00000000 --//第3次软软解析是2次gets。 --//仅仅多了2次,也许前面几次执行存在一些竞争。 --//修改m2.sh,sleep 间隔延长。 $ uniq -c m2.sh 1 #! /bin/bash 1 sleep $(echo $1/2 | bc -l ) 1 sqlplus -s -l scott/book@book01p <<EOF >/dev/null 1 set feedback off 1 select count(1) from deptxxx; 19999 / 1 quit 1 EOF $ /usr/local/bin/zzdate ; seq 2 | xargs -IQ -P 2 ./m2.sh Q ; /usr/local/bin/zzdate trunc(sysdate)+17/24+16/1440+26/86400 1732871786.465136942 trunc(sysdate)+17/24+16/1440+39/86400 1732871799.895447755 $ disp_addr.sh 000000006BA11338 7b0 8 0x6ba11ae8: 0x00000000 0x00000000 0x00013882 0x00000000 0x6ba11af8: 0xaf91ed4f 0x00000000 0x00000000 0x00000000 SYS@book> @ xto10 00013882 16 BASE16 BASE10 ERRMSG ------------------------------ ------------------------------ ------ 00013882 80002 good --//20000*2*2+2 = 80002. --//细节不再探究,基本gets每次2次。
[20241129]21c下测试软软解析改cursor pin S的mutext gets的变化.txt
来源:这里教程网
时间:2026-03-03 20:56:56
作者:
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- delete 删除2600万数据
delete 删除2600万数据
26-03-03 - Oracle数据恢复—底层解析数据文件恢复Oracle数据库数据的案例
Oracle数据恢复—底层解析数据文件恢复Oracle数据库数据的案例
26-03-03 - 数据库管理-第266期 MOS改版,该如何登录(20241126)
数据库管理-第266期 MOS改版,该如何登录(20241126)
26-03-03 - 全 网 第 一 份JSON二元性“写操作”的实践
全 网 第 一 份JSON二元性“写操作”的实践
26-03-03 - 第15期Oracle调用DBMS_JOB.SUBMIT报错:ORA-27486:权限不足
- Oracle数据库 Truncate慢分析
Oracle数据库 Truncate慢分析
26-03-03 - 长沙家具宝藏店法拉利沙发,奢华优雅的家居典范
长沙家具宝藏店法拉利沙发,奢华优雅的家居典范
26-03-03 - oracle数据恢复—Oracle数据库文件大小变为0kb怎么恢复数据?
oracle数据恢复—Oracle数据库文件大小变为0kb怎么恢复数据?
26-03-03 - 一万字,浅谈Oracle数据库truncate原理,无备份,如何恢复!
一万字,浅谈Oracle数据库truncate原理,无备份,如何恢复!
26-03-03 - 湖南家具铂金钻奢石餐桌,简约与优雅的完美融合
湖南家具铂金钻奢石餐桌,简约与优雅的完美融合
26-03-03
