視圖名 | 描述 | 主要字段說明 |
v$session | 查詢會話的信息和鎖的信息。 |
sid,serial#:表示會話信息。
program:表示會話的應用程序信息。
row_wait_obj#:表示等待的對象,和dba_objects中的object_id相對應。
lockwait :該會話等待的鎖的地址,與v$lock的kaddr對應.
|
v$session_wait | 查詢等待的會話信息。 |
sid:表示持有鎖的會話信息。
Seconds_in_wait:表示等待持續的時間信息
Event:表示會話等待的事件,鎖等於enqueue
|
dba_locks | 對v$lock的格式化視圖。 |
Session_id:和v$lock中的Sid對應。
Lock_type:和v$lock中的type對應。
Lock_ID1: 和v$lock中的ID1對應。
Mode_held,mode_requested:和v$lock中
的lmode,request相對應。
|
v$locked_object | 只包含DML的鎖信息,包括回滾段和會話信息。 |
Xidusn,xidslot,xidsqn:表示回滾段信息。和
v$transaction相關聯。
Object_id:表示被鎖對象標識。
Session_id:表示持有鎖的會話信息。
Locked_mode:表示會話等待的鎖模式的信
息,和v$lock中的lmode一致。
|
1.查詢數據庫中的鎖
select * from v$lock;
select * from v$lock where block=1;
2.查詢被鎖的對象
select * from v$locked_object;
3.查詢阻塞
查被阻塞的會話
select * from v$lock where lmode=0 and type in ('TM','TX');
查阻塞別的會話鎖
select * from v$lock where lmode>0 and type in ('TM','TX');
4.查詢數據庫正在等待鎖的進程
select * from v$session where lockwait is not null;
5.查詢會話之間鎖等待的關係
select * from v$lock;
select * from v$lock where block=1;
2.查詢被鎖的對象
select * from v$locked_object;
3.查詢阻塞
查被阻塞的會話
select * from v$lock where lmode=0 and type in ('TM','TX');
查阻塞別的會話鎖
select * from v$lock where lmode>0 and type in ('TM','TX');
4.查詢數據庫正在等待鎖的進程
select * from v$session where lockwait is not null;
5.查詢會話之間鎖等待的關係
select a.sid holdsid,b.sid waitsid,a.type,a.id1,a.id2,a.ctime from v$lock a,v$lock b
where a.id1=b.id1 and a.id2=b.id2 and a.block=1 and b.block=0;
6.查詢鎖等待事件
select * from v$session_wait where event='enqueue';
select * from v$session_wait where event='enqueue';
解決方案:
select session_id from v$locked_object; --首先得到被鎖對象的session_id
SELECT sid, serial#, username, osuser FROM v$session where sid = session_id; --通過上面得到的session_id去取得v$session的sid和serial#,然後對該進程進行終止。
ALTER SYSTEM KILL SESSION 'sid,serial';
example:
ALTER SYSTEM KILL SESSION '13, 8';
ALTER SYSTEM KILL SESSION 'sid,serial';
example:
ALTER SYSTEM KILL SESSION '13, 8';