ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

[20260809]Row Cache Mutex 定位具体对象的方法.txt

2026/8/14 22:08:09 拓冰建站 浏览量
[20260809]Row Cache Mutex 定位具体对象的方法.txt
[20260809]Row Cache Mutex 定位具体对象的方法.txt

--//利用sql语句select sid from v$mystat where rownum=1;密集执行时会出现row cache mutex等待事件,测试是否能定位具体对象。
--//主要原因执行如下查询,没有返回记录。

SYS@book> select * from v$rowcache_parent where UTL_RAW.cast_to_varchar2(key) like '%X$KSUMYSTA%';
no rows selected

SYS@book> select * from v$rowcache_parent where UTL_RAW.cast_to_varchar2(key) like '%X$KSUSGIF%';
no rows selected
--//似乎X表在数据字典里面没有记录.在11g做了类似查询也是没有记录。

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.测试脚本:
$ cat zz6.txt
set verify off
variable v_method varchar2(30);
exec :v_method := '&&2';

declare
v_sid number;
v_d date;
v varchar2(30);
begin
    for i in 1 .. &&1 loop
      select /*+ &3 */ sid into v_sid from v$mystat where rownum=1;
    end loop;
end ;
/

quit

--//注:加入&3,这样可以导致每个会话执行的sql语句不同,我开始以为可以避免cursor: pin S等待事件,忘记了每次执行都会递归执
--//行如下SQL语句:
--//SQL ID: 87gaftwrm2h68 Plan Hash: 1072382624

--//select o.owner#,o.name,o.namespace,o.remoteowner,o.linkname,o.subname from obj$ o where o.obj#=:1

3.测试:

$ zzdate;seq 50 | xargs -IQ -P 50 sqlplus -s -l '/ as sysdba' @zz6.txt 8e4 test1 Q > /dev/null ; zzdate
trunc(sysdate)+16/24+07/1440+03/86400 -1786262823.274741932
trunc(sysdate)+16/24+09/1440+58/86400 1786262998.804645670
--//Sum = 175.529903738

SYS@book> @ ashtop event 1=1 trunc(sysdate)+16/24+07/1440+03/86400 trunc(sysdate)+16/24+09/1440+58/86400

    Total                                                                                                      Distinct Distinct    Distinct
  Seconds     AAS %This   EVENT                                      FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1
--------- ------- ------- ------------------------------------------ ------------------- ------------------- ---------- -------- -----------
     4501    25.7   53% | library cache: bucket mutex X              2026-08-09 16:07:07 2026-08-09 16:09:57          4      164         167
     2262    12.9   27% |                                            2026-08-09 16:07:05 2026-08-09 16:09:57        247      140         385
      737     4.2    9% | library cache: mutex X                     2026-08-09 16:07:09 2026-08-09 16:09:55          1      131         131
      647     3.7    8% | row cache mutex                            2026-08-09 16:07:06 2026-08-09 16:09:50          1       40          40
      314     1.8    4% | cursor: pin S                              2026-08-09 16:07:07 2026-08-09 16:09:48          1       42          42
       18      .1    0% | db file sequential read                    2026-08-09 16:07:50 2026-08-09 16:09:50          7       18          18
        5      .0    0% | latch: session allocation                  2026-08-09 16:07:26 2026-08-09 16:08:57          1        3           3
        3      .0    0% | log file parallel write                    2026-08-09 16:08:54 2026-08-09 16:09:32          1        2           2
        1      .0    0% | LGWR any worker group                      2026-08-09 16:08:54 2026-08-09 16:08:54          1        1           1
        1      .0    0% | control file parallel write                2026-08-09 16:08:32 2026-08-09 16:08:32          1        1           1
        1      .0    0% | direct path sync                           2026-08-09 16:09:32 2026-08-09 16:09:32          1        1           1
        1      .0    0% | log file sync                              2026-08-09 16:08:56 2026-08-09 16:08:56          1        1           1
12 rows selected.

--//前面已经分析出现library cache: bucket mutex X,library cache: mutex X的主要原因是在实例对象上存在争用,不再展开分析。
--//重点关注row cache mutex等待事件。

