[20260812]简单探究row cache mutex的相关问题.txt

[20260812]简单探究row cache mutex的相关问题.txt

--//继续昨天的探究.
--//假设一个表scott.dept,对象类型dc_objects,oracle如何确定那些chunk上寻找row cache mutex以及row cache hash呢?  必须还
--//有chunk记录这些信息.

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.分析:
SELECT a.*
      ,CASE
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) = 0 THEN (KSMCHSIZ - 16) / 24
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) <> 0 THEN (KSMCHSIZ - 16) / 4
          WHEN ksmchcom = 'row cache hash' AND MOD (KSMCHSIZ - 16, 16) = 0 THEN (KSMCHSIZ - 16) / 16
       END
          buckets
  FROM x$ksmsp a
 WHERE KSMCHCOM like 'row cache %' ;

ADDR                   INDX    INST_ID     CON_ID   KSMCHIDX   KSMCHDUR KSMCHCOM         KSMCHPTR           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR            BUCKETS
---------------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ---------------- ----------
...
00007FD9EB702A80      99864          1          1          1          1 row cache mutex  00000000760C3958       1040 perm              0 0000000076081000        256
00007FD9EB702A18      99865          1          1          1          1 row cache mutex  00000000760C2148       6160 perm              0 0000000076081000        256
00007FD9EB7029B0      99866          1          1          1          1 row cache hash   00000000760C1138       4112 perm              0 0000000076081000        256
...
--//单独拿其中一段看看,注我的测试环境每次重启该地址不会变化的,我没有修改sga相关配置.
--//以前11下可以使用x$ksmmem视图查询,但是21c仅仅取其中1个共享内存段:
YS@book> select max(ADDR),min(addr)  from x$ksmmem ;
MAX(ADDR)        MIN(ADDR)
---------------- ----------------
000000006093C7F0 0000000060000000

$ pmap -x $(pgrep pmon) | egrep  -i "sysv|^Address"
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000060000000   10240       0       0 rw-s- SYSV00000000 (deleted)
0000000061000000 1114112       0       0 rw-s- SYSV00000000 (deleted)
00000000a5000000    8192       0       0 rw-s- SYSV00000000 (deleted)
00000000a6000000    2048       0       0 rw-s- SYSVafa94c20 (deleted)
--//仅仅查询到0000000060000000这个内存段,真正需要查询的信息在0000000061000000.

--//21c可以尝试使用dumpsga转储sga信息:

$ mdkir sga
$ export DUMPSGA_DIR=/home/oracle/sga
$ cd sga
$ dumpsga
$ cd $DUMPSGA_DIR/
$ ll

 $ ll -R $DUMPSGA_DIR
/home/oracle/sga:
total 0
drwxr-x---. 2 oracle oinstall 87 2026-08-12 16:41:30 Aug_12_16:41:17_2026

'/home/oracle/sga/Aug_12_16:41:17_2026':
total 1134596
-rw-rw----. 1 oracle oinstall   10485760 2026-08-12 16:41:30 60000000
-rw-rw----. 1 oracle oinstall 1140850688 2026-08-12 16:41:17 61000000
-rw-rw----. 1 oracle oinstall    8388608 2026-08-12 16:41:30 a5000000
-rw-rw----. 1 oracle oinstall    2097152 2026-08-12 16:41:30 a6000000
-rw-rw----. 1 oracle oinstall       1752 2026-08-12 16:41:30 diagmdata
--//建立一个带时间戳的目录,里面包含如上文件,命名方式很容易看出与前面pmap -x 的输出的Address相关.通过文件大小也可以相互验
--//证.

--//将前面字段KSMCHPTR的3个地址分别加上0x10(16).
0x00000000760C3958 + 0x10  = 0x760c3968
0x00000000760C2148 + 0x10  = 0x760c2158
0x00000000760C1138 + 0x10  = 0x760c1148

--//根据地址0x760c3948,很容易确定在61000000文件中.

$ cd Aug_12_16\:41\:17_2026/

$ od -t x8  -A x -w64  61000000 | egrep -i "00000000760c3968|00000000760c2158|00000000760c1148"
150c1080 00000000760c1148 0000000000000000 0000000000000000 00000000774c9238 0000000000000000 00000000760c1130 00000000760c2158 00000000760c3968
         ~~~~~~~~~~~~~~~~                                                                                      ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
150c1140 0000000016b4e6b4 00000000760c1148 00000000760c1148 00000000760c1158 00000000760c1158 00000000760c1168 00000000760c1168 00000000760c1178
                          ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

--//注:使用下划线表示过滤查询的结果.
--//位于 0x150c1080+0x0000000061000000 = 0x760c1080,0x150c1140+0x0000000061000000  = 0x760c1140.
SYS@book> @ fchaz 0x760c1080
LOC  KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM                           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
---- ---------------- ---------- ---------- -------------------------------- ---------- -------- ---------- ---------------- ---------------- -----------------
VSGA 00000000760C1030          1          1 row cache                               144 perm              0 0000000076081000 00000000760C1030 00000000760C10C0

SYS@book> @ fchaz 0x760c1140
LOC  KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM                           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
---- ---------------- ---------- ---------- -------------------------------- ---------- -------- ---------- ---------------- ---------------- -----------------
VSGA 00000000760C1138          1          1 row cache hash                         4112 perm              0 0000000076081000 00000000760C1138 00000000760C2148
--//后面出现2次位于row cache hash,表示bucket=0的没有对象.

--//可以发现三个地址的信息在KSMCHSIZ=144的chunk中.KSMCHPTR_BEGIN=00000000760C1030
SYS@book> @ opeek 00000000760C1030 144 1
New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3070_0001.trc
[0760C1030, 0760C10C0) = 00000091 00B38F00 16B4E6AA 00000000 760C10D0 00000000 760C1118 00000000 760C10E8 00000000 760C1100 00000000 01900001 00000028 ...

