ITPub博客

首页 > 数据库 > Oracle > [20260824]数字字典对象hash的计算验证.txt

[20260824]数字字典对象hash的计算验证.txt

原创 Oracle 作者:lfree 时间:2026-08-27 21:08:49 0 删除 编辑

[20260824]数字字典对象hash的计算验证.txt

--//前面的测试已经猜测数据字典对象hash的大致计算方法。拿来验证看看。

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.

SYS@book> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         3 BOOK01P                        READ WRITE NO
--//Scott.dept表在pdb_name=BOOK01P里面。

$ cat ora_hash1.txt
select
 ora_hash('&&1',4294967295,&2) n20
,to_char(ora_hash('&1',4294967295,&2),'FM0xxxxxxxxxxxxxxx')  c20
from dual;

$ cat ora_hash2.txt
select
 ora_hash(UTL_RAW.cast_to_varchar2(hextoraw('&1')),4294967295,&2) n20
,to_char(ora_hash(UTL_RAW.cast_to_varchar2(hextoraw('&1')),4294967295,&2),'FM0xxxxxxxxxxxxxxx')  c20
from dual;

2.简单验证:
--//至少前面计算已经知道一种计算dc_objects对象hash值的方法,就是object_id,pdb_name的方式。
SCOTT@book01p> @ oname scott.^dept$
OWNER OBJECT_NAME OBJECT_TYPE SUBOBJECT_NAME CREATED             LAST_DDL_TIME       STATUS    DATA_OBJECT_ID  OBJECT_ID
----- ----------- ----------- -------------- ------------------- ------------------- --------- -------------- ----------
SCOTT DEPT        TABLE                      2026-06-25 09:20:13 2026-06-25 09:20:13 VALID              75828      75828

SCOTT@book01p> @ 10to16 75828
10 to 16 HEX (LOWER) 10 TO 16 HEX (UPPER) REVERSE16_LOWER      REVERSE16_UPPER
-------------------- -------------------- -------------------- --------------------
0000000000012834     0000000000012834     0x34280100-00000000  0X34280100-00000000
--//大小头对调就是0x34280100.

SCOTT@book01p> @ ora_hash2.txt 34280100 0
                  N20 C20
--------------------- --------------------
           2945036863 00000000af89b23f

SCOTT@book01p> @ ora_hash1.txt BOOK01P 2945036863
                  N20 C20
--------------------- --------------------
           4272700920 00000000feac3df8

--//4272700920 % 32768 = 15864,dept对象的hash=15864.

--//简单的执行desc dept,查询v$rowchache_parent就可以获得scott.dept数据字段信息。
SYS@book> @ dc/dc_objects "DC_OBJ_NAME='DEPT'"
USERNAME DC_OBJ_NAME KEY_STR_LEN HASH_HEX   INDX   HASH ADDRESS          CACHE# CACHE_NAME EXISTENT  LOCK_MODE LOCK_REQUEST SADDR            INST_LOCK_REQUEST INST_LOCK_RELEASE IN INST_LOC INST_LOC CON_ID
-------- ----------- ----------- -------- ------ ------ ---------------- ------ ---------- -------- ---------- ------------ ---------------- ----------------- ----------------- -- -------- -------- ------
SCOTT    DEPT                  4 0x3df8     7847  15864 00000000636752C0      8 dc_objects Y                 0            0 00                               0                 0    00       00            3
SCOTT    DEPT                  4 0x2271     3304   8817 00000000636752C0      8 dc_objects Y                 0            0 00                               0                 0    00       00            3

--//存在一条hash=15864记录,可以发现还存在另外一条记录hash值不同,也就是存在另外的算法,注意address相同,也就是两者指向的对
--//象相同.当然盲猜有点难度,直接使用前面写bpftrace脚本看看采用计算的信息.

3.继续:
SYS@book> alter system flush SHARED_POOL;
System altered.

SYS@book> @ dc/dc_objects "DC_OBJ_NAME='DEPT'"
no rows selected

--//session 1:
SCOTT@book01p> @ spid
==============================
SID                           : 30
SERIAL#                       : 52788
PROCESS                       : 3807
SERVER                        : DEDICATED
SPID                          : 3809
PID                           : 8
P_SERIAL#                     : 7
KILL_COMMAND                  : alter system kill session '30,52788' immediate;
PL/SQL procedure successfully completed.

