獲取v$latch資料來源實驗
實驗環境:Oracle Rac 11.2.0.3
首先獲取v$latch的定義:
透過PL/SQL或者get ddl等常規途徑只能獲取到v_$latch相關的檢視資訊。
需要透過特殊方法獲取v$latch的ddl
可以透過set autotrace traceonly開啟狀態下執行select * from v$latch;得知表的資料來源是x$kslltr,結果如下:
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 352 | 0 (0)| 00:00:01 |
|* 1 | FIXED TABLE FULL| X$KSLLTR | 1 | 352 | 0 (0)| 00:00:01 |
透過sql_trace的方式因為版本問題,trace的輸出結構略有不同,在11.2.0.4.5中可以獲取的ddl,但是在我的實驗環境中無法獲取,方法如下
alter session set sql_trace=true;
select * from v$latch;
alter session set sql_trace=false;
select * from v$diag_info where name='Default Trace File';
tkprof xxxx.trc
透過10053trace的方式獲取到v$latch的具體底層資料來源,方法如下
alter session set events '10053 trace name context forever,level 1';
select * from v$latch;
alter session set events '10053 trace name context off';
select * from v$diag_info where name='Default Trace File';
vim /u01/app/oracle/diag/rdbms/irac/IRAC1/trace/IRAC1_ora_16791.trc
注意!請不要使用sys使用者做10053 trace,你是得不到結果的。
得到如下結果,從輸出可以看出,最終轉換的sql語句如下;
Final query after transformations:******* UNPARSED QUERY IS *******
SELECT "LT"."KSLLTADDR" "ADDR","LT"."KSLLTNUM" "LATCH#","LT"."KSLLTLVL" "LEVEL#","LT"."KSLLTNAM" "NAME","LT"."KSLLTHSH" "HASH","LT"."KSLLTWGT" "GETS","LT"."KSLLTWFF" "MISSES","LT"."KSLLTWSL" "SLEEPS","LT"."KSLLTNGT" "IMMEDIATE_GETS","LT"."KSLLTNFA" "IMMEDIATE_MISSES","LT"."KSLLTWKC" "WAITERS_WOKEN","LT"."KSLLTWTH" "WAITS_HOLDING_LATCH","LT"."KSLLTHST0" "SPIN_GETS","LT"."KSLLTHST1" "SLEEP1","LT"."KSLLTHST2" "SLEEP2","LT"."KSLLTHST3" "SLEEP3","LT"."KSLLTHST4" "SLEEP4","LT"."KSLLTHST5" "SLEEP5","LT"."KSLLTHST6" "SLEEP6","LT"."KSLLTHST7" "SLEEP7","LT"."KSLLTHST8" "SLEEP8","LT"."KSLLTHST9" "SLEEP9","LT"."KSLLTHST10" "SLEEP10","LT"."KSLLTHST11" "SLEEP11","LT"."KSLLTWTT" "WAIT_TIME" FROM SYS."X$KSLLTR" "LT" WHERE "LT"."INST_ID"=USERENV('INSTANCE')
kkoqbc: optimizing query block SEL$88122447 (#0)
從而得到v$latch的底層資料來源。
當然,如果每次想看到官方文件中沒有記載的檢視就去做一個10053trace,實在麻煩,可以使用如下方式,簡單方便的查詢到檢視的資料來源:
SQL> SELECT * FROM v$fixed_view_definition WHERE view_name = 'V$LATCH';
VIEW_NAME
--------------------------------------------------------------------------------
VIEW_DEFINITION
--------------------------------------------------------------------------------
V$LATCH
select addr,latch#,level#,name,hash,gets,misses,sleeps,immediate_gets, immediate
_misses,waiters_woken,waits_holding_latch,spin_gets, sleep1,sleep2,sleep3,sleep4
,sleep5,sleep6,sleep7,sleep8,sleep9, sleep10,sleep11,wait_time from gv$latch whe
re inst_id = USERENV('Instance')
SQL> SELECT * FROM v$fixed_view_definition WHERE view_name = 'GV$LATCH';
VIEW_NAME
--------------------------------------------------------------------------------
VIEW_DEFINITION
--------------------------------------------------------------------------------
GV$LATCH
select lt.inst_id,lt.kslltaddr,lt.kslltnum,lt.kslltlvl,lt.kslltnam, lt.ks
llthsh,lt.kslltwgt,lt.kslltwff, lt.kslltwsl,lt.kslltngt,lt.kslltnfa,lt.ks
lltwkc, lt.kslltwth,lt.ksllthst0,lt.ksllthst1,lt.ksllthst2, lt.ksl
lthst3,lt.ksllthst4,lt.ksllthst5,lt.ksllthst6,lt.ksllthst7, lt.ksllthst8,
lt.ksllthst9,lt.ksllthst10, lt.ksllthst11, lt.kslltwtt from x$kslltr lt
SQL>
功夫不負有心人,經過不懈的努力終於得到了v$latch是如何產生的,那麼這個檢視究竟有什麼用處呢,以後的部落格會分享。
這博文稽核的也太慢了吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29135257/viewspace-2146979/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring多資料來源獲取Spring
- Android使用getIdentifier()方法根據資源名來獲取資AndroidIDE
- 異源資料同步 → 如何獲取 DataX 已同步資料量?
- DataPipeline「自定義」資料來源,解決複雜請求邏輯外部資料獲取難題API
- golang 介面按需獲取資源Golang
- 登入驗證判斷,獲取後臺資料
- .NET CORE WEBAPI 後端獲取來源IPWebAPI後端
- 如何利用電商API介面來獲取商品資料API
- 獲得JD商品評論 API 如何實現實時資料獲取API
- Python獲取jsonp資料PythonJSON
- 1.獲取資料
- 獲取Wireshark資料流
- Modbus ASCII 獲取資料ASCII
- 實現多資料來源事務
- 如何透過API獲取實時商品資料API
- 為什麼要透過API介面來獲取資料API
- datatables 獲取 pageLength 和 pageStart,重新獲取table資料
- 如何獲取Mac/win軟體資源?Mac
- 談談Spring Boot 資料來源載入及其多資料來源簡單實現Spring Boot
- API商品資料介面呼叫實戰:爬蟲與資料獲取API爬蟲
- 使用URLConnection物件獲取網路資源資訊物件
- Android Activity Deeplink啟動來源獲取原始碼分析Android原始碼
- Spring-Boot 多資料來源配置+動態資料來源切換+多資料來源事物配置實現主從資料庫儲存分離Springboot資料庫
- request保持會話,尋找set-cookie來獲取資料會話Cookie
- Python量化交易系統實戰--獲取股票資料Python
- 實時獲取化工網商品詳情API資料API
- python爬蟲獲取天氣網實時資料Python爬蟲
- 獲取天氣介面資料
- Mysql批量大資料獲取MySql大資料
- 【譯】React如何獲取資料React
- datatables使用ajax獲取資料
- 如何獲取想要的資料?
- jqGrid獲取json資料方法JSON
- 從session中獲取資料Session
- 大資料實戰:電商該如何利用大資料獲取流量?大資料
- ODI基於源表時間戳欄位獲取增量資料時間戳
- 雲資料管理的未來已來,Veeam v11帶來更酷炫體驗!
- Android 通過名稱獲取資源IDAndroid
- 多資料來源與動態資料來源的權衡