--//查看转储文件:
Processing Oradebug command 'peek 0x00000000760c1030 144 1'
[0760C1030, 0760C10C0) = 00000091 00B38F00 16B4E6AA 00000000 760C10D0 ...
Dump of memory from 0x0760C1044 to 0x0760C10C0
0760C1040          00000000 760C1118 00000000      [.......v....]
0760C1050 760C10E8 00000000 760C1100 00000000  [...v.......v....]
0760C1060 01900001 00000028 16B4E808 00000000  [....(...........]
0760C1070 00000011 00000000 00000100 00000000  [................]
                            ++++++++
0760C1080 760C1148 00000000 00000000 00000000  [H..v............]
          ~~~~~~~~~~~~~~~~       
0760C1090 00000000 00000000 774C9238 00000000  [........8.Lw....]
0760C10A0 00000000 00000000 760C1130 00000000  [........0..v....]
0760C10B0 760C2158 00000000 760C3968 00000000  [X!.v....h9.v....]
          ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
*** 2026-08-13T15:45:32.889509+08:00 (CDB$ROOT(1))
--//加号指向的信息猜测表示BUCKETS的大小,换算十进制表示256.
--//偏移0x0760C1078-0x0760C1030 = 0x48 = 72 。

SYS@book> select count(*) from x$ksmsp where KSMCHSIZ=144 and KSMCHCOM='row cache';
  COUNT(*)
----------
        62
--//又是正好等于62.

--//再次改写前面写的sql语句:
$ cat row_cache.sql
column INDX format 999999
column INST_ID format 9999999
column con_id format 99999
column kSMCHIDX format 99999999
column KSMCHDUR format 99999999
column KSMCHCOM format a15
column KSMCHTYP format 99999999
column BUCKETS format 999999

SELECT a.*
      ,CASE
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) = 0 THEN (KSMCHSIZ - 16) / 24
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) <> 0 THEN (KSMCHSIZ - 16) / 4
          WHEN ksmchcom = 'row cache hash' AND MOD (KSMCHSIZ - 16, 16) = 0 THEN (KSMCHSIZ - 16) / 16
       END
          buckets
      ,a.KSMCHPTR KSMCHPTR_BEGIN
      ,TO_CHAR (TO_NUMBER (a.KSMCHPTR, 'XXXXXXXXXXXXXXXX') + a.KSMCHSIZ, 'FM0XXXXXXXXXXXXXXX') "KSMCHPTR_END+1"
  FROM x$ksmsp a
 WHERE KSMCHCOM LIKE 'row cache %' OR (KSMCHCOM = 'row cache' AND (KSMCHSIZ = 144 OR ksmchsiz = 24 or ksmchsiz=32));

SYS@book> @ row_cache

