Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: how to test locks
Why not using :
select * from toto where L1 = 'z' for update NOWAIT;
ERROR:
ORA-00054: resource busy and acquire with NOWAIT specified
and trapping the error ?
best regards,
Youtz.
"Mladen Gogala" <mgogala_at_earthlink.net> wrote in message
news:pan.2002.01.23.03.00.36.167637.1171_at_earthlink.net...
> On Wed, 23 Jan 2002 02:15:26 -0500, Thomas wrote:
>
> > Hi everybody,
> >
> > I have a simple question. How can i test weather a record in a table is
> > locked by another user without causing another lock.
> >
> > regards
> > thomas
>
>
> That is very simple and I'm sure that the most of us here do that every
day:
> you find the database block for that record (rowid contains file and block
> id), dump the block from oradebug and see whether the row header contains
> the pointer to a valid ITL in that block. The very first byte of the row
> header is the offset into the ITL table. ITLs are 23 bytes in size and
> contain a XID of the transaction that is interested in the block. After
> you do that, ask yourself whether the obtained information was worth the
> trouble. Oh yes, and exact descriptions on the database blocks can be
> obtained only in the Scott Gosset's "top gun" class.
> Oh, did I forget to mention that you have to check whether the block is in
> SGA (v$bh) and if it is, then you have to look there. ITLs in the disk
> block may contain invalid information and be scheduled for "delayed
> cleanup". It's a very simple thing indeed.
Received on Wed Jan 23 2002 - 03:13:41 CST