--//window 1:
# bpftrace ./dc_hash.bt 3809

--//session 1:
SCOTT@book01p> @ desc dept
           Name                            Null?    Type
           ------------------------------- -------- ----------------------------
    1      DEPTNO                          NOT NULL NUMBER(2)
    2      DNAME                                    VARCHAR2(14)
    3      LOC                                      VARCHAR2(13)

--//window 1,输出一大堆信息。查看检索HASH=15864,8817的记录。
krqhsh Begin
[15:57:23] kgghash #11 pid=3809 hash_text=m\x00\x00\x00\x04\x00DEPT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 length=528 seed=0
[15:57:23] kgghash #11 pid=3809 return hash_value=000000001f71eba5 527559589 0000000000006ba5 27557
[15:57:23] kgghash #12 pid=3809 hash_text=BOOK01P length=7 seed=1f71eba5
[15:57:23] kgghash #12 pid=3809 return hash_value=000000000d782271 225976945 0000000000002271 8817
krqhsh End

krqhsh Begin
[15:57:23] kgghash #07 pid=3809 hash_text=4(\x01\x00 length=4 seed=0
[15:57:23] kgghash #07 pid=3809 return hash_value=00000000af89b23f 2945036863 000000000000323f 12863
[15:57:23] kgghash #08 pid=3809 hash_text=BOOK01P length=7 seed=af89b23f
[15:57:23] kgghash #08 pid=3809 return hash_value=00000000feac3df8 4272700920 0000000000003df8 15864
krqhsh End

--//bpftrace的buf有一个"缺陷",可显示的字符直接显示,hash=15864,显示的信息如下:
--//hash_text=4(\x01\x00

SYS@book> select to_char(ascii('4'),'xx') c10 ,to_char(ascii('('),'xx') c10 from dual ;
C10        C10
---------- ----------
 34         28
--//对应的raw就是 34280100,与前面的@ 10to16 75828输出一样。

SYS@book> @ ora_hash1.txt "4('||chr(1)||chr(0)||'" 0

                  N20 C20
--------------------- --------------------
           2945036863 00000000af89b23f

SCOTT@book01p> @ ora_hash2.txt 34280100 0
                  N20 C20
--------------------- --------------------
           2945036863 00000000af89b23f
--//两种方法计算一致。

--//解析 hash= 8817的情况:
--//直接输入raw字符串报错。
SYS@book> @ ora_hash2.txt 6d0000004... 0
string beginning "6d00000000..." is too long. maximum size is 239 characters.
--//参数1太长了。

--//使用gdb跟踪,跟踪脚本适当修改如下:
$ cat dc_hash.gdb
set pagination off

break kqrhsh
commands
    silent
    printf "=== kqrhsh BEGIN ===\n"
    continue
end

break *0x000000001501a2df
commands
    silent
    printf "=== kqrhsh END   ===\n\n"
    continue
end

#break kgghash
break kgghash if $rsi == 528 && $edx == 0
commands
    silent
    printf "kgghash(ptr=0x%lx, len=%lu, seed=0x%x)\n", $rdi, $rsi, $edx
#   printf "对齐检查: %s (偏移+%d)\n", ($rdi & 3) == 0 ? "4字节对齐" : "未对齐", $rdi & 3
    printf "原始数据: \n"
    x/s    $rdi
    x/528bx $rdi
#   printf "按uint32: 0x%08x 0x%08x\n\n", *(unsigned int*)$rdi, *(unsigned int*)($rdi+4)
#   printf "现在可以 stepi 单步跟踪,或用 finish 直接看返回值\n"
    continue
end

break *0x000000001532063b
commands
   silent
   printf "kgghash retuen value(rax) = 0x%016lx %ld , mod 32768 = 0x%08x %d\n\n", $rax,$rax, $rax & 0x7fff, $rax & 0x7fff
   #printf "低32位 eax = 0x%08x (期望 0xceb5d99e)\n", $eax
 continue
end

echo [+] Breakpoint set on kgghash, continuing...\n
continue

--//执行desc dept前加下跟踪进程spid=3174,执行如下:

$ gdb -f -p 3174 -x dc_hash.gdb

SYS@book> alter system flush SHARED_POOL;
System altered.