ADDR                INDX  INST_ID CON_ID  KSMCHIDX  KSMCHDUR KSMCHCOM        KSMCHPTR           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR         BUCKETS KSMCHPTR_BEGIN   KSMCHPTR_END+1
---------------- ------- -------- ------ --------- --------- --------------- ---------------- ---------- -------- --------- ---------------- ------- ---------------- -----------------
00007F6035EE7C80  101105        1      1         1         1 row cache mutex 0000000077AD7C78    1572880 perm             0 0000000077004000   65536 0000000077AD7C78 0000000077C57C88
00007F6035EE7C18  101106        1      1         1         1 row cache hash  00000000779D7C68    1048592 perm             0 0000000077004000   65536 00000000779D7C68 0000000077AD7C78
00007F6035EE7BB0  101107        1      1         1         1 row cache       00000000779D7C50         24 perm             0 0000000077004000         00000000779D7C50 00000000779D7C68
00007F6035EE7B48  101108        1      1         1         1 row cache       00000000779D7C38         24 perm             0 0000000077004000         00000000779D7C38 00000000779D7C50
00007F6035EE7AE0  101109        1      1         1         1 row cache       00000000779D7C20         24 perm             0 0000000077004000         00000000779D7C20 00000000779D7C38
00007F6035EE7A78  101110        1      1         1         1 row cache       00000000779D7C08         24 perm             0 0000000077004000         00000000779D7C08 00000000779D7C20
00007F6035EE7A10  101111        1      1         1         1 row cache       00000000779D7BF0         24 perm             0 0000000077004000         00000000779D7BF0 00000000779D7C08
00007F6035EE79A8  101112        1      1         1         1 row cache       00000000779D7B60        144 perm             0 0000000077004000         00000000779D7B60 00000000779D7BF0
00007F6035EE7940  101113        1      1         1         1 row cache mutex 00000000779D7950        528 perm             0 0000000077004000     128 00000000779D7950 00000000779D7B60
00007F6035EE78D8  101114        1      1         1         1 row cache mutex 00000000779D6D40       3088 perm             0 0000000077004000     128 00000000779D6D40 00000000779D7950
00007F6035EE7870  101115        1      1         1         1 row cache hash  00000000779D6530       2064 perm             0 0000000077004000     128 00000000779D6530 00000000779D6D40
00007F6035EE7808  101116        1      1         1         1 row cache       00000000779D6518         24 perm             0 0000000077004000         00000000779D6518 00000000779D6530
00007F6035EE77A0  101117        1      1         1         1 row cache       00000000779D6500         24 perm             0 0000000077004000         00000000779D6500 00000000779D6518
00007F6035EE7738  101118        1      1         1         1 row cache       00000000779D64E8         24 perm             0 0000000077004000         00000000779D64E8 00000000779D6500
00007F6035EE76D0  101119        1      1         1         1 row cache       00000000779D64D0         24 perm             0 0000000077004000         00000000779D64D0 00000000779D64E8
00007F6035EE7668  101120        1      1         1         1 row cache       00000000779D64B8         24 perm             0 0000000077004000         00000000779D64B8 00000000779D64D0
00007F6035EE7600  101121        1      1         1         1 row cache       00000000779D6428        144 perm             0 0000000077004000         00000000779D6428 00000000779D64B8
....
00007F6035EE5108  101212        1      1         1         1 row cache mutex 000000007756AB60      65552 perm             0 0000000077004000   16384 000000007756AB60 000000007757AB70
00007F6035EE50A0  101213        1      1         1         1 row cache mutex 000000007750AB50     393232 perm             0 0000000077004000   16384 000000007750AB50 000000007756AB60
00007F6035EE5038  101214        1      1         1         1 row cache hash  00000000774CAB40     262160 perm             0 0000000077004000   16384 00000000774CAB40 000000007750AB50
00007F6035EE4FD0  101215        1      1         1         1 row cache       00000000774CAB28         24 perm             0 0000000077004000         00000000774CAB28 00000000774CAB40
00007F6035EE4F68  101216        1      1         1         1 row cache       00000000774CAB10         24 perm             0 0000000077004000         00000000774CAB10 00000000774CAB28
00007F6035EE4F00  101217        1      1         1         1 row cache       00000000774CAAF8         24 perm             0 0000000077004000         00000000774CAAF8 00000000774CAB10
00007F6035EE4E98  101218        1      1         1         1 row cache       00000000774CAAE0         24 perm             0 0000000077004000         00000000774CAAE0 00000000774CAAF8
00007F6035EE4E30  101219        1      1         1         1 row cache       00000000774CAAC8         24 perm             0 0000000077004000         00000000774CAAC8 00000000774CAAE0
00007F6035EE4DC8  101220        1      1         1         1 row cache       00000000774CAA38        144 perm             0 0000000077004000         00000000774CAA38 00000000774CAAC8
--//地址出现跳跃,两者的KSMCHPAR不同。使用fchaz 查询@ fchaz 0000000076081000,@ fchaz 0000000077004000,没有记录返回的。
00007F6035EC12E0  102623        1      1         1         1 row cache       0000000076A46BA8         24 perm             0 0000000076081000         0000000076A46BA8 0000000076A46BC0
00007F6035EC1278  102624        1      1         1         1 row cache       0000000076A46B88         32 perm             0 0000000076081000         0000000076A46B88 0000000076A46BA8
00007F6035EC1210  102625        1      1         1         1 row cache       0000000076A46B70         24 perm             0 0000000076081000         0000000076A46B70 0000000076A46B88
00007F6035EC11A8  102626        1      1         1         1 row cache       0000000076A46B50         32 perm             0 0000000076081000         0000000076A46B50 0000000076A46B70
00007F6035EC1140  102627        1      1         1         1 row cache       0000000076A46B30         32 perm             0 0000000076081000         0000000076A46B30 0000000076A46B50
00007F6035EC10D8  102628        1      1         1         1 row cache       0000000076A46B18         24 perm             0 0000000076081000         0000000076A46B18 0000000076A46B30
00007F6035EC1008  102630        1      1         1         1 row cache mutex 0000000076A469C8        272 perm             0 0000000076081000      64 0000000076A469C8 0000000076A46AD8 --//0000000076A46AD8 - 0000000076A46B18 有1个64字节的chunk。
00007F6035EC0FA0  102631        1      1         1         1 row cache mutex 0000000076A463B8       1552 perm             0 0000000076081000      64 0000000076A463B8 0000000076A469C8
00007F6035EC0F38  102632        1      1         1         1 row cache hash  0000000076A45FA8       1040 perm             0 0000000076081000      64 0000000076A45FA8 0000000076A463B8
00007F6035EC0ED0  102633        1      1         1         1 row cache       0000000076A45F90         24 perm             0 0000000076081000         0000000076A45F90 0000000076A45FA8
00007F6035EC0E68  102634        1      1         1         1 row cache       0000000076A45F78         24 perm             0 0000000076081000         0000000076A45F78 0000000076A45F90
00007F6035EC0E00  102635        1      1         1         1 row cache       0000000076A45F60         24 perm             0 0000000076081000         0000000076A45F60 0000000076A45F78
00007F6035EC0D98  102636        1      1         1         1 row cache       0000000076A45F48         24 perm             0 0000000076081000         0000000076A45F48 0000000076A45F60
00007F6035EC0D30  102637        1      1         1         1 row cache       0000000076A45F30         24 perm             0 0000000076081000         0000000076A45F30 0000000076A45F48
00007F6035EC0CC8  102638        1      1         1         1 row cache       0000000076A45EA0        144 perm             0 0000000076081000         0000000076A45EA0 0000000076A45F30
....
00007F6035EB6088  103062        1      1         1         1 row cache mutex 00000000760C3958       1040 perm             0 0000000076081000     256 00000000760C3958 00000000760C3D68
00007F6035EB6020  103063        1      1         1         1 row cache mutex 00000000760C2148       6160 perm             0 0000000076081000     256 00000000760C2148 00000000760C3958
00007F6035EB5FB8  103064        1      1         1         1 row cache hash  00000000760C1138       4112 perm             0 0000000076081000     256 00000000760C1138 00000000760C2148
00007F6035EB5F50  103065        1      1         1         1 row cache       00000000760C1120         24 perm             0 0000000076081000         00000000760C1120 00000000760C1138
00007F6035EB5EE8  103066        1      1         1         1 row cache       00000000760C1108         24 perm             0 0000000076081000         00000000760C1108 00000000760C1120
00007F6035EB5E80  103067        1      1         1         1 row cache       00000000760C10F0         24 perm             0 0000000076081000         00000000760C10F0 00000000760C1108
00007F6035EB5E18  103068        1      1         1         1 row cache       00000000760C10D8         24 perm             0 0000000076081000         00000000760C10D8 00000000760C10F0
00007F6035EB5DB0  103069        1      1         1         1 row cache       00000000760C10C0         24 perm             0 0000000076081000         00000000760C10C0 00000000760C10D8
00007F6035EB5D48  103070        1      1         1         1 row cache       00000000760C1030        144 perm             0 0000000076081000         00000000760C1030 00000000760C10C0
00007F6035EB5CE0  103071        1      1         1         1 row cache mutex 0000000076081020     262160 perm             0 0000000076081000   65536 0000000076081020 00000000760C1030
564 rows selected.
--//可以发现许多情况中间出现5个24大小的chunk,也有小部分中间出现32大小的chunk。大部分都是5个。
--//后记:直接执行如下:
SELECT a.*
      ,CASE
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) = 0 THEN (KSMCHSIZ - 16) / 24
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) <> 0 THEN (KSMCHSIZ - 16) / 4
          WHEN ksmchcom = 'row cache hash' AND MOD (KSMCHSIZ - 16, 16) = 0 THEN (KSMCHSIZ - 16) / 16
       END
          buckets
      ,a.KSMCHPTR KSMCHPTR_BEGIN
      ,TO_CHAR (TO_NUMBER (a.KSMCHPTR, 'XXXXXXXXXXXXXXXX') + a.KSMCHSIZ, 'FM0XXXXXXXXXXXXXXX') "KSMCHPTR_END+1"
  FROM x$ksmsp a
   WHERE KSMCHCOM LIKE 'row cache%';
