oracle鎖的管理(轉)
oracle鎖的管理。
[@more@]鎖的種類:
資料鎖DML,字典鎖DDL,表鎖TM,事務鎖TX,人工鎖定
DML鎖的模式
1:空
2:行共享(RS):行共享是一個共享表鎖,它用於專用鎖。
3:行專用(RX):用於行的修改
4:共享鎖(S):阻止其他DML操作
5:共享行專用(SRX):阻止其他事務操作
6:專用(X):獨立訪問使用
V$LOCK
欄位內容:SID,TYPE,ID1,ID2,LMODE,REQUEST,CTIME,BLOCK
TYPE:TX(TM,DML,表鎖),MR介質恢復,ST磁碟空間管理
LMODE/REQUEST:01:空, 2:RS, 3:RX 4:S 5:SRX 6:X
LMODE:0,1表明程式已經獲得一個鎖,非0,等待獲得一個瑣
ID1:TX狀態下,等待鎖的物件ID,TM狀態下,回滾號碼的十進位制
ID2:TM:0 TX:回滾槽重新使用的次數
V$session_wait
列舉了活動會話正在等待的事件,其中P2TEXT,P3TEXT能從V$LOCK中取得
V$SYSSTAT
包含對整個系統的所有重要的統計資訊,可以使用v$sysstat對每一個會話等待鎖定的次數進行統計
有用的SQL:
1:檢查系統中鎖的簡單指令碼:
Select s.username, s.sid, l.type, l.id1, l.id2, l.lmode, l.request, p.spid PID
From v$lock l, v$session s, v$process p
Where s.sid = l.sid And p.addr = s.paddr And s.username is not null
Order By id1, s.sid,request;
獲取使用者SID,PID,鎖的種類,鎖的型別等資訊
2:獲取資料庫鎖的資訊(使用者ID,OBJECT,SQL)
REM *****************************************************************
REM TITLE : Generic Script which displays SQL Text, REM SID
and Object name of the locks currently REM being held in the database.
REM MODULE : lock_held.sql
Set pagesize 60
Set linesize 132
select s.username username, a.sid sid, a.owner||'.'||a.object object, s.lockwait, t.sql_text SQL
from v$sqltext t, v$session s, v$access a
where t.address = s.sql_address and t.hash_value = s.sql_hash_value
and s.sid = a.sid and a.owner != 'SYS'
and upper(substr(a.object,1,2)) != 'V$' ;
REM REM End of "Lock Monitoring Script" REM
3:產生等待鎖的使用者報告
SELECT sn.username,m.sid, m.type, DECODE(m.lmode, 0, 'None', 1, 'Null', 2, 'Row Share',
3, 'Row Excl.', 4, 'Share', 5, 'S/Row Excl.', 6, 'Exclusive', lmode,
ltrim(to_char(lmode,'990'))) lmode,
DECODE(m.request, 0, 'None', 1, 'Null', 2, 'Row Share', 3, 'Row Excl.', 4, 'Share',
5, 'S/Row Excl.', 6, 'Exclusive', request, ltrim(to_char(m.request,'990'))) request,
m.id1, m.id2
FROM v$session sn, v$lock m |
WHERE (sn.sid = m.sid AND m.request != 0)
OR ( sn.sid = m.sid AND m.request = 0 AND lmode != 4 AND (id1, id2) IN (SELECT s.id1, s.id2
FROM v$lock s
WHERE request != 0 AND s.id1 = m.id1 AND s.id2 = m.id2) )
ORDER BY id1, id2, m.request;
4:顯示持有鎖的資訊:
select nvl(S.USERNAME,'Internal') username, nvl(S.TERMINAL,'None') terminal, L.SID||','||S.SERIAL# Kill,
U1.NAME||'.'||substr(T1.NAME,1,20) tab,
decode(L.LMODE, 1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share',
5,'Share Row Exclusive', 6,'Exclusive',null) lmode,
decode(L.REQUEST,1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share',
5,'Share Row Exclusive', 6,'Exclusive',null) request
from V$LOCK L, V$SESSION S, SYS.USER$ U1, SYS.OBJ$ T1
where L.SID = S.SID and T1.OBJ# = decode(L.ID2,0,L.ID1,L.ID2) and U1.USER# = T1.OWNER# and S.TYPE != 'BACKGROUND'
order by 1,2,5
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9417382/viewspace-932288/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE鎖的管理Oracle
- ORACLE鎖的管理(zt)Oracle
- 轉載--oracle DML鎖Oracle
- Oracle鎖競爭和管理 CUUGOracle
- ORACLE鎖機制-轉載Oracle
- oracle 鎖(轉自網路)Oracle
- 轉載oracle資料庫鎖Oracle資料庫
- [轉載]oracle手動鎖表Oracle
- oracle lock鎖_v$lock_轉Oracle
- Oracle 鎖簡單介紹(轉)Oracle
- Oracle鎖簡單介紹(轉)Oracle
- oracle的TM鎖、TX鎖Oracle
- Oracle job 管理(轉)Oracle
- Oracle的鎖Oracle
- Oracle 管理的小tip.()(轉)Oracle
- 轉:Oracle 解鎖Record is locked by another useOracle
- Oracle的鎖表與解鎖Oracle
- 轉貼:Oracle的鎖機制歸納總結Oracle
- 查詢 Oracle 使用者鎖的DLL SQL(轉)OracleSQL
- 轉載:深入淺出oracle鎖 釋放鎖---原理篇Oracle
- Oracle的TX鎖(行級鎖、事務鎖)Oracle
- ORACLE8的分割槽管理(轉)Oracle
- Oracle中的鎖Oracle
- ORACLE 鎖的概念Oracle
- 【鎖】Oracle鎖系列Oracle
- ORACLE 鎖表的解決方法及查詢引起鎖表SQL語句[轉]OracleSQL
- oracle 鎖表、解鎖的語句Oracle
- oracle lock轉換及oracle deadlock死鎖系列一Oracle
- RAC 鎖管理與鎖問題的定位(二)
- RAC 鎖管理與鎖問題的定位(一)
- ORACLE分割槽表管理[轉]Oracle
- 轉載:ORACLE8的分割槽管理Oracle
- Oracle的實體化檢視管理 (轉)Oracle
- oracle檢視被鎖的表和解鎖Oracle
- oracle鎖Oracle
- oracle 互鎖的sqlOracleSQL
- oracle鎖阻塞的分析Oracle
- ORACLE鎖的總結Oracle