[20211031]18c row cache mutext等待事件探究.txt
[20211031]18c row cache mutext等待事件探究.txt
--//昨天測試了多個使用者併發執行select /*+ &&3 */ value into v_val from nls_database_parameters where parameter =
--//'NLS_CHARACTERSET';,非常緩慢的情況,實際上我在虛擬機器上執行效能並不好,但是緩慢的程度還是超出我的想像。
--//掃描檢視nls_database_parameters實際上查詢x$props基表,而查詢x$props在12C以上版本實際上是訪問資料字典,正是這一變化導
--//致併發訪問出現大量row cache mutext等待事件,今天探究執行一次的情況。
--//測試前我看了ksun-oracle.blogspot.com 部落格下相關文章,使用連結中的一些指令碼。例如:
--// ksun-oracle.blogspot.com/2020/08/row-cache-object-and-row-cache-mutex.html
1.環境:
SYS@192.168.a.b:1521/orcl> @ ver
SYS@192.168.a.b:1521/orcl> @ prxx
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 18.0.0.0.0
BANNER : Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
BANNER_FULL : Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
BANNER_LEGACY : Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
SYS@192.168.a.b:1521/orcl> @ hide _kqr_optimistic_reads
NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES_MODI ISSYS_MODIFIABLE
--------------------- --------------------------------------- ------------- ------------- ------------ ---------- ------------------
_kqr_optimistic_reads optimistic reading of row cache objects TRUE TRUE TRUE TRUE IMMEDIATE
--//建立函式dump_hex2str。
create or replace function dump_hex2str (dump_hex varchar2) return varchar2 is
l_str varchar2(100);
begin
with sq_pos as (select level pos from dual connect by level <= 1000)
,sq_chr as (select pos, chr(to_number(substr(dump_hex, (pos-1)*2+1, 2), 'XX')) ch
from sq_pos where pos <= length(dump_hex)/2)
select listagg(ch, '') within group (order by pos) word
into l_str
from sq_chr;
return replace(l_str,chr(0),'');
end;
/
--//注:我修改一點點,返回使用replace(l_str,chr(0),''),這樣感覺更加簡潔一些,實際上作者的處理有點問題。
--//如果結尾ascii碼是50(字元P),使用dump_hex2str(rtrim(key,'0'))的輸出會丟失P的顯示,大家可以自行測試,不過目前的測試暫
--//時不使用。
$ cat dc.txt
column gets new_value gets_old;
column fastgets new_value gets_oldf;
select sum(gets) gets, sum(fastgets) fastgets from v$rowcache where parameter = '&&1';
select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
SELECT (sum(gets)-&gets_old) gets_delta, (sum(fastgets)-&gets_oldf) gets_deltaf, sum(gets) gets, sum(fastgets)
fastgets
FROM v$rowcache
WHERE parameter = '&&1';
--//執行如下在PDB層面上執行:
SYS@192.168.a.b:1521/orcl> @ dc.txt dc_props
GETS FASTGETS
---------- ----------
266623440 0
VALUE
--------
US7ASCII
GETS_DELTA GETS_DELTAF GETS FASTGETS
---------- ----------- ---------- ----------
82 0 266623522 0
SYS@192.168.a.b:1521/orcl> @ dc.txt dc_cdbprops
GETS FASTGETS
---------- ----------
19766971 0
VALUE
--------
US7ASCII
GETS_DELTA GETS_DELTAF GETS FASTGETS
---------- ----------- ---------- ----------
7 0 19766978 0
--//你可以反覆測試,因為可能別人也會訪問資料字典,正常都是dc_props 82次,dc_cdbprops 7次,加起來89次。
--//這樣猜測每個迴圈都出現1次gets,這樣89次。
2.測試:
SYS@192.168.a.b:1521/orcl> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---- ---------- ---------- ------------------ -------------------- ------- ---------- --------------------------------------------------
411 15860 7740:5232 DEDICATED 19189 71 72933 alter system kill session '411,15860' immediate;
select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
--//執行5次以上,避免一些遞迴。
--//查詢orafun.info網站:
Oracle C functions annotations
Stack Single
kqrpre - kernel query dictionary/row cache read a parent cache object
The other hits are:
Name Description
kqrpre1 kernel query dictionary/row cache read a parent cache object 1
kqrpre2 kernel query dictionary/row cache read a parent cache object 2 - this is the real function
kqreqd - kernel query dictionary/row cache enqueue delete
--//建立gdb測試指令碼:
$ cat dc.gdb
set pagination off
set logging file /tmp/dc.log
set logging overwrite on
set logging on
set $pre = 0
set $pre1 = 0
set $pre2 = 0
set $eqd = 0
break snttread
commands
set $pre = 0
set $pre1 = 0
set $pre2 = 0
set $eqd = 0
continue
end
break kqrpre
commands
silent
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "call kqrpre %d\n",++$pre
continue
end
break kqrpre1
commands
silent
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "call krqpre1 %d\n",++$pre1
continue
end
break kqrpre2
commands
silent
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "call kqrpre2 %d\n",++$pre2
continue
end
break kqreqd
commands
silent
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "call kqreqd %d\n",++$eqd
continue
end
--//session 1:
# gdb -x dc.gdb -p 19189
...
Breakpoint 1 at 0x124ab6b0
Breakpoint 2 at 0x12186250
Breakpoint 3 at 0x1218d870
Breakpoint 4 at 0x12186290
Breakpoint 5 at 0x1218ddf0
(gdb)
--//session 2:
TTT@orcl> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
--//掛起:
--//session 1:
(gdb) c
Continuing.
2021/11/01 09:37:03.845113320 :call krqpre1 1
2021/11/01 09:37:03.853013138 :call kqrpre2 1
2021/11/01 09:37:03.861123384 :call kqreqd 1
2021/11/01 09:37:03.869276275 :call krqpre1 2
2021/11/01 09:37:03.876952760 :call kqrpre2 2
2021/11/01 09:37:03.884459723 :call kqreqd 2
...
2021/11/01 09:37:05.557477867 :call krqpre1 88
2021/11/01 09:37:05.563898406 :call kqrpre2 88
2021/11/01 09:37:05.570246951 :call kqreqd 88
2021/11/01 09:37:05.577686127 :call krqpre1 89
2021/11/01 09:37:05.584557377 :call kqrpre2 89
2021/11/01 09:37:05.591103306 :call kqreqd 89
Breakpoint 1, 0x00000000124ab6b0 in snttread ()
--//可以發現反覆呼叫kqrpre1,kqrpre2,kqreqd函式,這也是為什麼併發出現執行緩慢的原因。我不知道還有那些檢視看上去是sql語句
--//,實際上訪問資料字典的情況。可以發現呼叫正好89次。
$ grep kqrpre2 /tmp/dc.log |wc
89 267 1415
oracle@hosp2 IP=a.b ~/test $ grep kqrpre1 /tmp/dc.log |wc
0 0 0
oracle@hosp2 IP=a.b ~/test $ grep kqreqd /tmp/dc.log |wc
89 267 1326
--//一次執行每次呼叫89次。為什麼是89次,難道存在89個訪問物件嗎?
--//即使我執行select * from sys.x$props where rownum=1; 也是呼叫這麼多次。
SYS@orcl> SELECT cache#
,TYPE
,subordinate#
,parameter
,COUNT
,usage
,fixed
,gets
,fastgets
FROM v$rowcache
WHERE parameter IN ('dc_props', 'dc_cdbprops') ;
CACHE# TYPE SUBORDINATE# PARAMETER COUNT USAGE FIXED GETS FASTGETS
---------- -------------------- ------------ -------------------- ---------- -------- ---------- ---------- ----------
15 PARENT dc_props 145 145 0 266627340 0
60 PARENT dc_cdbprops 12 12 0 19767118 0
--//按照連結介紹,gets介紹至少145次。而我的測試僅僅89次。
--//在cdb層面執行如下:
SYS@orclcdb> select count(*),cache_name from v$rowcache_parent where cache_name in ('dc_props','dc_cdbprops') group by cache_name;
COUNT(*) CACHE_NAME
---------- ----------------------------------------------------------------
12 dc_cdbprops
145 dc_props
--//很明顯前面count計數還包括cdb層面的資訊。
SYS@orcl> select cache_name, existent, count(*) cnt from v$rowcache_parent where cache_name in ('dc_props','dc_cdbprops') group by cache_name, existent;
CACHE_NAME E CNT
---------- - ----------
dc_props Y 36
dc_props N 24
--//dc_props 也就是60個。
SYS@orclcdb> SELECT cache_name
,existent
,con_id
,COUNT (*) cnt
FROM v$rowcache_parent
WHERE cache_name IN ('dc_props', 'dc_cdbprops')
GROUP BY cache_name, existent, con_id
ORDER BY con_id, cache_name;
CACHE_NAME EXISTENT CON_ID CNT
------------ -------- ---------- ----------
dc_cdbprops N 1 11
dc_cdbprops Y 1 1
dc_props N 1 41
dc_props Y 1 42
dc_props N 3 24
dc_props Y 3 36
dc_props Y 5 2
--//看不出89次如何得出的。如果拿con_id=1來計算結果倒是很接近。
--//我在cdb層面上測試:
(gdb) c
Continuing.
2021/11/01 10:37:20.798161748 :call krqpre1 1
2021/11/01 10:37:20.804974451 :call kqrpre2 1
2021/11/01 10:37:20.811859822 :call krqpre1 2
2021/11/01 10:37:20.818386617 :call kqrpre2 2
--//前面2次單獨呼叫krqpre1,krqpre2.
2021/11/01 10:37:20.825252708 :call krqpre1 3
2021/11/01 10:37:20.831884460 :call kqrpre2 3
2021/11/01 10:37:20.838560610 :call kqreqd 1
...
2021/11/01 10:37:22.642237223 :call kqreqd 92
2021/11/01 10:37:22.648591872 :call krqpre1 95
2021/11/01 10:37:22.655067821 :call kqrpre2 95
2021/11/01 10:37:22.661674928 :call kqreqd 93
Breakpoint 1, 0x00000000124ab6b0 in snttread ()
SYS@orclcdb> @ dc.txt dc_props
GETS FASTGETS
---------- ----------
266631678 0
VALUE
--------------------
AL32UTF8
GETS_DELTA GETS_DELTAF GETS FASTGETS
---------- ----------- ---------- ----------
86 0 266631764 0
SYS@orclcdb> @ dc.txt dc_cdbprops
GETS FASTGETS
---------- ----------
19767328 0
VALUE
--------------------
AL32UTF8
GETS_DELTA GETS_DELTAF GETS FASTGETS
---------- ----------- ---------- ----------
7 0 19767335 0
--//正常dc_props 86次,dc_cdbprops 7次,加起來93次。
--//隱含引數_kqr_optimistic_reads = false 結果也是一樣。
--//Row Cache Data Dump
With following command, we can dump 'dc_props'. (See MOS Bug 19354335 - Diagnostic enhancement for rowcache data dumps
(Doc ID 19354335.8))
alter session set tracefile_identifier = 'dc_props_dump';
-- dump level 0xf2b: f is cache id 15 ('dc_props'), 2 is single cacheiddump, b is level of 11
alter session set events 'immediate trace name row_cache level 0xf2b';
alter session set events 'immediate trace name row_cache off';
SYS@192.168.a.b:1521/orclcdb> alter session set events 'immediate trace name row_cache level 0xf2b';
Session altered.
SYS@192.168.a.b:1521/orclcdb> alter session set events 'immediate trace name row_cache off';
Session altered.
# egrep "^BUCKET|row cache parent object" /u01/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/orclcdb_ora_18802.trc
BUCKET 1:
row cache parent object: addr=0x103b5f140 cid=15(dc_props) conid=1 conuid=1
BUCKET 2:
row cache parent object: addr=0x12abf3f48 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12cb005d0 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 3:
row cache parent object: addr=0x12e6923f8 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xe1c52058 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 4:
row cache parent object: addr=0xc0176f40 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12a327d98 cid=15(dc_props) conid=1 conuid=1
BUCKET 5:
row cache parent object: addr=0x12bc01950 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x130a1b6a8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 6:
row cache parent object: addr=0x130f40618 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x12aebb778 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 9:
row cache parent object: addr=0xdbf7a998 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12bf9de68 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x128d3ca58 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12dd604e8 cid=15(dc_props) conid=1 conuid=1
BUCKET 10:
row cache parent object: addr=0x12a1f4898 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12e021228 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x7bf110e8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 12:
row cache parent object: addr=0x105ac9d80 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x1286f1d28 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 13:
row cache parent object: addr=0xdb1c4a48 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 14:
row cache parent object: addr=0x106f224e0 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 15:
row cache parent object: addr=0x1002f9790 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x10459d288 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12ae8d608 cid=15(dc_props) conid=1 conuid=1
BUCKET 16:
row cache parent object: addr=0x12e083918 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12cbe7330 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x128d29c90 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12bbe1dc8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 17:
row cache parent object: addr=0x13095c8d8 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x12e317fc8 cid=15(dc_props) conid=1 conuid=1
BUCKET 18:
row cache parent object: addr=0x12eb92720 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12bf4cc38 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x12c57b2b0 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x10cba43e8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 19:
row cache parent object: addr=0x7432a200 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xb7b138c0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12c792050 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x1305f5b08 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x10069e5c8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 20:
row cache parent object: addr=0x100470ca0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x1277d01e0 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x13053aa48 cid=15(dc_props) conid=5 conuid=707315228
BUCKET 21:
row cache parent object: addr=0xe1994c58 cid=15(dc_props) conid=1 conuid=1
BUCKET 22:
row cache parent object: addr=0x100250418 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12e64a1a0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xe34234f0 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xe44952d8 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12cc535d8 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xe5361a80 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xffb77848 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xe3329f98 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x7ec8ca68 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 23:
row cache parent object: addr=0x6d1f8a58 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12d83d5d8 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xce936c48 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x12d2e58d8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 24:
row cache parent object: addr=0x10483f1b0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x108375480 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 25:
row cache parent object: addr=0x7e1814d8 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12cdc69a0 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 26:
row cache parent object: addr=0xe498a450 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 27:
row cache parent object: addr=0x13039f688 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12a9f1db0 cid=15(dc_props) conid=1 conuid=1
BUCKET 28:
row cache parent object: addr=0x1275bcc80 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12de961f8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 29:
row cache parent object: addr=0x12b548328 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 31:
row cache parent object: addr=0x12c838738 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x72977890 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x1031d60b8 cid=15(dc_props) conid=5 conuid=707315228
row cache parent object: addr=0x104c58328 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 32:
row cache parent object: addr=0x12e024748 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x80994460 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x10c49bbd8 cid=15(dc_props) conid=1 conuid=1
BUCKET 33:
row cache parent object: addr=0x10c6ed3a0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x6fe6e868 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12ced2578 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x820c1260 cid=15(dc_props) conid=1 conuid=1
BUCKET 35:
row cache parent object: addr=0x12be3cf40 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x10010eb78 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x100341188 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 36:
row cache parent object: addr=0x72cee590 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12a458188 cid=15(dc_props) conid=1 conuid=1
BUCKET 37:
row cache parent object: addr=0x12dae27f0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x10c45da20 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x127cab7b0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12cdb20f8 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 40:
row cache parent object: addr=0x1273638f0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12dcfaa48 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12cea1f60 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xbf7c5170 cid=15(dc_props) conid=1 conuid=1
BUCKET 41:
row cache parent object: addr=0x12cd07240 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12db9c838 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x101ba6118 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 42:
row cache parent object: addr=0x12c256098 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x130e58590 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 43:
row cache parent object: addr=0x130aadb08 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xff375670 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12d2598a0 cid=15(dc_props) conid=1 conuid=1
BUCKET 44:
row cache parent object: addr=0x1307e5688 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x130c381f8 cid=15(dc_props) conid=1 conuid=1
BUCKET 45:
row cache parent object: addr=0x12c3aabf8 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12de35bb8 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xe3d985a0 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 46:
row cache parent object: addr=0xb77272f0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12ed256c0 cid=15(dc_props) conid=1 conuid=1
BUCKET 47:
row cache parent object: addr=0xfe517b78 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x130c93718 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 48:
row cache parent object: addr=0x103f8d5a0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x1087049f0 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xfe37a358 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 49:
row cache parent object: addr=0x1073996f0 cid=15(dc_props) conid=1 conuid=1
BUCKET 50:
row cache parent object: addr=0x12761f510 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xe3463150 cid=15(dc_props) conid=1 conuid=1
BUCKET 52:
row cache parent object: addr=0x11cb6a750 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 54:
row cache parent object: addr=0x12c137bf0 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 55:
row cache parent object: addr=0x12a7ad700 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x1087bf818 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 56:
row cache parent object: addr=0x10c252050 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12af5c248 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x7667ca40 cid=15(dc_props) conid=1 conuid=1
BUCKET 57:
row cache parent object: addr=0x12b180ae0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x104dcb230 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12c38fe58 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x10478e240 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 58:
row cache parent object: addr=0x1066a96c8 cid=15(dc_props) conid=1 conuid=1
BUCKET 59:
row cache parent object: addr=0x74ca2b30 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x10377d1f8 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0xbe59c230 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x130f6fe20 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x7b899610 cid=15(dc_props) conid=1 conuid=1
BUCKET 60:
row cache parent object: addr=0x12cdcd9e0 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12d93d928 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x12b345970 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 61:
row cache parent object: addr=0x12cf27708 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12db2ef40 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x12d16b7e0 cid=15(dc_props) conid=3 conuid=115310104
BUCKET 62:
row cache parent object: addr=0x12d195038 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0x1057e8508 cid=15(dc_props) conid=1 conuid=1
BUCKET 64:
row cache parent object: addr=0x12accc690 cid=15(dc_props) conid=1 conuid=1
row cache parent object: addr=0x12bf7ccc8 cid=15(dc_props) conid=3 conuid=115310104
row cache parent object: addr=0xdbb94918 cid=15(dc_props) conid=3 conuid=115310104
--//使用64bucket.
# grep "cid=15(dc_props)" /u01/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/orclcdb_ora_18802.trc | grep conid=1|wc
83 664 6451
# grep "cid=15(dc_props)" /u01/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/orclcdb_ora_18802.trc | grep conid=3|wc
60 480 5146
--//60 = 0x3c
SYS@192.168.a.b:1521/orclcdb> alter session set events 'immediate trace name row_cache level 0x3c2b';
Session altered.
SYS@192.168.a.b:1521/orclcdb> alter session set events 'immediate trace name row_cache off';
Session altered.
# egrep "^BUCKET|row cache parent object" /u01/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/orclcdb_ora_19930.trc
BUCKET 3:
row cache parent object: addr=0x12db48578 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 9:
row cache parent object: addr=0x107d48e40 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 23:
row cache parent object: addr=0x12dfb4290 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 25:
row cache parent object: addr=0x11c25fcd0 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 26:
row cache parent object: addr=0x127775f68 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 33:
row cache parent object: addr=0x1309126f0 cid=60(dc_cdbprops) conid=1 conuid=1
row cache parent object: addr=0x12ab5b3d8 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 35:
row cache parent object: addr=0x12e834d60 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 36:
row cache parent object: addr=0x12cc8dbe8 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 40:
row cache parent object: addr=0x10844ac68 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 56:
row cache parent object: addr=0xe326c598 cid=60(dc_cdbprops) conid=1 conuid=1
BUCKET 61:
row cache parent object: addr=0x12c498930 cid=60(dc_cdbprops) conid=1 conuid=1
# egrep "^BUCKET|row cache parent object" /u01/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/orclcdb_ora_19930.trc | grep "row cache parent object" |wc
12 96 971
3.在19c測試看看:
SYS@192.168.ccc.ddd:1521/dyhis> @ prxx
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 19.0.0.0.0
BANNER : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
BANNER_FULL : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.9.0.0.0
BANNER_LEGACY : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
--//該資料庫沒有采用PDB模式。
SYS@192.168.ccc.ddd:1521/dyhis> @ dc.txt dc_props
GETS FASTGETS
---------- ----------
422989228 0
VALUE
--------
ZHS16GBK
GETS_DELTA GETS_DELTAF GETS FASTGETS
---------- ----------- ---------- ----------
90 0 422989318 0
--// 90
SYS@192.168.ccc.ddd:1521/dyhis> @ dc.txt dc_cdbprops
GETS FASTGETS
---------- ----------
34835249 0
VALUE
--------
ZHS16GBK
GETS_DELTA GETS_DELTAF GETS FASTGETS
---------- ----------- ---------- ----------
7 0 34835256 0
--//7
--//90+7 = 97
SYS@192.168.ccc.ddd:1521/dyhis> select cache_name, existent, count(*) cnt from v$rowcache_parent where cache_name in
('dc_props','dc_cdbprops') group by cache_name, existent;
CACHE_NAME E CNT
------------- - ----------
dc_props Y 41
dc_props N 43
dc_cdbprops N 6
--// 41+43+6 = 90, 也有7次的差距。
SELECT cache#
,TYPE
,subordinate#
,parameter
,COUNT
,usage
,fixed
,gets
,fastgets
FROM v$rowcache
WHERE parameter IN ('dc_props', 'dc_cdbprops') ;
CACHE# TYPE SUBORDINATE# PARAMETER COUNT USAGE FIXED GETS FASTGETS
------ ------ ------------ -------------------- ---------- -------- ---------- ---------- ----------
15 PARENT dc_props 84 84 0 422990088 0
60 PARENT dc_cdbprops 6 6 0 34835256 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2840020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20211026]關於18c row cache mutex.txtMutex
- [20191125]探究等待事件的本源.txt事件
- [20191126]探究等待事件的本源2.txt事件
- [20191127]探究等待事件的本源4.txt事件
- 【等待事件】library cache pin事件
- 當刪除oracle資料庫user時發生row cache lock 等待事件Oracle資料庫事件
- 等待事件enq: TX - row lock contention事件ENQ
- latch:library cache lock等待事件事件
- [20240827]分析為什麼出現library cache lock等待事件2.txt事件
- [20240828]分析為什麼出現library cache lock等待事件5.txt事件
- [20201203]探究library cache mutex X 3.txtMutex
- 【TUNE_ORACLE】等待事件之“library cache lock”Oracle事件
- 【TUNE_ORACLE】等待事件之“library cache pins”Oracle事件
- [20200217]使用snapper探究DBMS_SHARED_POOL.MARKHOT標識熱物件的等待事件.txtAPP物件事件
- [20191203]大量resmgrcpu quantum等待事件.txt事件
- [20220518]enq FU - contention等待事件.txtENQ事件
- [20201117]解析cursor pin S等待事件.txt事件
- [20220531]inactive session等待事件2.txtSession事件
- [20220531]模擬inactive session等待事件.txtSession事件
- 33、buffer_cache_3(redo的產生、LRBA、buffer cache裡的等待事件)事件
- [20200223]關於latch and mutext的優化.txtMutex優化
- [20201204]關於等待事件Log File Sync.txt事件
- [20190319]shared pool latch與library cache latch的簡單探究.txt
- [20210512]shared pool latch與library cache latch的簡單探究.txt
- [20180918]等待事件SQL/Net more data from client.txt事件SQLclient
- [20180925]等待事件SQLNet more data from client 6.txt事件SQLclient
- [20180922]等待事件SQLNet more data from client 4.txt事件SQLclient
- [20180920]等待事件SQLNet more data from client 3.txt事件SQLclient
- [20180926]等待事件SQLNet more data from client 7.txt事件SQLclient
- [20210315]理解db file parallel read等待事件3.txtParallel事件
- [20210315]理解db file parallel read等待事件4.txtParallel事件
- [20210207]使用gdb檢視等待事件11g.txt事件
- Solidity事件,等待事件Solid事件
- [20211229]再論19c latch free等待事件分析.txt事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- [20210520]11g shared pool latch與library cache mutex的簡單探究.txtMutex
- [20191125]18c oraversion.txt
- 【ASK_ORACLE】Row Cache Enqueue鎖之概念篇OracleENQ