Re: How to free a locked object?
Date: Wed, 23 Jan 2008 23:10:34 -0800 (PST)
Message-ID: <b54d1135-1cdb-42f8-b8f4-6911a5df90c8@f47g2000hsd.googlegroups.com>
On Jan 23, 6:47 pm, "fitzjarr..._at_cox.net" <fitzjarr..._at_cox.net> wrote:
> On Jan 23, 2:37 am, dbagtcol <cx4gt..._at_gmail.com> wrote:
>
> > hi all,
> > I'm trying a compile a proc but the run would just go forever and
> > throw 'ORA-04021: timeout occurred while waiting to lock object xxx'
> > at the end. Upon checking the v$session_wait, i found "latch: cache
> > buffers chains" as Event and "Concurrency" as Wait_class. On checking v
> > $locked_object, i found one object being held. I don't have access to
> > alert_log file. How do I find who is using this object and how do I
> > free it for myself?
>
> > Appreciate your kind responses.
> > gtcol
>
> The alert log won't tell you who (which user and session) is holding
> that lock, but V$LOCKED_OBJECT will; I'm surprised you didn't see that
> information from your query. You could run this query (presuming you
> have DBA access):
>
> select s.username, s.sid, s.serial#, s.osuser, k.ctime, o.object_name
> object, k.kaddr,
> decode(l.locked_mode, 1, 'No Lock',
> 2, 'Row Share',
> 3, 'Row Exclusive',
> 4, 'Shared Table',
> 5, 'Shared Row Exclusive',
> 6, 'Exclusive') locked_mode,
> decode(k.type, 'BL','Buffer Cache Management (PCM lock)',
> 'CF','Controlfile Transaction',
> 'CI','Cross Instance Call',
> 'CU','Bind Enqueue',
> 'DF','Data File',
> 'DL','Direct Loader',
> 'DM','Database Mount',
> 'DR','Distributed Recovery',
> 'DX','Distributed Transaction',
> 'FS','File Set',
> 'IN','Instance Number',
> 'IR','Instance Recovery',
> 'IS','Instance State',
> 'IV','Library Cache Invalidation',
> 'JQ','Job Queue',
> 'KK','Redo Log Kick',
> 'LA','Library Cache Lock',
> 'LB','Library Cache Lock',
> 'LC','Library Cache Lock',
> 'LD','Library Cache Lock',
> 'LE','Library Cache Lock',
> 'LF','Library Cache Lock',
> 'LG','Library Cache Lock',
> 'LH','Library Cache Lock',
> 'LI','Library Cache Lock',
> 'LJ','Library Cache Lock',
> 'LK','Library Cache Lock',
> 'LL','Library Cache Lock',
> 'LM','Library Cache Lock',
> 'LN','Library Cache Lock',
> 'LO','Library Cache Lock',
> 'LP','Library Cache Lock',
> 'MM','Mount Definition',
> 'MR','Media Recovery',
> 'NA','Library Cache Pin',
> 'NB','Library Cache Pin',
> 'NC','Library Cache Pin',
> 'ND','Library Cache Pin',
> 'NE','Library Cache Pin',
> 'NF','Library Cache Pin',
> 'NG','Library Cache Pin',
> 'NH','Library Cache Pin',
> 'NI','Library Cache Pin',
> 'NJ','Library Cache Pin',
> 'NK','Library Cache Pin',
> 'NL','Library Cache Pin',
> 'NM','Library Cache Pin',
> 'NN','Library Cache Pin',
> 'NO','Library Cache Pin',
> 'NP','Library Cache Pin',
> 'NQ','Library Cache Pin',
> 'NR','Library Cache Pin',
> 'NS','Library Cache Pin',
> 'NT','Library Cache Pin',
> 'NU','Library Cache Pin',
> 'NV','Library Cache Pin',
> 'NW','Library Cache Pin',
> 'NX','Library Cache Pin',
> 'NY','Library Cache Pin',
> 'NZ','Library Cache Pin',
> 'PF','Password File',
> 'PI','Parallel Slaves',
> 'PR','Process Startup',
> 'PS','Parallel slave Synchronization',
> 'QA','Row Cache Lock',
> 'QB','Row Cache Lock',
> 'QC','Row Cache Lock',
> 'QD','Row Cache Lock',
> 'QE','Row Cache Lock',
> 'QF','Row Cache Lock',
> 'QG','Row Cache Lock',
> 'QH','Row Cache Lock',
> 'QI','Row Cache Lock',
> 'QJ','Row Cache Lock',
> 'QK','Row Cache Lock',
> 'QL','Row Cache Lock',
> 'QM','Row Cache Lock',
> 'QN','Row Cache Lock',
> 'QO','Row Cache Lock',
> 'QP','Row Cache Lock',
> 'QQ','Row Cache Lock',
> 'QR','Row Cache Lock',
> 'QS','Row Cache Lock',
> 'QT','Row Cache Lock',
> 'QU','Row Cache Lock',
> 'QV','Row Cache Lock',
> 'QW','Row Cache Lock',
> 'QX','Row Cache Lock',
> 'QY','Row Cache Lock',
> 'QZ','Row Cache Lock',
> 'RT','Redo Thread',
> 'SC','System Commit number',
> 'SM','SMON synchronization',
> 'SN','Sequence Number',
> 'SQ','Sequence Enqueue',
> 'SR','Synchronous Replication',
> 'SS','Sort Segment',
> 'ST','Space Management Transaction',
> 'SV','Sequence Number Value',
> 'TA','Transaction Recovery',
> 'TM','DML Enqueue',
> 'TS','Table Space (or Temporary Segment)',
> 'TT','Temporary Table',
> 'TX','Transaction',
> 'UL','User-defined Locks',
> 'UN','User Name',
> 'US','Undo segment Serialization',
> 'WL','Writing redo Log',
> 'XA','Instance Attribute Lock',
> 'XI','Instance Registration Lock') type
> from v$session s, sys.v_$_lock c, sys.v_$locked_object l, dba_objects
> o, sys.v_$lock k, v$_lock v
> where o.object_id = l.object_id
> and l.session_id = s.sid
> and k.sid = s.sid
> and s.saddr = c.saddr
> and k.kaddr = c.kaddr
> and k.kaddr = v.kaddr
> and v.saddr = s.saddr
> and k.lmode = l.locked_mode
> and k.lmode = c.lmode
> and k.request = c.request
> order by object;
>
> This should provide all of the information you would need about the
> lock and who is holding it. And, again, presuming you have DBA access
> you could kill the 'offending' session; that's the only way you'll
> clear that lock if it isn't your current session holding it.
>
> If you haven't DBA access then you need to wait until the offending
> session issues a commit, a rollback or dies.
>
> David Fitzjarrell
Hi David, thanks for the reply. It was lot elaborated hence much helpful for many. I've resolved the issue now. gtcol Received on Thu Jan 24 2008 - 01:10:34 CST