--//从下往上看,chunk都是连接在一起的.
--//补充可以执行如下验证:
$ cat row_cache2.sql
/* Formatted on 2026-08-14 17:02:56 (QP5 v5.277) */
WITH x1
        AS (  SELECT a.*
                    ,CASE
                        WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) = 0 THEN (KSMCHSIZ - 16) / 24
                        WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) <> 0 THEN (KSMCHSIZ - 16) / 4
                        WHEN ksmchcom = 'row cache hash' AND MOD (KSMCHSIZ - 16, 16) = 0 THEN (KSMCHSIZ - 16) / 16
                     END
                        buckets
                    ,a.KSMCHPTR KSMCHPTR_BEGIN
                    ,TO_CHAR (TO_NUMBER (a.KSMCHPTR, 'XXXXXXXXXXXXXXXX') + a.KSMCHSIZ, 'FM0XXXXXXXXXXXXXXX')
                        "KSMCHPTR_END+1"
                FROM x$ksmsp a
               WHERE    KSMCHCOM LIKE 'row cache%'
                    -- OR (KSMCHCOM = 'row cache' AND (KSMCHSIZ = 144 OR ksmchsiz = 24 OR ksmchsiz = 32 or ksmchsiz=64))
            ORDER BY 15)
    ,x2
        AS (SELECT x1.*
                  ,"KSMCHPTR_END+1" KSMCHPTR_END
                  ,LEAD (KSMCHPTR_BEGIN, 1) OVER (ORDER BY KSMCHPTR_BEGIN) KSMCHPTR_next
              FROM x1)
SELECT *
  FROM x2
 WHERE KSMCHPTR_END <> KSMCHPTR_next;

SYS@book> @ row_cache2
ADDR               INDX  INST_ID CON_ID  KSMCHIDX  KSMCHDUR KSMCHCOM                         KSMCHPTR           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR         BUCKETS KSMCHPTR_BEGIN   KSMCHPTR_END+1    KSMCHPTR_END      KSMCHPTR_NEXT
---------------- ------ -------- ------ --------- --------- -------------------------------- ---------------- ---------- -------- --------- ---------------- ------- ---------------- ----------------- ----------------- ----------------
00007F58360FF660  98876        1      1         1         1 row cache                        0000000076A46BA8         24 perm             0 0000000076081000         0000000076A46BA8 0000000076A46BC0  0000000076A46BC0  00000000774C8628
--//出现地址跳跃的地方是两者的KSMCHPAR不同,KSMCHPAR=0000000077004000,0000000076081000

