[20250221]library cache bucket mutex等待模式测试脚本.txt

[20250221]library cache bucket mutex等待模式测试脚本.txt

–//以前的测试都是手工操作,操作很繁琐,经常在tmux界面上切换session。

–//写一个测试脚本方便测试。

$ cat lcm.sh

#!/bin/bash

# arg1=mutex_address arg2=offset arg3=monitor_times

offset=${2:-4}

sleeps=${3:-20}

v_addr=”0x${1}+${offset}”

echo “begin mutex value :”

gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex “x/8wx 0x${1}” -ex “quit” |  grep “^0x” | grep -v “^0x0”

gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex “set *(  int *)(${v_addr})=0x7777”  -ex “quit” >/dev/null

echo “modify mutex value :”

gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex “x/8wx 0x${1}” -ex “quit” |  grep “^0x” | grep -v “^0x0”

echo sleep $sleeps seconds

(sleep $sleeps ;gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex “set *(  int *)(${v_addr})=0x0”  -ex “quit” > /dev/null) &

sqlplus -s -l scott/book@book01p <<EOF > /dev/null

set echo off head off verify off feedback off define #

variable my_sid number

column spid new_value v_spid

exec  :my_sid :=  userenv(‘sid’);

select p.spid from v\$session s,v\$process p where s.sid = :my_sid and s.paddr=p.addr;

host strace -Ttt -y -f -p #v_spid -o laji.txt 2>&1 &

host sleep 1

select /*+ 9 */ count(*) from dept where deptno = 93834;

quit

EOF

echo “end mutex value :”

gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex “x/8wx 0x${1}” -ex “quit” |  grep “^0x” | grep -v “^0x0”

mv -iv laji.txt mutex$(date +”%Y%m%d%H%M%S”).txt

–//简单说明:选择select /*+ 9 */ count(*) from dept where deptno = 93834;这条语句bucket=0.

–//缺省修改该地址偏移量=4,检测时间20秒,修改的值直接写死0x7777。

–// arg1=mutex_address arg2=offset arg3=monitor_times,最后文件保存为mutex$(date +”%Y%m%d%H%M%S”).txt

–//必须安装gdb,并且正常使用。要修改define #代替原来的&,避免冲突,因为在sqlplus调用bash shell时需要使用&放在后台执行。

–//写的有点粗糙。host starce 后面加入host sleep 1主要是因为发现后面的sql语句会先于strace执行。

–//里面是sql语句登录后第1次执行,必须软解析,要使用library cache bucket mutex。可以在前面加入alter session set

–//session_cached_cursors=0 ;更加保险。

–//再次提醒千万不要在生产系统尝试使用!!

–//验证测试:

1.环境:

SCOTT@book01p> @ver2

==============================

PORT_STRING                   : x86_64/Linux 2.4.xx

VERSION                       : 21.0.0.0.0

BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 – Production

BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 – Production

Version 21.3.0.0.0

BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 – Production

CON_ID                        : 0

PL/SQL procedure successfully completed.

2.确定要修改的mutex地址。

SCOTT@book01p> select /*+ 9 */ count(*) from dept where deptno = 93834;

  COUNT(*)

———-

         0

SCOTT@book01p> @hashz

HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET HASH_HEX   SQL_EXEC_START      SQL_EXEC_ID

———- ————- ———— ———- ———- ——————- ———–

3403546624 as3g00v5dw000            0          0  cade0000  2025-02-21 16:17:21    16777216

SYS@book> oradebug setmypid

Statement processed.

SYS@book> oradebug dump library_cache 4

Statement processed.

$ grep “^Bucket:” /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_10770.trc | head -4

Bucket: #=0 Mutex=0x6cfa1400(1125281431552, 9, 0, 6)

Bucket: #=5 Mutex=0x6cfa14f0(1125281431552, 4, 0, 6)

Bucket: #=17 Mutex=0x6cfa1730(1125281431552, 8, 0, 6)

Bucket: #=39 Mutex=0x6cfa1b50(1125281431552, 4, 0, 6)

–//以上是前面测试的结果,直接找Bucket: #=0 Mutex=0x6cfa1400的语句测试。

–//该sql语句select /*+ 9 */ count(*) from dept where deptno = 93834;的bucket=0.

–//Bucket: #=0 Mutex=0x6cfa1400

–//0x6cfa1400-0x10 = 0x6cfa13f0

3.测试_mutex_wait_scheme=2.

–//_mutex_wait_scheme=2是缺省值:

$ ./lcm.sh 6cfa1400 4 20

begin mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000004      0x00000000

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

modify mutex value :

0x6cfa1400:     0x00000000      0x00007777      0x00000004      0x00000000

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

sleep 20 seconds

end mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000005      0x00000490

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

