select SID, SERIAL#, PREV_EXEC_START, LOGON_TIME, ACTION, CLIENT_IDENTIFIER, EVENT
from v$session where sid in
(select session_id from v$locked_object
where object_id in
(select object_id from dba_objects where object_name like 'CE_PAYMENT_DOCUMENTS'and
owner = 'CE'));
check application user lock :
SELECT DECODE (encrypted_user_password
, 'INVALID', 'Account locked'
, 'Account not locked')
FROM fnd_user
WHERE user_name = '&username';
fuser *concid.req'
select ses.sid,
ses.serial# serial#,
proc.spid,
ses.sql_id,
ses.process,
ses.last_call_et,
ses.event
from gv$session ses, gv$process proc
where ses.paddr = proc.addr and ses.process in ('&process_ID');
alter system kill session ---
select blocking_session, sid, serial#, wait_class,seconds_in_wait from v$session
where
blocking_session is not NULL order by blocking_session;
SELECT SUBSTR(TO_CHAR(w.session_id),1,5) WSID, p1.spid WPID,
SUBSTR(s1.username,1,12) "WAITING User",
SUBSTR(s1.osuser,1,8) "OS User",
SUBSTR(s1.program,1,20) "WAITING Program",
s1.client_info "WAITING Client",
SUBSTR(TO_CHAR(h.session_id),1,5) HSID, p2.spid HPID,
SUBSTR(s2.username,1,12) "HOLDING User",
SUBSTR(s2.osuser,1,8) "OS User",
SUBSTR(s2.program,1,20) "HOLDING Program",
s2.client_info "HOLDING Client",
o.object_name "HOLDING Object"
FROM gv$process p1, gv$process p2, gv$session s1,
gv$session s2, dba_locks w, dba_locks h, dba_objects o
WHERE w.last_convert > 120
AND h.mode_held != 'None'
AND h.mode_held != 'Null'
AND w.mode_requested != 'None'
AND s1.row_wait_obj# = o.object_id
AND w.lock_type(+) = h.lock_type
AND w.lock_id1(+) = h.lock_id1
AND w.lock_id2 (+) = h.lock_id2
AND w.session_id = s1.sid (+)
AND h.session_id = s2.sid (+)
AND s1.paddr = p1.addr (+)
AND s2.paddr = p2.addr (+)
ORDER BY w.last_convert desc;
select INST_ID, SID, TYPE, ID1, ID2, LMODE, REQUEST, CTIME, BLOCK
from gv$lock where (ID1,ID2,TYPE) in
(select ID1,ID2,TYPE from gv$lock where request>0);
SELECT aob.object_name ,aob.object_id ,vob.INST_ID ,vob.process
,vob.session_id,vob.ORACLE_USERNAME, vob.OS_USER_NAME, vob.LOCKED_MODE FROM
all_objects aob,
gv$locked_object vob WHERE aob.object_id = vob.object_id and object_name in
('WF_DEFERRED');
-- Lock in RAC
-- Run in any RAC Node
set lines 120
col BLOCK for 9
col LMODE for 9
col INST_ID for 9
col REQUEST for 9
col SID for 999999
select INST_ID, SID, TYPE, ID1, ID2, LMODE, REQUEST, CTIME, BLOCK
from gv$lock where (ID1,ID2,TYPE) in
(select ID1,ID2,TYPE from gv$lock where request>0)
order by ctime;
and then go to tail (last rows) for rows in which LMODE is non 0, these sessions
which have biggest lock time are root locking sessions.
select username,status,count(1) from v$session where sid in (select sid from
v$access
where OBJECT='&OBJ') group by username,status;
select OBJECT_ID,SESSION_ID,ORACLE_USERNAME,LOCKED_MODE
from v$locked_object
where OBJECT_ID='46994';
SELECT SID, OWNER, OBJECT, TYPE FROM V$ACCESS WHERE OBJECT = 'FND_REQUEST';
select sid,object from v$access where object='FND_LOBS';
select WAITING_SESSION, HOLDING_SESSION from dba_waiters;
Sep 03, 2012 01:36 PM
select 'SID ' || l1.INST_ID || ' x ' || l1.sid ||' is blocking ' || l2.INST_ID || '
x ' || l2.sid blocking from gv$lock l1, gv$lock l2 where l1.block =1 and l2.request
> 0 and l1.id1=l2.id1 and l1.id2=l2.id2;
select INST_ID, SID, decode(BLOCK,0,'') BLR, TYPE, ID1, ID2, LMODE, REQUEST, CTIME,
BLOCK
from gv$lock where (ID1,ID2,TYPE) in (select ID1,ID2,TYPE from gv$lock where
request>0) order
by id1,id2,lmode DESC;
sr
set lines 300;
set pages 500;
col OBJECT_NAME for a20;
col OBJECT_OWNER for a15;
col program for a15;
col USER_NAME for a10;
col LOCKED_TIME_Secs for a15;
col status for a10;
col LOCKED_TIME for a8;
col logon_time for a12;
select distinct s.sid "SID",serial# "SERIAL#", s.username
"USER_NAME",o.object_name "OBJECT_NAME", o.owner "OBJECT_OWNER" ,
s.status, s.program,s.logon_time ,l.ctime " LOCKED_TIME"
from gv$session s,gv$lock l,
gv$locked_object q, dba_objects o
where l.sid=s.sid and q.session_id=l.sid and o.object_id=q.object_id;
=======
select l.sid
,l.type "Tran Type"
,o.object_name "Object Name"
,decode(l.lmode,
0,'NONE',
1,'NULL',
2,'Row-SELECT (SS)',
3,'Row-X (SX)',
4,'SHARE',
5,'SELECT/Row-X (SSX)',
6,'EXCLUSIVE') "Mode"
,l.request "Request"
,s.type "Type"
from dba_objects o
,v$session s
,v$lock l
where l.id1=o.object_id and
s.sid=l.sid and
l.type != 'MR'
order by l.sid
google:
select object_name, s.sid, s.serial#, p.spid
from v$locked_object l, dba_objects o, v$session s, v$process p
where l.object_id = o.object_id and l.session_id = s.sid and s.paddr = p.addr;
alter system kill session 'sid,serial#';
dont use:
alter session set ddl_lock_timeout = 600;
to see locked objects:
SQL> set linesize 130
SQL> set pages 100
SQL> col username format a20
SQL> col sess_id format a10
SQL> col object format a25
SQL> col mode_held format a10
SQL> select oracle_username || ' (' || s.osuser || ')' username
, 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
where v.object_id = d.object_id
and v.object_id = l.id1
and v.session_id = s.sid
order by oracle_username
, session_id
/
USERNAME SESS_ID OBJECT OBJECT_TYPE
STATUS MODE_HELD
-------------------- ---------- ------------------------- -------------------
------------ ----------
MAXIMSG (A) 142,232 MAXIMSG.A TABLE Not
Blocking Row-X (SX)
OMS (DBA2\ershad) 143,280 OMS.T TABLE Not
Blocking Row-X (SX)
OMS (DBA2\ershad) 143,280 OMS.T1 TABLE Not
Blocking Row-X (SX)
set lines 100 pages 999
col username format a20
col sess_id format a10
col object format a25
col mode_held format a10
select oracle_username || ‘ (‘ || s.osuser || ‘)’ username
, 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
where v.object_id = d.object_id
and v.object_id = l.id1
and v.session_id = s.sid
order by oracle_username
, session_id;
Find Which ROW is locked :
select do.object_name
, row_wait_obj#
, row_wait_file#
, row_wait_block#
, row_wait_row#
, dbms_rowid.rowid_create (1, ROW_WAIT_OBJ#, ROW_WAIT_FILE#,
ROW_WAIT_BLOCK#, ROW_WAIT_ROW#)
from v$session s
, dba_objects do
where sid=&sid
and s.ROW_WAIT_OBJ# = do.OBJECT_ID;
**********************************************
every day tip sadeq:
detect table locking in Oracle Database and kill the session that lock's it.
==============================
SQL> SELECT LPAD(' ',DECODE(l.xidusn,0,3,0)) || l.oracle_username "User
Name",o.owner, o.object_name, o.object_type , l.session_id
FROM v$locked_object l, dba_objects o
WHERE l.object_id = o.object_id
ORDER BY o.object_id, 1 DESC ;
SQL> SELECT session_id "sid",SERIAL# "Serial",
substr(object_name,1,20) "Object",
substr(os_user_name,1,10) "Terminal",
substr(oracle_username,1,10) "Locker",
nvl(lockwait,'active') "Wait",
decode(locked_mode,
2, 'row share',
3, 'row exclusive',
4, 'share',
5, 'share row exclusive',
6, 'exclusive', 'unknown') "Lockmode",
OBJECT_TYPE "Type"
FROM
SYS.V_$LOCKED_OBJECT A,
SYS.ALL_OBJECTS B,
SYS.V_$SESSION c
WHERE
A.OBJECT_ID = B.OBJECT_ID AND
C.SID = A.SESSION_ID
ORDER BY 1 ASC, 5 DESC;
SQL> SELECT sid,serial# FROM v$session
WHERE session_id = ;
SQL> ALTER SYSTEM KILL SESSION 'session-id, session-serial';
===================
RFC
SELECT substr(A.SESSION_ID,1,5) SID,
substr(C.SERIAL#,1,5) SERIAL#,
substr(B.OBJECT_NAME,1,25) OBJ_NAME,C.STATUS, C.USERNAME, c.action, C.USER#,
A.LOCKED_MODE,c.*
FROM DBA_OBJECTS B, V$SESSION C, V$LOCKED_OBJECT A
WHERE A.OBJECT_ID = B.OBJECT_ID
AND B.OBJECT_NAME like 'CE_%'
AND c.client_info like '81%' -- ORG_ID
AND C.SID = A.SESSION_ID
and C.STATUS = 'INACTIVE' ;
==========
set pages 1000 lines 200
col username format a16
col kill format a15
col tab format a30
select
nvl(S.USERNAME,'Internal') username,
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'
and U1.Name in ('APEX_040000','FLOWS_FILES')
order by 1,2,5;
======================================
select SID, SERIAL#, PREV_EXEC_START, LOGON_TIME, ACTION, CLIENT_IDENTIFIER, EVENT
from v$session where sid in
(select session_id from v$locked_object
where object_id in
(select object_id from dba_objects where object_name like 'CE_PAYMENT_DOCUMENTS'and
owner = 'CE'))
===============================================
Script: Display Blocking Locks (Also Provides SID and Serial# of the Session) (Doc
ID 1020007.6)
SET ECHO off
REM NAME: TFSLKILL.SQL
REM USAGE:"@path/tfslkill"
REM ------------------------------------------------------------------------
REM REQUIREMENTS:
REM SELECT on V$LOCK, V$SESSION, SYS.USER$, SYS.OBJ$
REM ------------------------------------------------------------------------
REM PURPOSE:
REM The report generated by this script gives information on sessions
REM which are holding locks. It also provides the information necessary
REM to terminate the session using the ALTER SYSTEM KILL SESSION command.
REM ------------------------------------------------------------------------
REM Main text of script follows:
set linesize 132 pagesize 66
break on Kill on username on terminal
column Kill heading 'Kill String' format a13
column res heading 'Resource Type' format 999
column id1 format 9999990
column id2 format 9999990
column lmode heading 'Lock Held' format a20
column request heading 'Lock Requested' format a20
column serial# format 99999
column username format a10 heading "Username"
column terminal heading Term format a6
column tab format a35 heading "Table Name"
column owner format a9
column Address format a18
column ctime heading "Seconds"
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,
l.ctime
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
/
===================================
RP
select
(select username from gv$session where sid=a.sid) blocker,
a.sid,
' is blocking ',
(select username from gv$session where sid=b.sid) blockee,
b.sid
from
gv$lock a,
gv$lock b
where
a.block = 1
and
b.request > 0
and
a.id1 = b.id1
and
a.id2 = b.id2;
SELECT 'ALTER system kill session '||''''||D.sid||','||D.serial#||''''||'
IMMEDIATE;'
FROM v$locked_object a, dba_objects b,V$LOCK C,v$session D
WHERE a.object_id = b.object_id
--AND b.object_name = 'HR_API_TRANSACTIONS't6ikkkjio]\-*/*8i]] ;l' //
AND C.SID=A.SESSION_ID
AND D.SID=A.SESSION_ID
and d.status='INACTIVE'
AND C.ID1=A.OBJECT_ID;
set linesize 500
col "User Name" form A11
col "Client Machine" form A12
col CLIENT_INFO form a12
col Module format a15
col CLIENT_IDENTIFIER format a15
select /*+ CHOOSE*/
s.inst_id,
s.sid "Session Id",
s.serial# "Serial Num",
s.username "User Name",
s.status "Session Status",
s.process "Client Process Id",
p.spid "Server Process ID",
s.program "Program",
s.module "Module",
s.action "Action",
substr(s.machine,1,11) "Client Machine",
trunc(s.last_call_et/3600,2) "Time (hr)",
to_char(s.logon_time, 'DD-MON-YYYY HH24:MI') logon_time,
'alter system kill session ''' || s.sid || ',' || s.serial# ||''';' kill_stmt
,s.CLIENT_IDENTIFIER
from gv$session s, gv$process p
where p.addr=s.paddr and
s.sid in ('&SID');
set linesize 500
col "User Name" form A11
col "Client Machine" form A12
col CLIENT_INFO form a12
col Module format a15
col Program format a15
col CLIENT_IDENTIFIER format a15
set linesize 500
col "User Name" form A11
col "Client Machine" form A12
select /*+ CHOOSE*/
s.username "User Name",
s.status "Session Status",
s.program "Program",
s.module "Module",
s.action "Action",
substr(s.machine,1,11) "Client Machine",
trunc(s.last_call_et/3600,2) "Time (hr)",
to_char(s.logon_time, 'DD-MON-YYYY HH24:MI') logon_time,
'alter system kill session ''' || s.sid || ',' || s.serial# ||''';' kill_stmt
,s.CLIENT_INFO,s.CLIENT_IDENTIFIER
from gv$session s, gv$process p
where p.addr=s.paddr and
s.sid in ('&SID');