0% found this document useful (0 votes)
13 views3 pages

Lock

oracle lock

Uploaded by

krishijaasri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views3 pages

Lock

oracle lock

Uploaded by

krishijaasri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

Show sessions that are blocking each other

select 'SID ' || l1.sid ||' is blocking ' || l2.sid blocking


from v$lock l1, v$lock l2
where l1.block =1 and l2.request > 0
and l1.id1=l2.id1
and l1.id2=l2.id2;

select serial# from v$session where sid=190;


alter system kill session '190, 5357';

-----------------------------------------------------

select
oracle_username
os_user_name,
locked_mode,
object_name,
object_type
from
v$locked_object a,dba_objects b
where
a.object_id = b.object_id;

********************************************************************************

###########script that shows locks


-----------------------------------

set linesize 130;


column object format a20;
column terminal format a12;
column locker format a12;
column wait format a12;
column type format a15;
column lockmode format a14;
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
/

***********************************************************************************
**
*********************************

shows which session to kill when lock occurs


---------------------------------------------

set line 120


column object_name format a32
column OS_USER_NAME format a12
column orauser format a12
column sql_text format a32
column serial# format 999999
column sid format 99999
SELECT OS_USER_NAME, ORACLE_USERNAME AS orauser, s.sid, o.object_name,
o.object_type, s.serial#, a.sql_text
FROM v$locked_object l, dba_objects o, v$session s, v$sqlarea a
WHERE l.object_id = o.object_id
AND s.SQL_ADDRESS = a.address
AND l.SESSION_ID = s.sid;

SELECT 'ALTER SYSTEM KILL SESSION '''||TO_CHAR(s.sid)||','||


TO_CHAR(s.serial#)||''';'
AS "Statement to kill"
FROM v$locked_object l, dba_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.SESSION_ID = s.sid;

***********************************************************************************
*****

################ finding the sid id,session id


--------------------------------------------------
SELECT s.sid,
s.serial#,
s.osuser,
s.program
FROM v$session s;

******************************************************

Show 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
/

Then select the row with that rowid...

select * from <table> where rowid=<rowid>;

***************************
to detect deadlock in database

select name, value


from v$sysstat
where name = 'enqueue deadlocks';
===============================================

List locks

column lock_type format a12


column mode_held format a10
column mode_requested format a10
column blocking_others format a20
column username format a10
SELECT session_id
, lock_type
, mode_held
, mode_requested
, blocking_others
, lock_id1
FROM dba_locks
WHERE lock_type NOT IN ('Media Recovery', 'Redo Thread')
/

You might also like