‘laji.txt’ -> ‘mutex20250221162228.txt’

$ egrep “getrusage” mutex20250221162228.txt

4090  16:22:07.482052 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 39076}, ru_stime={0, 8015}, …}) = 0 <0.000020>

4090  16:22:08.668687 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 42091}, ru_stime={0, 10792}, …}) = 0 <0.000009>

4090  16:22:10.681071 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 46590}, ru_stime={0, 13977}, …}) = 0 <0.000014>

4090  16:22:12.680455 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 49810}, ru_stime={0, 15793}, …}) = 0 <0.000014>

4090  16:22:14.700046 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 51433}, ru_stime={0, 20818}, …}) = 0 <0.000014>

4090  16:22:16.707209 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 56275}, ru_stime={0, 23557}, …}) = 0 <0.000014>

4090  16:22:18.714197 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 63273}, ru_stime={0, 25578}, …}) = 0 <0.000014>

4090  16:22:20.719146 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 66264}, ru_stime={0, 28197}, …}) = 0 <0.000013>

4090  16:22:22.727183 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 71892}, ru_stime={0, 29955}, …}) = 0 <0.000013>

4090  16:22:24.729607 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 74703}, ru_stime={0, 33689}, …}) = 0 <0.000014>

4090  16:22:26.736605 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 78728}, ru_stime={0, 36336}, …}) = 0 <0.000014>

4090  16:22:27.190076 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 78736}, ru_stime={0, 37854}, …}) = 0 <0.000007>

4090  16:22:27.191199 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 78919}, ru_stime={0, 37942}, …}) = 0 <0.000006>

4090  16:22:27.195224 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 78959}, ru_stime={0, 37961}, …}) = 0 <0.000008>

4090  16:22:27.196208 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 80047}, ru_stime={0, 37961}, …}) = 0 <0.000008>

–//getrusage的时间间隔2秒。

$ awk ‘{print $3}’ mutex20250221162228.txt |egrep “semtimedop|getrusage|sched_yield|select” | uniq -c

      1 getrusage(0x1

      2 sched_yield()

     81 semtimedop(98304,

      1 getrusage(0x1

    129 semtimedop(98304,

      1 getrusage(0x1

     84 semtimedop(98304,

      1 getrusage(0x1

    111 semtimedop(98304,

      1 getrusage(0x1

    119 semtimedop(98304,

      1 getrusage(0x1

    134 semtimedop(98304,

      1 getrusage(0x1

     98 semtimedop(98304,

      1 getrusage(0x1

    123 semtimedop(98304,

      1 getrusage(0x1

    119 semtimedop(98304,

      1 getrusage(0x1

    124 semtimedop(98304,

      1 getrusage(0x1

     44 semtimedop(98304,

      4 getrusage(0x1

–//开始2次sched_yield,采用semtimedop休眠,如此循环。

$ egrep “semtimedop” mutex20250221162228.txt| head -3

4090  16:22:07.482361 semtimedop(98304, {{65, -1, 0}}, 1, {0, 10000000}) = -1 EAGAIN (Resource temporarily unavailable) <0.009582>

4090  16:22:07.492051 semtimedop(98304, {{65, -1, 0}}, 1, {0, 10000000}) = -1 EAGAIN (Resource temporarily unavailable) <0.014498>

4090  16:22:07.506732 semtimedop(98304, {{65, -1, 0}}, 1, {0, 10000000}) = -1 EAGAIN (Resource temporarily unavailable) <0.011557>

–//时间是{0, 10000000},前者是秒,后面是纳秒。10000000/10^9 = .01 ,相当于10毫秒。

$ egrep “semtimedop|sched_yield|select” mutex20250221162228.txt|wc

   1168   18668  152856

–//休眠1168次。前面记录0x00000490 = 1168,完全一致。

4.测试_mutex_wait_scheme=1.

SYS@book> alter system set “_mutex_wait_scheme”=1 scope=memory;

System altered.

$ ./lcm.sh 6cfa1400 4 20

begin mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000006      0x00000490

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

modify mutex value :

0x6cfa1400:     0x00000000      0x00007777      0x00000006      0x00000490

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

sleep 20 seconds

end mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000007      0x000019b2

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

‘laji.txt’ -> ‘mutex20250221162924.txt’

$ egrep “getrusage” ‘mutex20250221162924.txt’

4311  16:29:04.215070 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 19086}, ru_stime={0, 7798}, …}) = 0 <0.000015>

4311  16:29:04.215204 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 19086}, ru_stime={0, 7798}, …}) = 0 <0.000013>

4311  16:29:05.361880 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 36767}, ru_stime={0, 15757}, …}) = 0 <0.000009>

4311  16:29:07.377948 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 55633}, ru_stime={0, 27816}, …}) = 0 <0.000009>

4311  16:29:09.382434 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 70886}, ru_stime={0, 46348}, …}) = 0 <0.000014>

4311  16:29:11.382197 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 89110}, ru_stime={0, 53466}, …}) = 0 <0.000014>

4311  16:29:13.383764 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 107836}, ru_stime={0, 74137}, …}) = 0 <0.000009>

4311  16:29:15.396900 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 116985}, ru_stime={0, 80218}, …}) = 0 <0.000015>

