[20210521]11g shared pool latch與library cache mutex的簡單探究4.txt
[20210521]11g shared pool latch與library cache mutex的簡單探究4.txt
--//繼續昨天的測試:
http://blog.itpub.net/267265/viewspace-2773083/ =>[20210520]11g shared pool latch與library cache mutex的簡單探究3.txt
當時的總結:
--//很明顯前面3次出現都需要遇到這兩個等待事件,
--//第1次library cache: mutex X,再持有latch: shared pool
--//第2,3次先持有latch: shared pool,然後才是library cache: mutex X.
--//第4次沒有需要latch: shared pool,library cache: mutex X。
--//有點不好理解的地方是為什麼第1次library cache: mutex X,再持有latch: shared pool,而後面的第2,3次先持有latch: shared
--//pool,然後才是library cache: mutex X.
--//會不會11g的sqlplus客戶端改變什麼導致的情況。因為11g下sqlplus執行後不會馬上釋放游標,會不會就是這個原因導致出現這樣的
--//情況。
1.環境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.測試:
SCOTT@book> @ s
SCOTT@book(295,5)> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
295 5 15988 DEDICATED 15989 21 3 alter system kill session '295,5' immediate;
$ cat latch_mutex.gdb
break kslgetl if $rdi==0X6010D860
commands
silent
printf "kslgetl %x, %d, %d, %d\n", $rdi, $rsi, $rdx, $rcx
c
end
break kglGetMutex if $rsi==0X80528f40
commands
silent
printf "kglGetMutex %x, %x, %x, %d\n", $rdi, $rsi, $rdx, $rcx
c
end
--//執行如下命令多次,避免一些遞迴。
--//desc dept;
--//Select * from dept where deptno=20;
--//select sysdate from dual;
--//session 1,第1次執行:
SCOTT@book(295,5)> select * from dept where deptno=20;
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
$ gdb -p 15989 -x latch_mutex.gdb
...
(gdb) c
Continuing.
kglGetMutex c0cc9e0, 80528f40, 7d4f8a18, 1
kslgetl 6010d860, 1, 0, 3980
--//session 1,順便執行其它語句,比如:
select sysdate from dual;
--//因為這條語句已經在測試前執行多次,游標已經快取。後面測試按照這樣的方式執行,也就是執行順序是:
select * from dept where deptno=20;
select sysdate from dual;
--//迴圈往復,不再說明:
--//session 1,第2次執行前執行:
SCOTT@book(44,11)> select sysdate from dual ;
SYSDATE
-------------------
2021-05-21 09:39:35
--//gdb介面會出現:
kslgetl 6010d860, 1, 2097785048, 3991
--//按照道理應該不會有輸出,因為上面的語句游標已經快取,可以推測這個就是前面的語句select * from dept where deptno=20;導致的情況。
--//session 1,第2次執行:
kglGetMutex c0cc9e0, 80528f40, 7d4f8a18, 1
kslgetl 6010d860, 1, 0, 4039
kslgetl 6010d860, 1, 0, 3980
kslgetl 6010d860, 1, 0, 4039
--//session 1,第3次執行前執行:
SCOTT@book(44,11)> select sysdate from dual ;
SYSDATE
-------------------
2021-05-21 09:42:25
--//gdb介面再次出現:
kslgetl 6010d860, 1, 2097785048, 3991
--//session 1,第3次執行:
kglGetMutex c0cc9e0, 80528f40, 7d4f8a18, 1
--//session 1,第3次執行前執行:
SCOTT@book(44,11)> select sysdate from dual ;
SYSDATE
-------------------
2021-05-21 09:43:51
--//gdb介面,這次沒有輸出,也就是一旦sql語句快取,不再出現呼叫kslgetl的情況。
--//session 1,第4次執行:
--//沒有任何輸出。
--//我反覆測試多次,都是這樣的情況。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2773241/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210520]11g shared pool latch與library cache mutex的簡單探究.txtMutex
- [20210520]11g shared pool latch與library cache mutex的簡單探究3.txtMutex
- 優化Shared Pool Latch與Library Cache Latch競爭優化
- 共享池之六:shared pool latch/ library cache latch /lock pin 簡介
- shared pool library cache latch 競爭優化辦法優化
- Shared Pool優化和Library Cache Latch衝突優化優化
- 故障排除:Shared Pool優化和Library Cache Latch衝突優化優化
- Shared pool的library cache lock/pin及硬解析
- 等待模擬-library cache shared pool 硬解析
- 深入理解shared pool共享池之library cache的library cache lock系列四
- 深入理解shared pool共享池之library cache的library cache pin系列三
- shared pool之三:library cache結構/library cache object的結構-dump LibraryHandleObject
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列6優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列5優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列4優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列3優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列2優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列1優化
- latch:shared pool的一點理解
- Flush an Object Out The Library Cache [SGA] Using The DBMS_SHARED_POOLObject
- 深入理解shared pool共享池之library cache系列一
- 深入理解shared pool共享池之library cache系列二
- 簡單分析shared pool(一)
- 簡單分析shared pool(二)
- 簡單分析shared pool(三)
- library cache: mutex X引發的故障Mutex
- latch:library cache lock等待事件事件
- 'cursor:mutex ..'/ 'cursor:pin ..'/ 'library cache:mutex ..'型別的等待事件Mutex型別事件
- Oracle Library cache mutex x tipsOracleMutex
- 轉_診斷latch:shared pool等待事件事件
- [20241108]跟蹤library cache lock library cache pin使用gdb(11g)4.txt
- [20201203]探究library cache mutex X 3.txtMutex
- [20210914]探究mutex的值 4.txtMutex
- 用markhot緩解library cache:mutex xMutex
- oracle library cache相關的等待事件及latchOracle事件
- oradebug poke模擬shared pool latch與硬解析原理小析
- [20170727]library cache: mutex X.txtMutex
- 一個關於latch: library cache事件的處理事件