ORACLE鎖的總結
整理了一下ORACLE鎖的東西
------------------------------------------------------------------------------------------------------------
v$lock檢視的各個列及其說明
ADDR
RAW(4)
在記憶體中鎖定的物件的地址
KADDR
RAW(4)
在記憶體中鎖的地址
SID
NUMBER
保持或申請鎖的會話的標識號
TYPE
VARCHAR2(2)
鎖的型別。
TX=行鎖或事務鎖;TM=表鎖或DML鎖;UL=PL/SQL使用者鎖
ID1
NUMBER
鎖的第1標識號。
如果鎖的型別是TM,該值表示將要被鎖定的物件的標識號;
如果鎖的型別是TX,該值表示撤銷段號碼的十進位制值
ID2
NUMBER
鎖的第2標識號。
如果鎖的型別是TM,該值為0;
如果鎖的型別是TX,該值表示交換次數
LMODE
NUMBER
會話保持的鎖的模式。
0=None;1=Null;2=Row-S (SS);3=Row-X (SX);
4=Share;5=S/Row-X (SSX);6=Exclusive
REQUEST
NUMBER
會話申請的鎖的模式。與LMODE中的模式相同
CTIME
NUMBER
以秒為單位的,獲得當前鎖(或轉換成當前鎖的模式)以來的時間
BLOCK
NUMBER
當前鎖是否阻塞另一個鎖。
0=不阻塞;1=阻塞
V$LOCKED_OBJECT檢視的各個列及其說明
列名
資料型別
說明
XIDUSN
NUMBER
撤銷段號碼
XIDSLOT
NUMBER
被鎖定的物件在撤銷段中的位置
XIDSQN
NUMBER
序列號
OBJECT_ID
NUMBER
被鎖定的物件的標識號
SESSION_ID
NUMBER
會話的標識號
ORACLE_USERNAME
VARCHAR2(30)
Oracle使用者名稱
OS_USER_NAME
VARCHAR2(30)
作業系統使用者名稱
PROCESS
VARCHAR2(12)
作業系統程式標識號
LOCKED_MODE
NUMBER
物件被鎖定的模式。
0=None;1=Null;2=Row-S (SS);3=Row-X (SX);
4=Share;5=S/Row-X (SSX);6=Exclusive
DBA_LOCKS檢視的各個列及其說明
列名
資料型別
說明
SESSION_ID
NUMBER
保持或申請鎖的會話的標識號
LOCK_TYPE
VARCHAR2(26)
鎖的型別
MODE_HELD
VARCHAR2(40)
保持的鎖的模式
MODE_REQUESTED
VARCHAR2(40)
申請的鎖的模式
LOCK_ID1
VARCHAR2(40)
鎖的第1標識號
LOCK_ID2
VARCHAR2(40)
鎖的第2標識號
LAST_CONVERT
NUMBER
以秒為單位的,獲得當前鎖(或轉換成當前鎖的模式)以來的時間
BLOCKING_OTHERS
VARCHAR2(40)
當前鎖是否阻塞另一個鎖。
Not Blocking=不阻塞;Blocking=阻塞
DBA_WAITERS檢視的各個列及其說明
列名
資料型別
說明
WAITING_SESSION
NUMBER
等待鎖的會話(被阻塞的會話)的標識號
HOLDING_SESSION
NUMBER
保持鎖的會話(阻塞的會話)的標識號
LOCK_TYPE
VARCHAR2(26)
鎖的型別
MODE_HELD
VARCHAR2(40)
保持的鎖的模式
MODE_REQUESTED
VARCHAR2(40)
申請的鎖的模式
LOCK_ID1
NUMBER
鎖的第1標識號
LOCK_ID2
NUMBER
鎖的第2標識號
DBA_BLOCKERS檢視的各個列及其說明
列名
資料型別
說明
HOLDING_SESSION
NUMBER
顯示阻塞了其他會話的那些會話的標識號
-----------------------------------------------------------------------------------------------------
由sys使用者透過查詢與鎖相關的檢視來了解鎖,瞭解阻塞會話與被阻塞會話的sid、serial#、使用者名稱及其所使用的DML操作語句。
-----------------------------------------------------------------------------------------------------
set pagesize 40 linesize 150
column blockers format a45
column waiters format a45
select '阻塞者('||sb.sid||':'||sb.serial#||'-'||sb.username||')-'||qb.sql_text blockers,
'等待者('||sw.sid||':'||sw.serial#||'-'||sw.username||')-'||qw.sql_text waiters
from v$lock lb,v$lock lw,v$session sb,v$session sw,v$sql qb,v$sql qw
where lb.sid=sb.sid
and lw.sid=sw.sid
and sb.prev_sql_addr=qb.address
and sw.sql_address=qw.address
and lb.id1=lw.id1
and sb.lockwait is null
and sw.lockwait is not null
and lb.block=1;
-------------------------------------------------------------------------------------------------------
要了解哪些資料庫使用者的會話鎖定了物件、鎖定的模式是什麼、對應的作業系統使用者是在哪臺計算機上進行操作的、被鎖定的物件及其型別等資訊
-------------------------------------------------------------------------------------------------------
set pagesize 40 linesize 150
column username format a9
column sid format 9999
column serial# format 99999999
column mode_locked format a12
column os_user_name format a16
column object_name format a12
column object_type format a12
select s.username,s.sid,s.serial#,
decode(lo.locked_mode,
0,'none',
1,'null',
2,'row-s(ss)',
3,'row-x(sx)',
4,'share',
5,'s/row-x(ssx)',
6,'exclusive',
to_char(lo.locked_mode)) mode_locked,
lo.os_user_name,
do.object_name,do.object_type
from v$session s,v$locked_object lo,dba_objects do
where
lo.object_id=do.object_id;
--------------------------------------------------------------------------------------------------------
要了解阻塞者會話的sid、serial#資訊
--------------------------------------------------------------------------------------------------------
set pagesize 40 linesize 150
column username format a9
column sid format 9999
column serial# format 99999999
select s.username,s.sid,s.serial#
from v$session s,dba_blockers dbab
where s.sid=dbab.holding_session;
---------------------------------------
解鎖
---------------------------------------
alter system kill session 'sid,serial#';
------------------------------------------------------------------------------------------------------------
v$lock檢視的各個列及其說明
ADDR
RAW(4)
在記憶體中鎖定的物件的地址
KADDR
RAW(4)
在記憶體中鎖的地址
SID
NUMBER
保持或申請鎖的會話的標識號
TYPE
VARCHAR2(2)
鎖的型別。
TX=行鎖或事務鎖;TM=表鎖或DML鎖;UL=PL/SQL使用者鎖
ID1
NUMBER
鎖的第1標識號。
如果鎖的型別是TM,該值表示將要被鎖定的物件的標識號;
如果鎖的型別是TX,該值表示撤銷段號碼的十進位制值
ID2
NUMBER
鎖的第2標識號。
如果鎖的型別是TM,該值為0;
如果鎖的型別是TX,該值表示交換次數
LMODE
NUMBER
會話保持的鎖的模式。
0=None;1=Null;2=Row-S (SS);3=Row-X (SX);
4=Share;5=S/Row-X (SSX);6=Exclusive
REQUEST
NUMBER
會話申請的鎖的模式。與LMODE中的模式相同
CTIME
NUMBER
以秒為單位的,獲得當前鎖(或轉換成當前鎖的模式)以來的時間
BLOCK
NUMBER
當前鎖是否阻塞另一個鎖。
0=不阻塞;1=阻塞
V$LOCKED_OBJECT檢視的各個列及其說明
列名
資料型別
說明
XIDUSN
NUMBER
撤銷段號碼
XIDSLOT
NUMBER
被鎖定的物件在撤銷段中的位置
XIDSQN
NUMBER
序列號
OBJECT_ID
NUMBER
被鎖定的物件的標識號
SESSION_ID
NUMBER
會話的標識號
ORACLE_USERNAME
VARCHAR2(30)
Oracle使用者名稱
OS_USER_NAME
VARCHAR2(30)
作業系統使用者名稱
PROCESS
VARCHAR2(12)
作業系統程式標識號
LOCKED_MODE
NUMBER
物件被鎖定的模式。
0=None;1=Null;2=Row-S (SS);3=Row-X (SX);
4=Share;5=S/Row-X (SSX);6=Exclusive
DBA_LOCKS檢視的各個列及其說明
列名
資料型別
說明
SESSION_ID
NUMBER
保持或申請鎖的會話的標識號
LOCK_TYPE
VARCHAR2(26)
鎖的型別
MODE_HELD
VARCHAR2(40)
保持的鎖的模式
MODE_REQUESTED
VARCHAR2(40)
申請的鎖的模式
LOCK_ID1
VARCHAR2(40)
鎖的第1標識號
LOCK_ID2
VARCHAR2(40)
鎖的第2標識號
LAST_CONVERT
NUMBER
以秒為單位的,獲得當前鎖(或轉換成當前鎖的模式)以來的時間
BLOCKING_OTHERS
VARCHAR2(40)
當前鎖是否阻塞另一個鎖。
Not Blocking=不阻塞;Blocking=阻塞
DBA_WAITERS檢視的各個列及其說明
列名
資料型別
說明
WAITING_SESSION
NUMBER
等待鎖的會話(被阻塞的會話)的標識號
HOLDING_SESSION
NUMBER
保持鎖的會話(阻塞的會話)的標識號
LOCK_TYPE
VARCHAR2(26)
鎖的型別
MODE_HELD
VARCHAR2(40)
保持的鎖的模式
MODE_REQUESTED
VARCHAR2(40)
申請的鎖的模式
LOCK_ID1
NUMBER
鎖的第1標識號
LOCK_ID2
NUMBER
鎖的第2標識號
DBA_BLOCKERS檢視的各個列及其說明
列名
資料型別
說明
HOLDING_SESSION
NUMBER
顯示阻塞了其他會話的那些會話的標識號
-----------------------------------------------------------------------------------------------------
由sys使用者透過查詢與鎖相關的檢視來了解鎖,瞭解阻塞會話與被阻塞會話的sid、serial#、使用者名稱及其所使用的DML操作語句。
-----------------------------------------------------------------------------------------------------
set pagesize 40 linesize 150
column blockers format a45
column waiters format a45
select '阻塞者('||sb.sid||':'||sb.serial#||'-'||sb.username||')-'||qb.sql_text blockers,
'等待者('||sw.sid||':'||sw.serial#||'-'||sw.username||')-'||qw.sql_text waiters
from v$lock lb,v$lock lw,v$session sb,v$session sw,v$sql qb,v$sql qw
where lb.sid=sb.sid
and lw.sid=sw.sid
and sb.prev_sql_addr=qb.address
and sw.sql_address=qw.address
and lb.id1=lw.id1
and sb.lockwait is null
and sw.lockwait is not null
and lb.block=1;
-------------------------------------------------------------------------------------------------------
要了解哪些資料庫使用者的會話鎖定了物件、鎖定的模式是什麼、對應的作業系統使用者是在哪臺計算機上進行操作的、被鎖定的物件及其型別等資訊
-------------------------------------------------------------------------------------------------------
set pagesize 40 linesize 150
column username format a9
column sid format 9999
column serial# format 99999999
column mode_locked format a12
column os_user_name format a16
column object_name format a12
column object_type format a12
select s.username,s.sid,s.serial#,
decode(lo.locked_mode,
0,'none',
1,'null',
2,'row-s(ss)',
3,'row-x(sx)',
4,'share',
5,'s/row-x(ssx)',
6,'exclusive',
to_char(lo.locked_mode)) mode_locked,
lo.os_user_name,
do.object_name,do.object_type
from v$session s,v$locked_object lo,dba_objects do
where
lo.object_id=do.object_id;
--------------------------------------------------------------------------------------------------------
要了解阻塞者會話的sid、serial#資訊
--------------------------------------------------------------------------------------------------------
set pagesize 40 linesize 150
column username format a9
column sid format 9999
column serial# format 99999999
select s.username,s.sid,s.serial#
from v$session s,dba_blockers dbab
where s.sid=dbab.holding_session;
---------------------------------------
解鎖
---------------------------------------
alter system kill session 'sid,serial#';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-666260/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於ORACLE鎖的總結Oracle
- 關於ORACLE的鎖表與解鎖總結Oracle
- Oracle的鎖機制歸納總結Oracle
- 轉貼:Oracle的鎖機制歸納總結Oracle
- 對於Oracle鎖的一些理論總結Oracle
- 鎖的總結筆記筆記
- MySQL鎖總結MySql
- 分散式鎖總結分散式
- JUC鎖種類總結
- mysql鎖機制總結MySql
- 死鎖問題總結
- InnoDB常用鎖總結(行鎖、間隙鎖、臨鍵鎖、表鎖)
- 關於資料庫鎖的總結資料庫
- oracle事務transaction鎖lock一點兒小思考或總結Oracle
- Oracle 總結Oracle
- mysql鎖與事務總結MySql
- [zt] sql server 死鎖總結SQLServer
- java裡的鎖總結(synchronized隱式鎖、Lock顯式鎖、volatile、CAS)Javasynchronized
- MySql關於鎖的一些總結MySql
- ORACLE EXPLAIN PLAN的總結OracleAI
- ORACLE中impdp的總結Oracle
- ORACLE中的EXPDP總結Oracle
- 【問答分享第一彈】MySQL鎖總結:MySQL行鎖、表鎖、排他鎖、共享鎖的特點MySql
- Oracle特性總結Oracle
- Oracle synonyms總結Oracle
- Oracle session總結OracleSession
- oracle sqlldr 總結OracleSQL
- 檢視oracle死鎖程式並結束死鎖Oracle
- Oracle analyze table的使用總結Oracle
- ORACLE關於NULL的總結OracleNull
- 有關Oracle role的總結Oracle
- ORACLE診斷事件的總結Oracle事件
- oracle的TM鎖、TX鎖Oracle
- oracle的鎖Oracle
- oracle體系結構總結Oracle
- 關於鎖的幾個動態檢視的總結
- Oracle學習總結Oracle
- Oracle rman 命令總結Oracle