Oracle中診斷阻塞的session
建立測試環境:
TEST@ PROD> create table t(id int constraint pk_id2 primary key,val int);
TEST@ PROD> select * from t;
ID VAL
---------- ----------
1 1
2 2
session 1:
檢視SID:
SQL> select distinct sid from v$mystat;
SID
----------
125
update 資料,但不要提交:
TEST@ PROD> update t set val = 3 where id=1;
1 row updated.
session 2:
TEST@ PROD> select distinct sid from v$mystat;
SID
----------
141
update 資料,操作被阻塞:
TEST@ PROD> update t set val = 4 where id=1;
session 3(query):
但有活動事務對物件加鎖的時候,會在v$locked_object檢視中有記錄如object_id,session_id等,
通常被阻塞的session的XIDUSN,XIDSLOT,XIDSQN欄位都為空 ,下圖中session_id為141的是被阻塞的session.
SQL> select * from v$locked_object;
XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE
---------- ---------- ---------- ---------- ---------- --------------- -------------------- ------------------------ -----------
5 21 1141 69926 125 TEST oracle 32086 3
0 0 0 69926 141 TEST oracle 31089 3
SQL> SELECT a.sid blocking_sid ,b.sid blocked_sid FROM v$lock a ,v$lock b
2 WHERE b.id1=a.id1 AND a.id2=b.id2
3 AND a.sid<>b.sid
4 AND b.request<>0;
BLOCKING_SID BLOCKED_SID
------------ -----------
125 141
在透過v$session可以查到session相關的資訊,被阻塞的status一般為ACTIVE,還可以透過sql_address聯合v$sql找到被阻塞的SQL語句.
SQL> select sid,serial#,status,sql_address from v$session where sid in(125,141);
SID SERIAL# STATUS SQL_ADDRESS
---------- ---------- -------- ----------------
125 27 INACTIVE 00
141 37 ACTIVE 00000000B8DFDF38
檢視被block 的SQL
SQL> select sql_text from V$sql where address='00000000B8DFDF38';
SQL_TEXT
------------------------------------------------------------------------------------------
update t set val = 4 where id=1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27036311/viewspace-776874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中診斷阻塞session的方法 blocking errorOracleSessionBloCError
- oracle session阻塞查詢OracleSession
- ORACLE診斷案例Oracle
- Oracle故障診斷Oracle
- ORACLE診斷事件Oracle事件
- oracle 效能診斷工具Oracle
- Oracle診斷事件列表Oracle事件
- ORACLE診斷事件(zt)Oracle事件
- ORACLE診斷事件的總結Oracle事件
- Oracle診斷事件列表(轉)Oracle事件
- oracle診斷工具-RDA使用Oracle
- oracle 事件診斷詳細Oracle事件
- oracle sqlt(sqltxplain) 診斷工具OracleSQLAI
- Oracle診斷工具RDA使用Oracle
- Oracle效能診斷藝術Oracle
- 在Oracle10g中診斷效能問題Oracle
- 如何診斷RAC系統中的
- 9 Oracle Data Guard 故障診斷Oracle
- Oracle診斷案例-Sql_traceOracleSQL
- oracle之 redo過高診斷Oracle
- Oracle所有診斷事件列表eventsOracle事件
- 【Oracle】資料庫hang 診斷Oracle資料庫
- Oracle GoldenGate(OGG)診斷OracleGo
- Oracle效能診斷一例Oracle
- Oracle診斷事件例項(一)Oracle事件
- 【轉】oracle診斷工具-RDA使用Oracle
- Oracle配置資料庫診斷Oracle資料庫
- oracle 10053診斷事件Oracle事件
- oracle診斷工具-RDA使用(轉)Oracle
- 檢視引起阻塞的SessionSession
- 遭遇cursor:pin x等待事件定位阻塞會話診斷過程事件會話
- 【譯】.NET 5 中的診斷改進
- ORACLE中的KILLED SESSIONOracleSession
- Oracle效能診斷檢視總結Oracle
- 【RAC】Oracle Clusterware 診斷收集指令碼Oracle指令碼
- 部落格連結—Oracle故障診斷Oracle
- zt_oracle診斷事件event列表Oracle事件
- Oracle中查詢阻塞與被阻塞SID的方法Oracle