ora-00054錯誤解決方案

 

視圖名 描述 主要字段說明
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 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 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';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章