SYS@book> @ dc/dc_objects "DC_OBJ_NAME='DEPT'"
no rows selected

--//gdb跟踪相关信息如下:
=== kqrhsh BEGIN ===
kgghash(ptr=0x7ffeccf056e0, len=528, seed=0x0)
原始数据:
0x7ffeccf056e0: "m"
--//x/s $rdi 仅仅显示m,因为后面出现0x00,被截断了。
0x7ffeccf056e0: 0x6d    0x00    0x00    0x00    0x04    0x00    0x44    0x45
0x7ffeccf056e8: 0x50    0x54    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf056f0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf056f8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05700: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05708: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05710: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05718: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05720: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05728: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05730: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05738: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05740: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05748: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05750: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05758: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05760: 0x00    0x00    0x00    0x00    0x00    0x00    0x01    0x00
                                                               ~~~~~           
0x7ffeccf05768: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05770: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05778: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05780: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05788: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05790: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05798: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057a0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057a8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057b0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057b8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057c0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057c8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057d0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057d8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057e0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057e8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057f0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf057f8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05800: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05808: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05810: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05818: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05820: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05828: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05830: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05838: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05840: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05848: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05850: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05858: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05860: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05868: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05870: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05878: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05880: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05888: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05890: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf05898: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058a0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058a8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058b0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058b8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058c0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058c8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058d0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058d8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058e0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ffeccf058e8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
kgghash retuen value(rax) = 0x000000001f71eba5 527559589 , mod 32768 = 0x00006ba5 27557

--//m 的ascii码 0x6d = 109,正好对应scott用户的user_id.
SYS@book> column user_id format 99999
SYS@book> select USERNAME,USER_ID  from cdb_users where con_id=3 and username='SCOTT';
USERNAME           USER_ID
------------------ -------
SCOTT                  109

--//后面的 0x04 0x00 0x44 0x45 0x50 0x54  解析如下:
--//0x04 0x00 表示table name字符串长度等于4.
--//0x44 0x45 0x50 0x54   = DEPT
--//后面基本都是00,除了下划线位置出现01,我估计表示namespace=1.

--//开头 6D000000040044455054
--//14*8+6+6 = 124 个00
--//01
--//49*8+1 = 393个00

--//393*2 = 786
--//连在一起拼接如下:
SYS@book> @ ora_hash2.txt "6D000000040044455054' || LPAD('0', 248, '0')||'01'||lpad('0',784,'0')||'00" 0

                  N20 C20
--------------------- --------------------
            527559589 000000001f71eba5
--//kgghash retuen value(rax) = 0x000000001f71eba5 527559589 , mod 32768 = 0x00006ba5 27557
--//完全对上。

SYS@book> @ ora_hash1.txt BOOK01P 527559589
                  N20 C20
--------------------- --------------------
            225976945 000000000d782271
--//225976945 % 32768= 8817

SYS@book> @ dc/dc_objects "DC_OBJ_NAME='DEPT'"
USERNAME DC_OBJ_NAME KEY_STR_LEN HASH_HEX   INDX   HASH ADDRESS              CACHE# CACHE_NAME           EXISTENT  LOCK_MODE LOCK_REQUEST SADDR            INST_LOCK_REQUEST INST_LOCK_RELEASE IN INST_LOC INST_LOC CON_ID
-------- ----------- ----------- -------- ------ ------ ---------------- ---------- -------------------- -------- ---------- ------------ ---------------- ----------------- ----------------- -- -------- -------- ------
SCOTT    DEPT                  4 0x3df8     5051  15864 00000000708AD650          8 dc_objects           Y                 0            0 00                               0                 0    00       00            3
SCOTT    DEPT                  4 0x2271     2308   8817 00000000708AD650          8 dc_objects           Y                 0            0 00                               0                 0    00       00            3

--//实际上v$rowcache_parent的key信息就是数据字典对象的相关数据,只不过仅仅显示raw类型的100字符。
SYS@book> @ descv v$rowcache_parent key|cache
           Name                            Null?    Type
           ------------------------------- -------- ----------------------------
    4      CACHE#                                   NUMBER
    5      CACHE_NAME                               VARCHAR2(64)
   16      KEY                                      RAW(100)