4311  16:29:17.403258 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 125922}, ru_stime={0, 93542}, …}) = 0 <0.000013>

4311  16:29:19.414202 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 128673}, ru_stime={0, 102938}, …}) = 0 <0.000014>

4311  16:29:21.415667 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 131408}, ru_stime={0, 113157}, …}) = 0 <0.000014>

4311  16:29:23.434382 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 149940}, ru_stime={0, 134562}, …}) = 0 <0.000007>

4311  16:29:23.891391 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 152444}, ru_stime={0, 141011}, …}) = 0 <0.000008>

4311  16:29:23.892466 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 152581}, ru_stime={0, 141138}, …}) = 0 <0.000006>

4311  16:29:23.896382 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 152610}, ru_stime={0, 141164}, …}) = 0 <0.000007>

–//getrusage的时间间隔2秒。

$ awk ‘{print $3}’ mutex20250221162924.txt |egrep “semtimedop|getrusage|sched_yield|select” | uniq -c

      2 getrusage(0x1

      1 sched_yield()

    563 select(0,

      1 getrusage(0x1

    642 select(0,

      1 getrusage(0x1

    698 select(0,

      1 getrusage(0x1

    466 select(0,

      1 getrusage(0x1

    825 select(0,

      1 getrusage(0x1

    308 select(0,

      1 getrusage(0x1

    414 select(0,

      1 getrusage(0x1

    232 select(0,

      1 getrusage(0x1

    247 select(0,

      1 getrusage(0x1

    769 select(0,

      1 getrusage(0x1

    245 select(0,

      3 getrusage(0x1

–//开始1次sched_yield,采用select休眠,如此循环。

$ egrep “select” ‘mutex20250221162924.txt’| head -3

4311  16:29:04.215383 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.001700>

4311  16:29:04.217165 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.001122>

4311  16:29:04.218381 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.001717>

–//时间是{0, 1000},前者是秒,后面是微秒。1000/10^6 = .001秒 ,相当于1毫秒。

$ egrep “semtimedop|sched_yield|select” ‘mutex20250221162924.txt’|wc

   5410   64914  432775

–//0x000019b2-0x490 = 5410,前面的输出记录前面相减正好也是5410.

5.测试_mutex_wait_scheme=0.

SYS@book> alter system set “_mutex_wait_scheme”=0 scope=memory;

System altered.

 $ ./lcm.sh 6cfa1400 4 20

begin mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000007      0x000019b2

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

modify mutex value :

0x6cfa1400:     0x00000000      0x00007777      0x00000007      0x000019b2

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

sleep 20 seconds

end mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000008      0x00001a72

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

‘laji.txt’ -> ‘mutex20250221163433.txt’

$ egrep “getrusage” ‘mutex20250221163433.txt’

4431  16:34:12.806912 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 19180}, ru_stime={0, 14571}, …}) = 0 <0.000018>

4431  16:34:12.807044 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 19180}, ru_stime={0, 14571}, …}) = 0 <0.000013>

4431  16:34:13.986557 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 128699}, ru_stime={0, 83541}, …}) = 0 <0.000008>

4431  16:34:15.989945 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 191514}, ru_stime={0, 142765}, …}) = 0 <0.000007>

4431  16:34:17.993149 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 273577}, ru_stime={0, 209624}, …}) = 0 <0.000010>

4431  16:34:19.994035 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 368504}, ru_stime={0, 295521}, …}) = 0 <0.000007>

4431  16:34:21.996906 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 474400}, ru_stime={0, 368316}, …}) = 0 <0.000009>

4431  16:34:23.001664 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 515769}, ru_stime={0, 407250}, …}) = 0 <0.000010>

4431  16:34:25.003146 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 575372}, ru_stime={0, 456413}, …}) = 0 <0.000014>

4431  16:34:27.026933 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 627941}, ru_stime={0, 495616}, …}) = 0 <0.000014>

4431  16:34:29.032056 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 727438}, ru_stime={0, 567155}, …}) = 0 <0.000012>

4431  16:34:31.051320 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 801699}, ru_stime={0, 616884}, …}) = 0 <0.000011>

4431  16:34:32.510836 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 919641}, ru_stime={0, 703181}, …}) = 0 <0.000006>