SYS@book> @ ev_namezpr 'row cache mutex'
==============================
EVENT#                        : 359
EVENT_ID                      : 306610566
NAME                          : row cache mutex
PARAMETER1                    : cache id
PARAMETER2                    : where requested
PARAMETER3                    :
WAIT_CLASS_ID                 : 3875070507
WAIT_CLASS#                   : 4
WAIT_CLASS                    : Concurrency
DISPLAY_NAME                  : row cache mutex
CON_ID                        : 0
PL/SQL procedure successfully completed.

SYS@book> @ ashtop event,p1,p2raw "event='row cache mutex'" trunc(sysdate)+16/24+07/1440+03/86400 trunc(sysdate)+16/24+09/1440+58/86400
    Total                                                                                                    Distinct Distinct    Distinct
  Seconds     AAS %This   EVENT               P1 P2RAW             FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1
--------- ------- ------- ----------------- ---- ----------------- ------------------- ------------------- ---------- -------- -----------
      396     2.3   61% | row cache mutex      8 0000000000000013  2026-08-09 16:07:07 2026-08-09 16:09:50          1       35          35
      246     1.4   38% | row cache mutex      8 0000000000000011  2026-08-09 16:07:06 2026-08-09 16:09:50          1       36          36
        2      .0    0% | row cache mutex     11 000000000000000A  2026-08-09 16:07:16 2026-08-09 16:07:17          1        2           2
        2      .0    0% | row cache mutex     11 000000000000000E  2026-08-09 16:07:08 2026-08-09 16:07:13          1        2           2
        1      .0    0% | row cache mutex      8 000000000000000E  2026-08-09 16:09:28 2026-08-09 16:09:28          1        1           1

--//P1= 8,11,如果查看
SYS@book> select distinct cache#,cache_name from v$rowcache_parent where cache# in (8,11);
    CACHE# CACHE_NAME
---------- ----------------------------------------------------------------
         8 dc_objects
        11 dc_objects
--//奇怪CACHE#=8,11对应都是CACHE_NAME=dc_objects。
--//知道P1raw,p2raw信息无法定位具体对象的,因为mutex一般执行很快,很少成为主要等待事件,oracle留给诊断的信息很少。仅仅
--//出现了sleep,在 x$mutex_sleep_history中才有记录,想象是一块内存区域记录这些信息会反复使用,一般定时mmon进程会记录到
--//dba_hist_mutex_sleep表中,而记录在dba_hist_mutex_sleep表中有丢失许多关键信息,只有即使分析x$mutex_sleep_history才能
--//获得比较准确的信息。

