1、查看系统中那些对象被锁,以及对于的sql和session id
select distinct * from (
select oracle_username || ' (' || s.osuser || ')' username,
sql.SQL_TEXT,
s.sid || ',' || s.serial# sess_id,
owner || '.' || object_name object,
object_type,
decode(l.block, 0, 'Not Blocking', 1, 'Blocking', 2, 'Global') status,
decode(v.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(lmode)) mode_held
from v$locked_object v, dba_objects d, v$lock l, v$session s,v$sqlarea sql
where v.object_id = d.object_id
and v.object_id = l.id1
and v.session_id = s.sid
and s.SQL_ID=sql.SQL_ID
order by oracle_username, session_id
)a;
or
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id
and object_name ='HDM_COMPLETED_RATE';
OWNER OBJECT_NAME SESSION_ID LOCKED_MODE
------------------------------ -------------------------------------- -------
WSSB SBDA_PSHPFTDT 22 3
WSSB_RTREPOS WB_RT_SERVICE_QUEUE_TAB 24 2
WSSB_RTREPOS WB_RT_NOTIFY_QUEUE_TAB 29 2
WSSB_RTREPOS WB_RT_NOTIFY_QUEUE_TAB 39 2
WSSB SBDA_PSDBDT 47 3
WSSB_RTREPOS WB_RT_AUDIT_DETAIL 47 3
2、更具查询的sql排查原因,避免人为或程序原因再次出现该现象。
3、杀会话
alter system kill session 'sid,serial#';
例如:alter system kill session '101,1508';