4431  16:34:32.515097 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 920391}, ru_stime={0, 703181}, …}) = 0 <0.000006>

4431  16:34:32.515681 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 920674}, ru_stime={0, 703181}, …}) = 0 <0.000005>

–//getrusage的时间间隔2秒。

$ awk ‘{print $3}’ ‘mutex20250221163433.txt’ |egrep “semtimedop|getrusage|sched_yield|select” | uniq -c| head -10

      2 getrusage(0x1

     99 sched_yield()

      1 select(0,

     99 sched_yield()

      1 select(0,

     99 sched_yield()

      1 select(0,

     99 sched_yield()

      1 select(0,

     99 sched_yield()

–//99次sched_yield(),1次select,如此循环,到2秒之后调用getrusage。

$ egrep “semtimedop|sched_yield|select” ‘mutex20250221163433.txt’|wc

 196800 1192608 10873200

–//0x00001a72-0x000019b2 = 0xc0= 192,以前测试已经说明单次测试最大记录sleeps 0xffff,大于该值就溢出了,仅仅记录后4位。

–//196800 = 0x300c0,前面的3丢失了,真实的环境很少出现这样的情况。

SYS@book> @ mutexprofz idn,hash,loc,req,blk,maddr “idn=0”

— 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       HASH GET_LOCATION                             REQ        BLK mutex_addr           OBJECT_NAME

———- ————– ————— ———- ———- ——————————— ———- ———- ——————– —————–

       192                Library Cache            0            kglhdgn1  62                             156      30583 000000006CFA1400     (name not found)

–//每次登录执行的sid不变,仅仅记录最后的情况。blk=30583 = 0x7777

6.测试修改mutext值的0-3字节。

SYS@book> alter system set “_mutex_wait_scheme”=2 scope=memory;

System altered.

$ ./lcm.sh 6cfa1400 0 5

begin mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000014      0x00001a72

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

modify mutex value :

0x6cfa1400:     0x00007777      0x00000000      0x00000014      0x00001a72

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

sleep 5 seconds

end mutex value :

0x6cfa1400:     0x00000000      0x00000000      0x00000015      0x0000c854

0x6cfa1410:     0x00000000      0x00000000      0x6608b220      0x00000000

‘laji.txt’ -> ‘mutex20250221171440.txt’

$ egrep “getrusage” mutex20250221171440.txt

5088  17:14:34.993468 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 24405}, ru_stime={0, 8919}, …}) = 0 <0.000014>

5088  17:14:34.993582 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 24405}, ru_stime={0, 8919}, …}) = 0 <0.000012>

5088  17:14:36.335821 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 261605}, ru_stime={0, 101049}, …}) = 0 <0.000005>

5088  17:14:38.336613 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 621233}, ru_stime={0, 215673}, …}) = 0 <0.000006>

5088  17:14:39.645600 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 843491}, ru_stime={0, 304561}, …}) = 0 <0.000005>

5088  17:14:39.646849 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 843702}, ru_stime={0, 304637}, …}) = 0 <0.000005>

5088  17:14:39.650208 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 843734}, ru_stime={0, 304648}, …}) = 0 <0.000006>

5088  17:14:39.650780 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 844098}, ru_stime={0, 304780}, …}) = 0 <0.000005>

–//getrusage的时间间隔2秒。

$ awk ‘{print $3}’ mutex20250221171440.txt | egrep “semtimedop|getrusage|sched_yield|select” | uniq -c| head -10

      2 getrusage(0x1

     99 sched_yield()

      1 select(0,

     99 sched_yield()

      1 select(0,

     99 sched_yield()

      1 select(0,

     99 sched_yield()

      1 select(0,

     99 sched_yield()

–//99次sched_yield(),1次select,如此循环,到2秒之后调用getrusage。类似_mutex_wait_scheme=0.

$ egrep “semtimedop|sched_yield|select” mutex20250221171440.txt|wc

 110050  666900 6080250

–//0x0000c854-0x00001a72 = 0xade2= 44514.以前测试已经说明单次测试最大记录sleeps 0xffff,大于该值就溢出了,仅仅记录后4位。

–//110050 = 0x1ade2,前面的1丢失了,真实的环境很少出现这样的情况。

SYS@book> @ mutexprofz idn,hash,loc,req,blk,maddr “idn=0”

— 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       HASH GET_LOCATION                             REQ        BLK mutex_addr           OBJECT_NAME

———- ————– ————— ———- ———- ——————————— ———- ———- ——————– —————-

     44514                Library Cache            0            kglhdgn1  62                             156          0 000000006CFA1400     (name not found)

来源链接:https://www.cnblogs.com/lfree/p/18737263

© 版权声明
THE END
支持一下吧
点赞9 分享
评论 抢沙发
头像
请文明发言!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容