SYS@book> @ fchaz   00000000708AD650
LOC  KSMCHPTR           KSMCHIDX   KSMCHDUR KSMCHCOM                           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR         KSMCHPTR_BEGIN   KSMCHPTR_END+1
---- ---------------- ---------- ---------- -------------------------------- ---------- -------- ---------- ---------------- ---------------- -----------------
VSGA 00000000708AD620          1          1 KQR PO                                 1328 recr            584 00               00000000708AD620 00000000708ADB50

SYS@book> @ opeek 00000000708AD650 1328 1
New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3184_0001.trc
[0708AD650, 0708ADB80) = 00000001 00000002 00000008 00000001 00000001 00000000 708ADA30 00000000 00000000 00000000 708AD678 00000000 708AD678 00000000 ...

--//查看跟踪文件:
*** 2026-08-25T09:33:32.986178+08:00 (CDB$ROOT(1))
Processing Oradebug command 'peek 0x00000000708ad650 1328 1'
[0708AD650, 0708ADB80) = 00000001 00000002 00000008 00000001 00000001 ...
Dump of memory from 0x0708AD664 to 0x0708ADB80
0708AD660          00000000 708ADA30 00000000      [....0..p....]
0708AD670 00000000 00000000 708AD678 00000000  [........x..p....]
0708AD680 708AD678 00000000 00000000 00000000  [x..p............]
0708AD690 00000000 00000000 00000000 00000000  [................]
        Repeat 8 times
0708AD720 708AD720 00000000 708AD720 00000000  [ ..p.... ..p....]
0708AD730 708AD730 00000000 708AD730 00000000  [0..p....0..p....]
0708AD740 00000000 00000000 00000000 00000000  [................]
0708AD750 00000003 6E20BF17 00000000 00000000  [...... n........]
0708AD760 00000009 00000000 00000000 00000000  [................]
0708AD770 0001000E 00000000 00000000 00000000  [................]
0708AD780 00000000 00000000 00000000 00000000  [................]
0708AD790 00000000 00000000 0000006D 45440004  [........m.....DE]
                            ~~~~~~~~~~~~~~~~~
0708AD7A0 00005450 00000000 00000000 00000000  [PT..............]
          ~~~~~~~~
0708AD7B0 00000000 00000000 00000000 00000000  [................]
        Repeat 5 times
0708AD810 00000000 00000000 00000000 00010000  [................]
                                     ~~~~~~~~
0708AD820 00000000 00000000 00000000 00000000  [................]
        Repeat 23 times
0708AD9A0 00000000 00000000 00012834 00000001  [........4(......]
                            ~~~~~~~~  
0708AD9B0 00012834 067E7802 0E150A19 19067E78  [4(...x~.....x~..]
0708AD9C0 780E150A 0A19067E 00010E15 00000000  [...x~...........]
0708AD9D0 00000000 00000000 00000000 00000000  [................]
0708AD9E0 00000000 00000000 00000006 0000006D  [............m...]
0708AD9F0 08003DEF 00000000 00000000 5D3E06CC  [.=............>]]
0708ADA00 4BDA3CE0 BA8BC59F BF52A709 00000001  [.<.K......R.....]
0708ADA10 00003FFE 00000000 00000000 00000000  [.?..............]
0708ADA20 00000000 00000000 00000000 00000000  [................]
0708ADA30 00000200 0D782271 708AD650 00000000  [....q"x.P..p....]
0708ADA40 778670A8 00000000 778670A8 00000000  [.p.w.....p.w....]
0708ADA50 00000001 FEAC3DF8 708AD650 00000000  [.....=..P..p....]
0708ADA60 77882918 00000000 77882918 00000000  [.).w.....).w....]
0708ADA70 00000000 00000000 00000000 00000000  [................]
        Repeat 13 times
0708ADB50 00000931 80B38F00 708AD620 00000000  [1....... ..p....]
0708ADB60 697816E0 00000000 62ECF560 00000000  [..xi....`..b....]
0708ADB70 68ACFDC0 00000000 00000003 00000248  [...h........H...]
*** 2026-08-25T09:33:32.998367+08:00 (CDB$ROOT(1))

--//下划线开始的位置对应的就是key信息,长度528.  注意intel cpu 大小头问题.

4.小结:
--//可以看出数据字典对象可能1个对象对应多个hash值,参与计算的方法不同。

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

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

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969038