SYS@book> @mutexprofz idn,maddr,idnhex,hash,loc "ts >= trunc(sysdate)+16/24+07/1440+03/86400 and mutex_type='Row Cache'"
-- MutexProf by Tanel Poder (http://www.tanelpoder.com)
-- Showing profile of top 50 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 mutex_addr           IDNHEX          HASH GET_LOCATION                      SQL_ID  OBJECT_NAME
---------- --------- ---------- ---------- -------------------- --------- ---------- --------------------------------- ------- -----------------------------
        26    417989 Row Cache           0 0000000067304770     00000000             [10] kqreqd                               (name not found)
        24    761382 Row Cache   134224505 00000000778EC500     08001A79             [19] kqrpre                               (name not found)
        23   1070425 Row Cache   134224506 00000000778EC518     08001A7A             [17] kqrCreateUsingSecondaryKey           (name not found)
        23    311544 Row Cache           0 0000000067311450     00000000             [10] kqreqd                               (name not found)
        23   3167254 Row Cache   134224506 00000000778EC518     08001A7A             [19] kqrpre                               (name not found)
        17    274410 Row Cache           0 0000000067311450     00000000             [14] kqrScan                              (name not found)
        16    235869 Row Cache           0 0000000067304770     00000000             [14] kqrScan                              (name not found)
        14   1331002 Row Cache   134224505 00000000778EC500     08001A79             [17] kqrCreateUsingSecondaryKey           (name not found)
        12   9129225 Row Cache           0 0000000065CB7500     00000000             [10] kqreqd                               (name not found)
         4   4527951 Row Cache           0 0000000065CB7A30     00000000             [10] kqreqd                               (name not found)
         4   6440502 Row Cache           0 0000000065353E78     00000000             [10] kqreqd                               (name not found)
         3           Row Cache           0 0000000065CB9E80     00000000             [01] kqrHashTableInsert                   (name not found)
         3           Row Cache           0 00000000726812D0     00000000             [14] kqrScan                              (name not found)
         2           Row Cache           0 0000000065CBB340     00000000             [01] kqrHashTableInsert                   (name not found)
         1           Row Cache           0 0000000065CBA8E0     00000000             [10] kqreqd                               (name not found)
         1           Row Cache           0 00000000726812D0     00000000             [10] kqreqd                               (name not found)
         1           Row Cache           0 0000000063A3A570     00000000             [10] kqreqd                               (name not found)
17 rows selected.
--//前面p2raw=0000000000000013,0000000000000011转换10进制就是19,17,注意看GET_LOCATION前面的数字一致。
--//也就是知道p1raw,p2raw无法定位具体那个对象,仅仅知道大致的方向。
--//注意看IDN=134224505,134224506转换16进制,对应08001A79,08001A7A(不知道是否巧合2者差1)。
--//猜测前面的08对应cache_id.这样后面 0x1a79,0x1a7a定义hash值。
--//0x1a79 = 6777 0x1a7a = 6778.

SYS@book> @ dc/dc_objects "hash=6777"
no rows selected

SYS@book> @ dc/dc_objects "hash=6778"
no rows selected
--//奇怪无法查询到相关信息,难道这么快从数据字典缓存消失了。
--//再次执行测试:
$ zzdate;seq 50 | xargs -IQ -P 50 sqlplus -s -l '/ as sysdba' @zz6.txt 8e4 test1 Q > /dev/null ; zzdate

SYS@book> @ dc/dc_objects "hash in(6777)"
no rows selected

SYS@book> @ dc/dc_objects "hash in(6778)"
no rows selected

SYS@book> @ dc/dc_objects "hash in(6777,6778)"
USERNAME DC_OBJ_NAME KEY_STR_LEN HASH_HEX   INDX   HASH ADDRESS          CACHE# CACHE_NAME EXISTENT  LOCK_MODE LOCK_REQUEST TXN              SADDR            INST_LOCK_REQUEST INST_LOCK_RELEASE IN INST_LOC INST_LOC CON_ID
-------- ----------- ----------- -------- ------ ------ ---------------- ------ ---------- -------- ---------- ------------ ---------------- ---------------- ----------------- ----------------- -- -------- -------- ------
SYS                            0 0x1a79     6095   6777 0000000067311348     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6114   6778 0000000065353D70     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6096   6777 0000000065CBBC98     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6097   6777 0000000065CBB768     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6098   6777 0000000065CBB238     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6099   6777 0000000065CBAD08     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6100   6777 0000000065CBA7D8     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6101   6777 0000000065CB73F8     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6102   6777 000000006BAB68B0     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a79     6103   6777 0000000063A3A468     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6104   6778 0000000067304668     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6105   6778 0000000065CBA2A8     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6106   6778 0000000065CB9D78     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6107   6778 0000000065CB9848     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6108   6778 0000000065CB9318     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6109   6778 0000000065CB8DE8     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6110   6778 0000000065CB88B8     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6111   6778 0000000065CB8388     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6112   6778 0000000065CB7E58     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
SYS                            0 0x1a7a     6113   6778 0000000065CB7928     11 dc_objects N                 0            0 00               00                               0                 0    00       00            1
         KOTTBX$               7 0x1a7a     2002   6778 000000006FB8D328      8 dc_objects Y                 0            0 00               00                               0                 0    00       00            2
21 rows selected.
--//注:前者查询可以利用 x$kqrfp的索引,后者选择全表扫描。理论2者都应该查询到结果,也许遇到bug。
--//后记:理论使用@ dc/dc_objects "hash in(6777)"应该可以查询到,是否遇到某种bug,就算查询不到应该建立1条记录。而不是建
--//立这么多条记录。
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 TXN              SADDR            INST_LOCK_REQUEST INST_LOCK_RELEASE IN INST_LOC INST_LOC CON_ID
-------- ----------- ----------- -------- ------ ------ ---------------- ---------- -------------------- -------- ---------- ------------ ---------------- ---------------- ----------------- ----------------- -- -------- -------- ------
SCOTT    DEPT                  4 0x3df8     4585  15864 000000006640CA20          8 dc_objects           Y                 0            0 00               00                               0                 0    00       00            3
SCOTT    DEPT                  4 0x2271     1977   8817 000000006640CA20          8 dc_objects           Y                 0            0 00               00                               0                 0    00       00            3
--//怎么会出现2条。

SYS@book> select * from v$rowcache_parent where hash=15864;
no rows selected

SYS@book> select * from v$rowcache_parent where hash=8817;
no rows selected
--//单独查询缺省没有返回。

SYS@book> select * from v$rowcache_parent where hash in (15864,8817);

  INDX       HASH ADDRESS              CACHE# CACHE_NAME           EXISTENT  LOCK_MODE LOCK_REQUEST TXN              SADDR            INST_LOCK_REQUEST INST_LOCK_RELEASE IN INST_LOC INST_LOC KEY                            CON_ID
------ ---------- ---------------- ---------- -------------------- -------- ---------- ------------ ---------------- ---------------- ----------------- ----------------- -- -------- -------- ------------------------------ ------
  1982       8817 000000006640CA20          8 dc_objects           Y                 0            0 00               00                               0                 0    00       00       6D0000000400444550540000000000      3
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               00000000000000000000

  4590      15864 000000006640CA20          8 dc_objects           Y                 0            0 00               00                               0                 0    00       00       6D0000000400444550540000000000      3
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               000000000000000000000000000000
                                                                                                                                                                                               00000000000000000000


--//address=000000006640CA20都是相同的。




SYS@book> @ xind  x$kqrfp
IF $ OCCUR IN MIDDLE DO NOT USING \$ !! ,for example:
@ xind x$table_name
@ xind x$kglob$|x$kgldp$


DERIVED_TABLES                 TABLE_NAME                     INDEX_NUMBER COLUMN_NAME                    COLUMN_POSITION CON_ID
------------------------------ ------------------------------ ------------ ------------------------------ --------------- ------
                               X$KQRFP                                   1 KQRFPHSH                                     0      0

--//CACHE#=11,EXISTENT=N,这些对象根本不存在,根据上午的测试:
--//[20260809]跟踪执行select sid from v$mystat where rownum=1;.txt
--//大致可以确定object_id=4294951107,4294951930,对象名 V$MYSTAT,X$KSUSGIF.

--//转储row cache信息看看。
SYS@book> alter session set events 'immediate trace name row_cache level 12';
Session altered.

SYS@book> alter session set events 'immediate trace name row_cache off';
Session altered.

--//注意跟踪文件的BUCKET从1开始计数。对应bucket的值等于hash+1.
$ awk '/^BUCKET 6778:/,/^  BUCKET 6779/' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_4198.trc > 6777-6778.txt

$ grep objectno 6777-6778.txt| uniq -c
     10   objectno=4294951930 ownerid=0 nsp=0
     12   objectno=4294951107 ownerid=0 nsp=0

SYS@book> select * from gv$fixed_table where object_id  in ( 4294951107,  4294951930);
   INST_ID NAME                            OBJECT_ID TYPE                            TABLE_NUM     CON_ID
---------- ------------------------------ ---------- ------------------------------ ---------- ----------
         1 X$KSUSGIF                      4294951930 TABLE                                  52          0
         1 V$MYSTAT                       4294951107 VIEW                                65537          0

--//通过这里基本可以确定对象号。为什么EXISTENT=N,不是很清楚,也许正是找不到,导致每次查询都要访问数据字典,猜测遇到bug。

--//内容太多,仅仅贴出部分信息:
BUCKET 6778:
  row cache parent object: addr=0x6b933e60 cid=11(dc_objects)
  conid=1 conuid=1 inc=1, pdbinc=1
  hash=0 typ=41 transaction=(nil) flags=00000001
  version=1 mtx version=41
  objectno=4294951930 ownerid=0 nsp=0
  ~~~~~~~~~~~~~~~~~~~~
  own=0x6b933f30[0x6b933f30,0x6b933f30] wat=0x6b933f40[0x6b933f40,0x6b933f40] mode=N req=N
  status=EMPTY/-/-/-/-/-/-/-/-/-/-/-  KGH unpinned  CLONE primary=0x67311348 count=10
  set=0, complete=FALSE
  data=
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 ffffc3fa 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000100 00000000
  6b933e60 00000000 6b934250 00000000 6b934250 00000000 00000001 40d79a79
  6b933e60 00000000 63a3a878 00000000 7785f128 00000000
--//ffffc3fa = 4294951930

...

BUCKET 6779:
  row cache parent object: addr=0x70f29c10 cid=11(dc_objects)
  conid=1 conuid=1 inc=1, pdbinc=1
  hash=0 typ=41 transaction=(nil) flags=00000001
  version=1 mtx version=41
  objectno=4294951107 ownerid=0 nsp=0
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  own=0x70f29ce0[0x70f29ce0,0x70f29ce0] wat=0x70f29cf0[0x70f29cf0,0x70f29cf0] mode=N req=N
  status=EMPTY/-/-/-/-/-/-/-/-/-/-/-  KGH unpinned  CLONE primary=0x67304668 count=12
  set=0, complete=FALSE
  data=
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 ffffc0c3 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000100 00000000
  70f29c10 00000000 70f2a000 00000000 70f2a000 00000000 00000001 46ad9a7a
  70f29c10 00000000 65354180 00000000 7785f138 00000000

--//ffffc0c3 = 4294951107
--//顺便想了解对应hash值oracle如何计算的,那位了解这方面信息。


4.附上测试使用代码:

$ cat dc/dc_objects.sql
column DC_PROP_NAME format a28
column CACHE_NAME   format a20
column EXISTENT     format a8
column KEY_OID$     format a32
column dc_obj_name  format a32
column dc_obj_name1 format a32
column username     format a20
column con_id       format 99999
column indx         format 99999
column hash         format 99999
column key          noprint

  SELECT *
    FROM (SELECT --TO_NUMBER ( (SUBSTR (key, 7, 2) || SUBSTR (key, 5, 2) || SUBSTR (key, 3, 2) || SUBSTR (key, 1, 2)), 'XXXXXXXX') Schema_User_ID ,
                 (SELECT username
                    FROM cdb_users
                   WHERE con_id= v.con_id and user_id =
                            TO_NUMBER (
                               (SUBSTR (key, 7, 2) || SUBSTR (key, 5, 2) || SUBSTR (key, 3, 2) || SUBSTR (key, 1, 2))
                              ,'XXXXXXXX'))
                    username
                --,RTRIM (UTL_RAW.cast_to_varchar2 (SUBSTR (v.key, 13)), CHR (0)) dc_obj_name
                --,TO_NUMBER (TRIM (BOTH '0' FROM SUBSTR (key, 11, 2) || SUBSTR (key, 9, 2)), 'XXXX') key_str_len
                ,UTL_RAW.cast_to_varchar2 (SUBSTR (v.key, 13,2*TO_NUMBER ( SUBSTR (key, 11, 2) || SUBSTR (key, 9, 2), 'XXXX'))) dc_obj_name
                ,TO_NUMBER ( SUBSTR (key, 11, 2) || SUBSTR (key, 9, 2), 'XXXX') key_str_len
                                ,'0x'||to_char(v.hash,'FMxxxxx') hash_hex
                ,v.*
            FROM v$rowcache_parent v
           WHERE cache# in (8,11)
        )
   WHERE (&1)
ORDER BY key;

column key print
column hash clear