使用oracle 10704 event分析獲取鎖lock及死鎖deadlock系列九
結論
1,EVENT 10704獲取會話獲取鎖的詳細資訊2,產生的trace包括did資訊,其分為3部分
3,DID分為
資料庫例項編號
ORACLE程式號(須由16進位制轉化為10進位制)
ORACLE會話對應的serial#(同上要轉化)
4,產生的TRACE檔案內容如下:
*** 2015-10-30 03:49:32.791
ksqgtl *** CU-cf12e248-00000000 mode=6 flags=0x10010 timeout=300 *** ---重點關注,這裡內容沒有理解是何含義
ksqgtl: no transaction
ksqgtl: use existing ksusetxn DID
ksqgtl:
ksqlkdid: 0001-0083-00002D97 --重點關注
*** 2015-10-30 03:49:32.807
*** ksudidTrace: ksqgtl
ksusesdi: 0000-0000-00000000
ksusetxn: 0001-0083-00002D97 --重點關注
ksqgtl: RETURNS 0 --重點關注,表明獲取鎖成功
5,用10704便於深入分析鎖的獲取以及死鎖情況,可以診斷死鎖相關的問題
引起新的問題
1,對於10704 event理解還僅是一個初步,還要進行大量測試,理解及閱讀相關TRACE檔案測試
SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
SQL> show user
USER is "SCOTT"
SQL> create table t_parselock(a int);
Table created.
SQL> select pid,spid from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat where rownum=1));
PID SPID
---------- ------------------------------------------------
155 20585
SQL> select count(*) from t_parselock;
no rows selected
SQL> oradebug event 10704 trace name context forever, level 12
Statement processed
SQL> oradebug event 10704 trace name context off
Statement processed.
SQL> oradebug tracefile_name
/oracle/diag/rdbms/guowang/guowang/trace/guowang_ora_20585.trc
trace檔案的內容,請多注意我標記的重點關注對應的記錄
*** 2015-10-30 03:49:32.791
ksqgtl *** CU-cf12e248-00000000 mode=6 flags=0x10010 timeout=300 *** ---重點關注
ksqgtl: no transaction
ksqgtl: use existing ksusetxn DID
ksqgtl:
ksqlkdid: 0001-0083-00002D97 --重點關注
*** 2015-10-30 03:49:32.807
*** ksudidTrace: ksqgtl
ksusesdi: 0000-0000-00000000
ksusetxn: 0001-0083-00002D97 --重點關注
ksqgtl: RETURNS 0 --重點關注
*** 2015-10-30 03:49:33.009
ksqrcl: CU,cf12e248,0
ksqrcl: returns 0
但是我們還是不知這些記錄到底含義是什麼,換個思路,先查下v$sqlareq的內容,或許可以發現一些線索
did的構成
ksqlkdid: 0001-0083-00002D97 --重點關注
0001即例項編號
83即v$process.pid,且83是16進位制,要轉換為10進位制
SQL> select to_number('83','xxxxxxxx') from dual;
TO_NUMBER('83','XXXXXXXX')
--------------------------
131
SQL> select addr,spid,pid,pname from v$process where pid=131;
ADDR SPID PID PNAME
---------------- ------------------------------------------------ ---------- ----------
00000000DD622C80 10493 131
SQL> host ps -ef|grep 10493
oracle 10493 10480 0 03:48 ? 00:00:00 oracleguowang (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
SQL> select sid,serial#,sql_id from v$session where paddr='00000000DD622C80';
SID SERIAL# SQL_ID
---------- ---------- --------------------------
241 11750 8mynvfkwm3k60
SQL> select sql_text,sql_id,address,hash_value,invalidations,object_status from v$sqlarea where sql_id='8mynvfkwm3k60';
SQL_TEXT SQL_ID ADDRESS HASH_VALUE INVALIDATIONS OBJECT_STA
------------------------------ -------------------------- ---------------- ---------- ------------- ----------
select sid,serial#,sql_id from 8mynvfkwm3k60 00000000DE4D8E48 3107047616 0 VALID
v$session where paddr='000000
00DD622C80'
SQL> select sid,serial#,sql_id,prev_sql_id from v$session where paddr='00000000DD622C80';
SID SERIAL# SQL_ID PREV_SQL_ID
---------- ---------- -------------------------- --------------------------
241 11750 ccgtgra1jsjy2 daj6mz9skm3rw
SQL> select to_number('2D97','xxxxxxxx') from dual;
TO_NUMBER('2D97','XXXXXXXX')
----------------------------
11671
可見DID的第三部分相當於V$SESSION的SERIAL#
個人簡介:
8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
服務過的客戶:
中國電信
中國移動
中國聯通
中國電通
國家電網
四川達州商業銀行
湖南老百姓大藥房
山西省公安廳
中國郵政
北京302醫院
河北廊坊新奧集團公司
專案經驗:
中國電信3G專案AAA系統資料庫部署及最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
聯絡方式:
手機:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
itpub部落格名稱:wisdomone1 http://blog.itpub.net/9240380/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1819341/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle lock轉換及oracle deadlock死鎖系列一Oracle
- RDSSQLServer死鎖(Deadlock)系列之三自動部署Profiler捕獲死鎖SQLServer
- oracle deadlock死鎖trace file分析之一Oracle
- 【DEADLOCK】Oracle“死鎖”模擬Oracle
- oracle deadlock死鎖trace file分析之一增補Oracle
- oracle lock dba_ddl_locks獲取表級共享鎖及表級排它鎖之系列八Oracle
- 死鎖_DeadLock_示例
- Oracle中的死鎖Dead Lock(一)Oracle
- Oracle中的死鎖Dead Lock(二)Oracle
- ORACLE 死鎖分析過程Oracle
- MySQL死鎖系列-常見加鎖場景分析MySql
- [Java]一個DeadLock(死鎖)的例子Java
- 死鎖分析
- SQ死鎖及死鎖的解決
- ORACLE死鎖及處理方式Oracle
- Oracle死鎖原因產生分析Oracle
- oracle 死鎖Oracle
- MySQL死鎖系列-線上死鎖問題排查思路MySql
- MYSQL INNODB replace into 死鎖 及 next key lock 淺析MySql
- 死鎖案例分析
- HashMap死鎖分析HashMap
- Oracle死鎖查詢及處理Oracle
- [CareerCup] 16.4 A Lock Without Deadlocks 無死鎖的鎖
- Java 死鎖(DeadLock)例項分析和預防[base jdk8]JavaJDK
- 基於10.2.0.1 rac deadlock死鎖 trace file分析_增補二
- 【鎖】Oracle鎖系列Oracle
- MySQL:一個死鎖分析 (未分析出來的死鎖)MySql
- SQLServer的死鎖分析(1):頁鎖SQLServer
- 殺死Oracle死鎖程式Oracle
- oracle lock鎖_v$lock_轉Oracle
- 檢視oracle死鎖程式並結束死鎖Oracle
- oracle死鎖的檢視及kill方法Oracle
- 使用jstack檢測Java應用的死鎖(deadlock)狀態JSJava
- mysql死鎖deadlock相關幾個系統變數innodb_lock_wait_timeoutMySql變數AI
- GreatSQL 死鎖案例分析SQL
- ABAP面試題系列:寫一組會出現死鎖(Deadlock)的ABAP程式面試題
- innodb_lock_monitor解決mysql死鎖MySql
- MySQL鎖等待與死鎖問題分析MySql