SYS@book> select * from x$ksmsp where KSMCHSIZ=144 and KSMCHCOM='row cache';
ADDR                INDX  INST_ID CON_ID  KSMCHIDX  KSMCHDUR KSMCHCOM   KSMCHPTR           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR
---------------- ------- -------- ------ --------- --------- ---------- ---------------- ---------- -------- --------- ----------------
00007F6035F2F6D8  101085        1      1         1         1 row cache  00000000779D7B60        144 perm             0 0000000077004000
00007F6035F2F330  101094        1      1         1         1 row cache  00000000779D6428        144 perm             0 0000000077004000
00007F6035F2EF88  101103        1      1         1         1 row cache  00000000779AA2F0        144 perm             0 0000000077004000
00007F6035F2EBE0  101112        1      1         1         1 row cache  00000000779A49B8        144 perm             0 0000000077004000
00007F6035F2E838  101121        1      1         1         1 row cache  0000000077844880        144 perm             0 0000000077004000
00007F6035F2E490  101130        1      1         1         1 row cache  00000000776E4740        144 perm             0 0000000077004000
00007F6035F2E0E8  101139        1      1         1         1 row cache  00000000776E3B08        144 perm             0 0000000077004000
00007F6035F2DD40  101148        1      1         1         1 row cache  00000000776E0DD0        144 perm             0 0000000077004000
00007F6035F2D998  101157        1      1         1         1 row cache  00000000776E0718        144 perm             0 0000000077004000
00007F6035F2D5F0  101166        1      1         1         1 row cache  00000000775805E0        144 perm             0 0000000077004000
00007F6035F2D248  101175        1      1         1         1 row cache  000000007757D8A8        144 perm             0 0000000077004000
00007F6035F2CEA0  101184        1      1         1         1 row cache  000000007757AB70        144 perm             0 0000000077004000
00007F6035F2CAF8  101193        1      1         1         1 row cache  00000000774CAA38        144 perm             0 0000000077004000
00007F6035F089F8  102611        1      1         1         1 row cache  0000000076A45EA0        144 perm             0 0000000076081000
00007F6035F08650  102620        1      1         1         1 row cache  0000000076A45268        144 perm             0 0000000076081000
00007F6035F082A8  102629        1      1         1         1 row cache  0000000076A44630        144 perm             0 0000000076081000
00007F6035F07F00  102638        1      1         1         1 row cache  0000000076A439F8        144 perm             0 0000000076081000
00007F6035F07B58  102647        1      1         1         1 row cache  0000000076A40CC0        144 perm             0 0000000076081000
00007F6035F077B0  102656        1      1         1         1 row cache  0000000076A3DF88        144 perm             0 0000000076081000
00007F6035F07408  102665        1      1         1         1 row cache  0000000076A38650        144 perm             0 0000000076081000
00007F6035F07060  102674        1      1         1         1 row cache  0000000076A384E8        144 perm             0 0000000076081000
00007F6035F06CB8  102683        1      1         1         1 row cache  0000000076A357B0        144 perm             0 0000000076081000
00007F6035F06910  102692        1      1         1         1 row cache  0000000076A2FE78        144 perm             0 0000000076081000
00007F6035F06568  102701        1      1         1         1 row cache  0000000076A2E740        144 perm             0 0000000076081000
00007F6035F061C0  102710        1      1         1         1 row cache  0000000076A28E08        144 perm             0 0000000076081000
00007F6035F05E18  102719        1      1         1         1 row cache  0000000076A234D0        144 perm             0 0000000076081000
00007F6035F05A70  102728        1      1         1         1 row cache  0000000076A1DB98        144 perm             0 0000000076081000
00007F6035F056C8  102737        1      1         1         1 row cache  0000000076A18260        144 perm             0 0000000076081000
00007F6035F05320  102746        1      1         1         1 row cache  0000000076A12928        144 perm             0 0000000076081000
00007F6035F04F78  102755        1      1         1         1 row cache  0000000076A0CFF0        144 perm             0 0000000076081000
00007F6035F04BD0  102764        1      1         1         1 row cache  0000000076A076B8        144 perm             0 0000000076081000
00007F6035F04828  102773        1      1         1         1 row cache  0000000076A01D80        144 perm             0 0000000076081000
00007F6035F04480  102782        1      1         1         1 row cache  00000000769FC448        144 perm             0 0000000076081000
00007F6035F040D8  102791        1      1         1         1 row cache  000000007694C310        144 perm             0 0000000076081000
00007F6035F03D30  102800        1      1         1         1 row cache  000000007689C1D8        144 perm             0 0000000076081000
00007F6035F03988  102809        1      1         1         1 row cache  00000000767EC0A0        144 perm             0 0000000076081000
00007F6035F035E0  102818        1      1         1         1 row cache  000000007668BF68        144 perm             0 0000000076081000
00007F6035F03238  102827        1      1         1         1 row cache  000000007652BE30        144 perm             0 0000000076081000
00007F6035F02E90  102836        1      1         1         1 row cache  00000000763CBCF8        144 perm             0 0000000076081000
00007F6035F02AE8  102845        1      1         1         1 row cache  000000007626BBC0        144 perm             0 0000000076081000
00007F6035F02740  102854        1      1         1         1 row cache  0000000076266288        144 perm             0 0000000076081000
00007F6035F02398  102863        1      1         1         1 row cache  0000000076263550        144 perm             0 0000000076081000
00007F6035F01FF0  102872        1      1         1         1 row cache  0000000076260818        144 perm             0 0000000076081000
00007F6035F01C48  102881        1      1         1         1 row cache  000000007625DAE0        144 perm             0 0000000076081000
00007F6035F018A0  102890        1      1         1         1 row cache  000000007625ADA8        144 perm             0 0000000076081000
00007F6035F014F8  102899        1      1         1         1 row cache  0000000076255470        144 perm             0 0000000076081000
00007F6035F01150  102908        1      1         1         1 row cache  0000000076252738        144 perm             0 0000000076081000
00007F6035F00DA8  102917        1      1         1         1 row cache  000000007624FA00        144 perm             0 0000000076081000
00007F6035F00A00  102926        1      1         1         1 row cache  000000007624CCC8        144 perm             0 0000000076081000
00007F6035F00658  102935        1      1         1         1 row cache  0000000076247390        144 perm             0 0000000076081000
00007F6035F002B0  102944        1      1         1         1 row cache  0000000076244658        144 perm             0 0000000076081000
00007F6035EFFE18  102953        1      1         1         1 row cache  0000000076241920        144 perm             0 0000000076081000
00007F6035EFFA70  102962        1      1         1         1 row cache  00000000760E17E8        144 perm             0 0000000076081000
00007F6035EFF6C8  102971        1      1         1         1 row cache  00000000760DEAB0        144 perm             0 0000000076081000
00007F6035EFF320  102980        1      1         1         1 row cache  00000000760DBD78        144 perm             0 0000000076081000
00007F6035EFEF78  102989        1      1         1         1 row cache  00000000760DB980        144 perm             0 0000000076081000
00007F6035EFEBD0  102998        1      1         1         1 row cache  00000000760DAD48        144 perm             0 0000000076081000
00007F6035EFE828  103007        1      1         1         1 row cache  00000000760DA110        144 perm             0 0000000076081000
00007F6035EFE480  103016        1      1         1         1 row cache  00000000760D47D8        144 perm             0 0000000076081000
00007F6035EFE0D8  103025        1      1         1         1 row cache  00000000760CEEA0        144 perm             0 0000000076081000
00007F6035EFDD30  103034        1      1         1         1 row cache  00000000760C3D68        144 perm             0 0000000076081000
00007F6035EFD988  103043        1      1         1         1 row cache  00000000760C1030        144 perm             0 0000000076081000
62 rows selected.
--//前面取2条记录,结尾取2条记录,KSMCHPT+0x16. 用于查询

$ od -t x8  -A x -w64  61000000 | egrep -i "00000000760C1040|00000000760C3D78|00000000779D7B70|00000000779D6438"
164c86c0 0000000076a2e750 00000000776e4750 0000000077844890 00000000779aa300 00000000779d6438 00000000760db990 00000000760da120 00000000779d7b70
164c8740 0000000076a38660 0000000076a28e18 0000000076a0d000 0000000076a12938 0000000076a18270 0000000076a1dba8 0000000076a234e0 00000000760c3d78
164c8800 00000000760e17f8 0000000076a2fe88 00000000779aa300 0000000076a01d90 0000000076a076c8 00000000760c1040 0000000076244668 0000000076a43a08

--//文件偏移量+ 加上0x0000000061000000。
SYS@book> @ fchaz 774c86c0
LOC  KSMCHPTR          KSMCHIDX  KSMCHDUR KSMCHCOM                           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
---- ---------------- --------- --------- -------------------------------- ---------- -------- --------- ---------------- ---------------- -----------------
VSGA 00000000774C8668         1         1 row cache                               544 perm             0 0000000077004000 00000000774C8668 00000000774C8888

SYS@book> @ fchaz 774c8800
LOC  KSMCHPTR          KSMCHIDX  KSMCHDUR KSMCHCOM                           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
---- ---------------- --------- --------- -------------------------------- ---------- -------- --------- ---------------- ---------------- -----------------
VSGA 00000000774C8668         1         1 row cache                               544 perm             0 0000000077004000 00000000774C8668 00000000774C8888
--//在同一个chunk里面,说明以上chunk大小等于144的地址保存在该chunk里面,大小等于544.
--// (544-16)/8  = 66, 一共66个地址。

