ITPub博客

首页 > 数据库 > Oracle > [20250219]关于共享池chunk大小.txt

[20250219]关于共享池chunk大小.txt

原创 Oracle 作者:lfree 时间:2025-02-19 21:20:04 0 删除 编辑

[20250219]关于共享池chunk大小.txt

--//前几天测试,无意间发现oracle每个chunk的开头前4字节定义chunk大小+1.简单验证看看。

1.环境:
SYS@book> @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.

2.测试sql语句相关chunk:
SCOTT@book01p> select Sysdate from dual ;
SYSDATE
-------------------
2025-02-19 15:39:56

SCOTT@book01p> @ hashz

HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET HASH_HEX   SQL_EXEC_START      SQL_EXEC_ID
---------- ------------- ------------ ---------- ---------- ------------------- -----------
 313326246 5ptsmhh9atyp6            0      64166  12acfaa6  2025-02-19 15:39:56    16777216

SYS@book> @ sharepool/shp4 5ptsmhh9atyp6 -1
HANDLE_TYPE            KGLHDADR         KGLHDPAR         C40                                        KGLHDLMD   KGLHDPMD   KGLHDIVC KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
---------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
child handle address   00000000638F33F0 00000000622AEFE0 select Sysdate from dual                          0          0          0 00000000643A3130 00000000643A3B18       4032       8080       3290     15402      15402  313326246 5ptsmhh9atyp6          0
parent handle address  00000000622AEFE0 00000000622AEFE0 select Sysdate from dual                          0          0          0 0000000064EB5F10 00                     4064          0          0      4064       4064  313326246 5ptsmhh9atyp6      65535

--//父游标句柄所在的chunk
SYS@book> @ fchaz 00000000622AEFE0
LOC KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
--- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- -----------------
SGA 00000000622AEFB0          1          1 KGLHD                   816 recr             80 00               00000000622AEFB0 00000000622AF2E0

SYS@book> @ opeek 00000000622AEFB0 32 0
[0622AEFB0, 0622AEFD0) = 00000331 80B38F00 622AED80 00000000 00000000 00000000 00000000 00000000
--//0x00000331 = 817.正好等于chunksize+1、

$ disp_addr.sh 00000000622AEFB0 0 1 d
0x622aefb0:     817

--//父游标堆0描述符:
SYS@book> @ fchaz 0000000064EB5F10
LOC KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
--- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- -----------------
SGA 0000000064EB5EA0          1          1 KGLDA                   512 freeabl           0 00               0000000064EB5EA0 0000000064EB60A0

SYS@book> @ opeek 0000000064EB5EA0 32 0
[064EB5EA0, 064EB5EC0) = 00000201 00B38F00 64EB5C70 00000000 156BF6DC 00000000 00000003 00000000
--//0x00000201 = 513

--//父游标堆0:
SYS@book> @ ksmsp 0000000064EB5F10 '' ''
LOC KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1    HEAP_DESC
--- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- -------------------------
SGA 0000000064EB5EA0          1          1 KGLDA                   512 freeabl           0 00               0000000064EB5EA0 0000000064EB60A0
SGA 00000000643A32C0          1          1 KGLH0^12acfaa6         4096 recr           4095 0000000064EB5F10 00000000643A32C0 00000000643A42C0  KSMCHPAR=0000000064EB5F10

SYS@book> @ opeek 00000000643A32C0 32 0
[0643A32C0, 0643A32E0) = 00001001 80B38F00 643A30C0 00000000 00000000 00000000 00000000 00000000
--//0x00001001 = 4097.

--//子游标句柄所在的chunk
SYS@book> @ fchaz 00000000638F33F0

LOC KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
--- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- -----------------
SGA 00000000638F33C0          1          1 KGLHD                   560 recr             80 00               00000000638F33C0 00000000638F35F0

SYS@book> @ opeek 00000000638F33C0 32 0
[0638F33C0, 0638F33E0) = 00000231 80B38F00 638F3380 00000000 00000000 00000000 00000000 00000000
--//0x00000231 = 561
--//其他类似,不再查询,视乎第4-7字节也存在某种规律,仅仅出现80B38F00,00B38F00。

3.看看library cache mutex相关的chunk:
SYS@book> select count(*),KSMCHPAR from x$ksmsp where KSMCHCOM='KGLSG'  and KSMCHSIZ=12304 group by KSMCHPAR;
  COUNT(*) KSMCHPAR
---------- ----------------
        31 000000006CC04000
       339 000000006C804000
       142 000000006C434000

SYS@book> select * from x$ksmsp where KSMCHCOM='KGLSG'  and KSMCHSIZ=12304 and rownum<=3;
ADDR                   INDX    INST_ID     CON_ID   KSMCHIDX   KSMCHDUR KSMCHCOM         KSMCHPTR           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR
---------------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------
00007F0D14B3CEE0      76990          1          1          1          1 KGLSG            000000006CFFB5C0      12304 perm              0 000000006CC04000
00007F0D14B3CE78      76991          1          1          1          1 KGLSG            000000006CFF85B0      12304 perm              0 000000006CC04000
00007F0D14B3CE10      76992          1          1          1          1 KGLSG            000000006CFF55A0      12304 perm              0 000000006CC04000

SYS@book> @ fchaz 000000006CFF55A0
LOC KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
--- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- -----------------
SGA 000000006CFF55A0          1          1 KGLSG                 12304 perm              0 000000006CC04000 000000006CFF55A0 000000006CFF85B0

SYS@book> @ opeek 000000006CFF55A0 32 0
[06CFF55A0, 06CFF55C0) = 00003011 00B38F00 17ADF8D0 00000000 6CFF55B0 00000000 6CFF55B0 00000000
--//0x00003011 = 12305

SYS@book> @ fchaz 000000006CFF85B0

LOC KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
--- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- -----------------
SGA 000000006CFF85B0          1          1 KGLSG                 12304 perm              0 000000006CC04000 000000006CFF85B0 000000006CFFB5C0

SYS@book> @ opeek 000000006CFF85B0 32 0
[06CFF85B0, 06CFF85D0) = 00003011 00B38F00 17ADF8D0 00000000 6CFF85C0 00000000 6CFF85C0 00000000
--//00003011 = 12305



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

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

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969578