SYS@book> @ opeek 00000000774C8668 544 1
New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3877_0001.trc
[0774C8668, 0774C8888) = 00000221 00B38F00 16B4E6AA 00000000 776E0728 00000000 7757AB80 00000000 775805F0 00000000 774CAA48 00000000 7757D8B8 00000000 ...

*** 2026-08-13T17:03:31.561361+08:00 (CDB$ROOT(1))
Processing Oradebug command 'peek 0x00000000774c8668 544 1'
[0774C8668, 0774C8888) = 00000221 00B38F00 16B4E6AA 00000000 776E0728 ...
Dump of memory from 0x0774C867C to 0x0774C8888
0774C8670                            00000000              [....]
0774C8680 7757AB80 00000000 775805F0 00000000  [..Ww......Xw....]
0774C8690 774CAA48 00000000 7757D8B8 00000000  [H.Lw......Ww....]
0774C86A0 776E0DE0 00000000 776E3B18 00000000  [..nw.....;nw....]
0774C86B0 776E4750 00000000 77844890 00000000  [PGnw.....H.w....]
                            ~~~~~~~~~~~~~~~~~
0774C86C0 76A2E750 00000000 776E4750 00000000  [P..v....PGnw....]
0774C86D0 77844890 00000000 779AA300 00000000  [.H.w.......w....]
0774C86E0 779D6438 00000000 760DB990 00000000  [8d.w.......v....]
0774C86F0 760DA120 00000000 779D7B70 00000000  [ ..v....p{.w....]
0774C8700 779A49C8 00000000 760D47E8 00000000  [.I.w.....G.v....]
0774C8710 760CEEB0 00000000 767EC0B0 00000000  [...v......~v....]
0774C8720 7689C1E8 00000000 76A384F8 00000000  [...v.......v....]
0774C8730 769FC458 00000000 76A357C0 00000000  [X..v.....W.v....]
0774C8740 76A38660 00000000 76A28E18 00000000  [`..v.......v....]
0774C8750 76A0D000 00000000 76A12938 00000000  [...v....8).v....]
0774C8760 76A18270 00000000 76A1DBA8 00000000  [p..v.......v....]
0774C8770 76A234E0 00000000 760C3D78 00000000  [.4.v....x=.v....]
0774C8780 7624CCD8 00000000 762473A0 00000000  [..$v.....s$v....]
0774C8790 76266298 00000000 7624FA10 00000000  [.b&v......$v....]
0774C87A0 76252748 00000000 76255480 00000000  [H'%v.....T%v....]
0774C87B0 7625ADB8 00000000 76A3DF98 00000000  [..%v.......v....]
0774C87C0 76A40CD0 00000000 776E4750 00000000  [...v....PGnw....]
0774C87D0 7625DAF0 00000000 76260828 00000000  [..%v....(.&v....]
0774C87E0 76263560 00000000 76241930 00000000  [`5&v....0.$v....]
0774C87F0 760DBD88 00000000 760DEAC0 00000000  [...v.......v....]
0774C8800 760E17F8 00000000 76A2FE88 00000000  [...v.......v....]
0774C8810 779AA300 00000000 76A01D90 00000000  [...w.......v....]
0774C8820 76A076C8 00000000 760C1040 00000000  [.v.v....@..v....]
0774C8830 76244668 00000000 76A43A08 00000000  [hF$v.....:.v....]
0774C8840 76A44640 00000000 76A45278 00000000  [@F.v....xR.v....]
0774C8850 76A45EB0 00000000 760DAD58 00000000  [.^.v....X..v....]
0774C8860 7626BBD0 00000000 763CBD08 00000000  [..&v......<v....]
0774C8870 7652BE40 00000000 7694C320 00000000  [@.Rv.... ..v....]
0774C8880 7668BF78 00000000                    [x.hv....]
--//(544-16)/8  = 66,也就是存在66个地址。

--//如果直接查看文件61000000。
$ od -t x8 -j $[0x774C8668-0x61000000+0x10] -N $[544-16] -A x -w8 61000000 | nl -v 0 -ba
     0  164c8678 00000000776e0728
     1  164c8680 000000007757ab80
     2  164c8688 00000000775805f0
     3  164c8690 00000000774caa48
     4  164c8698 000000007757d8b8
     5  164c86a0 00000000776e0de0
     6  164c86a8 00000000776e3b18
     7  164c86b0 00000000776e4750
     8  164c86b8 0000000077844890
     9  164c86c0 0000000076a2e750
    10  164c86c8 00000000776e4750
    11  164c86d0 0000000077844890
    12  164c86d8 00000000779aa300
    13  164c86e0 00000000779d6438
    14  164c86e8 00000000760db990
    15  164c86f0 00000000760da120
    16  164c86f8 00000000779d7b70
    17  164c8700 00000000779a49c8
    18  164c8708 00000000760d47e8
    19  164c8710 00000000760ceeb0
    20  164c8718 00000000767ec0b0
    21  164c8720 000000007689c1e8
    22  164c8728 0000000076a384f8
    23  164c8730 00000000769fc458
    24  164c8738 0000000076a357c0
    25  164c8740 0000000076a38660
    26  164c8748 0000000076a28e18
    27  164c8750 0000000076a0d000
    28  164c8758 0000000076a12938
    29  164c8760 0000000076a18270
    30  164c8768 0000000076a1dba8
    31  164c8770 0000000076a234e0
    32  164c8778 00000000760c3d78
    33  164c8780 000000007624ccd8
    34  164c8788 00000000762473a0
    35  164c8790 0000000076266298
    36  164c8798 000000007624fa10
    37  164c87a0 0000000076252748
    38  164c87a8 0000000076255480
    39  164c87b0 000000007625adb8
    40  164c87b8 0000000076a3df98
    41  164c87c0 0000000076a40cd0
    42  164c87c8 00000000776e4750
    43  164c87d0 000000007625daf0
    44  164c87d8 0000000076260828
    45  164c87e0 0000000076263560
    46  164c87e8 0000000076241930
    47  164c87f0 00000000760dbd88
    48  164c87f8 00000000760deac0
    49  164c8800 00000000760e17f8
    50  164c8808 0000000076a2fe88
    51  164c8810 00000000779aa300
    52  164c8818 0000000076a01d90
    53  164c8820 0000000076a076c8
    54  164c8828 00000000760c1040
    55  164c8830 0000000076244668
    56  164c8838 0000000076a43a08
    57  164c8840 0000000076a44640
    58  164c8848 0000000076a45278
    59  164c8850 0000000076a45eb0
    60  164c8858 00000000760dad58
    61  164c8860 000000007626bbd0
    62  164c8868 00000000763cbd08
    63  164c8870 000000007652be40
    64  164c8878 000000007694c320
    65  164c8880 000000007668bf78
    66  164c8888
--//od 参数说明-t x8 8位一组,-j $[0x774C8668-0x61000000+0x10]表示开始位置,-N $[544-16]取长度,-A x表示文件偏移的16进
--//制显示,-w8显示宽度,相当于每行1个地址。

SYS@book> select min(CACHE#),max(cache#) from v$rowcache   order by 1 ;
MIN(CACHE#) MAX(CACHE#)
----------- -----------
          0          65

--//也就是这个row cache查询的起点(我猜测),比如查询dc_objects某个对象,知道cache#=8,对应的地址就是0x77844890(注意cache#从
--//0开始计数).

SYS@book> @ fchaz 77844890
LOC  KSMCHPTR          KSMCHIDX  KSMCHDUR KSMCHCOM                           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
---- ---------------- --------- --------- -------------------------------- ---------- -------- --------- ---------------- ---------------- -----------------
VSGA 0000000077844880         1         1 row cache                               144 perm             0 0000000077004000 0000000077844880 0000000077844910

--//通过这个chunk就可以知道关联的相关地址.

SYS@book> @ opeek 0000000077844880 144 1
New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3070_0002.trc
[077844880, 077844910) = 00000091 00B38F00 16B4E6AA 00000000 77844920 00000000 77844968 00000000 77844938 00000000 77844950 00000000 04200002 00010298 ...

*** 2026-08-13T17:16:51.628608+08:00 (CDB$ROOT(1))
Processing Oradebug command 'peek 0x0000000077844880 144 1'
[077844880, 077844910) = 00000091 00B38F00 16B4E6AA 00000000 77844920 ...
Dump of memory from 0x077844894 to 0x077844910
077844890          00000000 77844968 00000000      [....hI.w....]
0778448A0 77844938 00000000 77844950 00000000  [8I.w....PI.w....]
0778448B0 04200002 00010298 16B4E7B8 00000000  [.. .............]
0778448C0 0000000A 00000000 00008000 00000000  [................] --//0x00008000 = 32768
0778448D0 77844998 00000000 00000001 00000000  [.I.w............]
          ~~~~~~~~~~~~~~~~~
0778448E0 76A46B28 00000000 774C9058 00000000  [(k.v....X.Lw....]
0778448F0 00918700 00001D1B 77844980 00000000  [.........I.w....]
077844900 778C49A8 00000000 779849B8 00000000  [.I.w.....I.w....]
          ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
*** 2026-08-13T17:16:51.629138+08:00 (CDB$ROOT(1))

--//将上面下划线的地址减去0x10,就可以与如下KSMCHPTR
0x779849B8-0x10 = 0x00000000779849a8
0x778C49A8-0x10 = 0x00000000778c4998
0x77844998-0x10 = 0x0000000077844988

0x77844920-0x10 = 0x0000000077844910
0x77844968-0x10 = 0x0000000077844958
0x77844938-0x10 = 0x0000000077844928
0x77844950-0x10 = 0x0000000077844940
0x77844980-0x10 = 0x0000000077844970

--//单独拿cache_name='dc_objects' chunk看看,注我的测试环境每次重启该地址不会变化的,我没有修改sga相关配置:
SELECT a.*
      ,CASE
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) = 0 THEN (KSMCHSIZ - 16) / 24
          WHEN ksmchcom = 'row cache mutex' AND MOD (KSMCHSIZ - 16, 24) <> 0 THEN (KSMCHSIZ - 16) / 4
          WHEN ksmchcom = 'row cache hash' AND MOD (KSMCHSIZ - 16, 16) = 0 THEN (KSMCHSIZ - 16) / 16
       END
          buckets
      ,a.KSMCHPTR KSMCHPTR_BEGIN
      ,TO_CHAR (TO_NUMBER (a.KSMCHPTR, 'XXXXXXXXXXXXXXXX') + a.KSMCHSIZ, 'FM0XXXXXXXXXXXXXXX') "KSMCHPTR_END+1"
  FROM x$ksmsp a
 WHERE KSMCHCOM LIKE 'row cache %' OR (KSMCHCOM = 'row cache' AND (KSMCHSIZ = 144 OR ksmchsiz = 24 or ksmchsiz=32));

ADDR                INDX  INST_ID CON_ID  KSMCHIDX  KSMCHDUR KSMCHCOM        KSMCHPTR           KSMCHSIZ KSMCHCLS  KSMCHTYP KSMCHPAR         BUCKETS KSMCHPTR_BEGIN   KSMCHPTR_END+1
---------------- ------- -------- ------ --------- --------- --------------- ---------------- ---------- -------- --------- ---------------- ------- ---------------- -----------------
00007F6035EE6E48  101140        1      1         1         1 row cache mutex 00000000779849A8     131088 perm             0 0000000077004000   32768 00000000779849A8 00000000779A49B8
00007F6035EE6DE0  101141        1      1         1         1 row cache mutex 00000000778C4998     786448 perm             0 0000000077004000   32768 00000000778C4998 00000000779849A8
00007F6035EE6D78  101142        1      1         1         1 row cache hash  0000000077844988     524304 perm             0 0000000077004000   32768 0000000077844988 00000000778C4998
00007F6035EE6D10  101143        1      1         1         1 row cache       0000000077844970         24 perm             0 0000000077004000         0000000077844970 0000000077844988
00007F6035EE6CA8  101144        1      1         1         1 row cache       0000000077844958         24 perm             0 0000000077004000         0000000077844958 0000000077844970
00007F6035EE6C40  101145        1      1         1         1 row cache       0000000077844940         24 perm             0 0000000077004000         0000000077844940 0000000077844958
00007F6035EE6BD8  101146        1      1         1         1 row cache       0000000077844928         24 perm             0 0000000077004000         0000000077844928 0000000077844940
00007F6035EE6B70  101147        1      1         1         1 row cache       0000000077844910         24 perm             0 0000000077004000         0000000077844910 0000000077844928
00007F6035EE6B08  101148        1      1         1         1 row cache       0000000077844880        144 perm             0 0000000077004000         0000000077844880 0000000077844910
--//许多地址都能对上。

--//疑问:前面测试查询如下
SYS@book> select rownum cache# from dual connect by level <=65 minus select cache# from v$rowcache where type='PARENT';
    CACHE#
----------
         7
        42
        51
        11
--//type='PARENT' 不存在cache#=7.42.51,11.
--//补充:
SYS@book> select distinct cache#,type,parameter  from v$rowcache where cache# in (7,11,42,51);
    CACHE# TYPE                           PARAMETER
---------- ------------------------------ ------------------------------
         7 SUBORDINATE                    dc_users
--//存在 CACHE#=7,TYPE=SUBORDINATE,PARAMETER=dc_users。在type='PARENT',PARAMETER=dc_users,cache#=10.
SYS@book> select distinct cache#,cache_name  from v$rowcache_parent where cache# in (7,11,42,51);
    CACHE# CACHE_NAME
---------- --------------
        11 dc_objects
--//有一部分CACHE_NAME=dc_objects,cache#=11,似乎这些对象在v$fixed_table定义。
--//另外单独写一篇blog分析.

3.验证偏移72位置表示buckets数量:
SYS@book> select 'oradebug peek 0x'||TO_CHAR (TO_NUMBER (KSMCHPTR, 'XXXXXXXXXXXXXXXX') + 72, 'FM0XXXXXXXXXXXXXXX')||' 4' c40 from x$ksmsp where KSMCHSIZ=144 and KSMCHCOM='row cache';

C40
----------------------------------------
oradebug peek 0x00000000779D7BA8 4
oradebug peek 0x00000000779D6470 4
oradebug peek 0x00000000779AA338 4
oradebug peek 0x00000000779A4A00 4
oradebug peek 0x00000000778448C8 4
oradebug peek 0x00000000776E4788 4
oradebug peek 0x00000000776E3B50 4
oradebug peek 0x00000000776E0E18 4
oradebug peek 0x00000000776E0760 4
oradebug peek 0x0000000077580628 4
oradebug peek 0x000000007757D8F0 4
oradebug peek 0x000000007757ABB8 4
oradebug peek 0x00000000774CAA80 4
oradebug peek 0x0000000076A45EE8 4
oradebug peek 0x0000000076A452B0 4
oradebug peek 0x0000000076A44678 4
oradebug peek 0x0000000076A43A40 4
oradebug peek 0x0000000076A40D08 4
oradebug peek 0x0000000076A3DFD0 4
oradebug peek 0x0000000076A38698 4
oradebug peek 0x0000000076A38530 4
oradebug peek 0x0000000076A357F8 4
oradebug peek 0x0000000076A2FEC0 4
oradebug peek 0x0000000076A2E788 4
oradebug peek 0x0000000076A28E50 4
oradebug peek 0x0000000076A23518 4
oradebug peek 0x0000000076A1DBE0 4
oradebug peek 0x0000000076A182A8 4
oradebug peek 0x0000000076A12970 4
oradebug peek 0x0000000076A0D038 4
oradebug peek 0x0000000076A07700 4
oradebug peek 0x0000000076A01DC8 4
oradebug peek 0x00000000769FC490 4
oradebug peek 0x000000007694C358 4
oradebug peek 0x000000007689C220 4
oradebug peek 0x00000000767EC0E8 4
oradebug peek 0x000000007668BFB0 4
oradebug peek 0x000000007652BE78 4
oradebug peek 0x00000000763CBD40 4
oradebug peek 0x000000007626BC08 4
oradebug peek 0x00000000762662D0 4
oradebug peek 0x0000000076263598 4
oradebug peek 0x0000000076260860 4
oradebug peek 0x000000007625DB28 4
oradebug peek 0x000000007625ADF0 4
oradebug peek 0x00000000762554B8 4
oradebug peek 0x0000000076252780 4
oradebug peek 0x000000007624FA48 4
oradebug peek 0x000000007624CD10 4
oradebug peek 0x00000000762473D8 4
oradebug peek 0x00000000762446A0 4
oradebug peek 0x0000000076241968 4
oradebug peek 0x00000000760E1830 4
oradebug peek 0x00000000760DEAF8 4
oradebug peek 0x00000000760DBDC0 4
oradebug peek 0x00000000760DB9C8 4
oradebug peek 0x00000000760DAD90 4
oradebug peek 0x00000000760DA158 4
oradebug peek 0x00000000760D4820 4
oradebug peek 0x00000000760CEEE8 4
oradebug peek 0x00000000760C3DB0 4
oradebug peek 0x00000000760C1078 4
62 rows selected.

--//执行如下.
spool bucket.txt
oradebug setmypid
--//拷贝粘贴以上内容
...
spool off

$ grep "^\[" bucket.txt | awk '{print $NF}' |  awk '{print strtonum("0x"$0)}'
65536                         
128
4096
512
32768
32768
64
256
32
32768
256
256
16384
64
64
64
64
256
256
512
1
256
512
128
512
512
512
512
512
512
512
512
512
16384
16384
16384
32768
32768
32768
32768
512
256
256
256
256
512
256
256
256
512
256
256
32768
256
256
16
64
64
512
512
1024
256

--//单独取select a.*,(KSMCHSIZ-16)/24 buckets from x$ksmsp a where KSMCHCOM='row cache mutex' and mod(KSMCHSIZ-16,24)=0 ;
--//输出的最后一列,适当编辑保存q6.txt

$ diff  <(grep "^\[" bucket.txt | awk '{print $NF}' |  awk '{print strtonum("0x"$0)}') q6.txt
--//完全正确.
posted @ 2026-08-19 20:57  lfree  阅读(2)  评论(0)    收藏  举报