Did they implement an 'entity bean' also, what mode are the locks kept in (mode 4 or mode 6)? On Wed, May 27, 2009 at 7:35 AM, LS Cheng <exriscer@xxxxxxxxx> wrote: > Yup, that was the situation > > > Regards > > -- > LSC > > > > On Wed, May 27, 2009 at 11:20 AM, Bobak, Mark <Mark.Bobak@xxxxxxxxxxxx>wrote: > >> Right, it's possible for FKs to cause TX row lock contention, but, if they >> do, it has nothing to do with whether the FK column(s) is(are) indexed in >> the child table. >> >> For example, if you do: >> create table parent(p_id number primary key); >> create table child(c_id number primary key, p_id number references >> parent(p_id)); >> >> Now, child(p_id) is not indexed. >> >> If you do: >> insert into parent values(1); >> into a session, and DO NOT COMMIT >> >> and now in a second session, do: >> insert into child values(1,1); >> >> the second session will wait on the first, with 'TX - row lock >> contention'. >> >> The problem is that the value 1 in the parent is in an indetermined state. >> So, the second session will wait until the first either commits or rolls >> back. If it commits, the second session will successfully insert a row. If >> the first session rolls back, the second will encounter ORA-2291 'integrity >> constraint violated - parent key not found'. >> >> Note that this behaviour has nothing to do with whether the FK is indexed >> in the child table. >> >> Hope that helps clarify my point, >> >> -Mark >> >> >> >> ________________________________________ >> From: LS Cheng [exriscer@xxxxxxxxx] >> Sent: Wednesday, May 27, 2009 4:38 >> To: Bobak, Mark >> Cc: dd.yakkali@xxxxxxxxx; oracle-l@xxxxxxxxxxxxx >> Subject: Re: Tx - row lock contention after implementing transaction >> management in application server >> >> I thought that too until last week when a customer was loading data >> (parent and child tables) and hit tx contention and when we disabled the FK >> the tx contention went away >> >> >> >> -- >> LSC >> >> On Tue, May 26, 2009 at 9:35 PM, Bobak, Mark <Mark.Bobak@xxxxxxxxxxxx >> <mailto:Mark.Bobak@xxxxxxxxxxxx>> wrote: >> >> I don’t think that’s his problem. If it were unindexed FKs, the waits >> would be on TM enqueues, not TX enqueues. >> >> >> >> -Mark >> >> >> >> From: oracle-l-bounce@xxxxxxxxxxxxx<mailto:oracle-l-bounce@xxxxxxxxxxxxx> >> [mailto:oracle-l-bounce@xxxxxxxxxxxxx<mailto: >> oracle-l-bounce@xxxxxxxxxxxxx>] On Behalf Of LS Cheng >> Sent: Tuesday, May 26, 2009 3:19 PM >> >> To: dd.yakkali@xxxxxxxxx<mailto:dd.yakkali@xxxxxxxxx> >> Cc: oracle-l@xxxxxxxxxxxxx<mailto:oracle-l@xxxxxxxxxxxxx> >> Subject: Re: Tx - row lock contention after implementing transaction >> management in application server >> >> >> >> Doesnt that sound like your FKs are not indexed? >> >> >> >> -- >> LSC >> >> >> On Tue, May 26, 2009 at 8:41 PM, dd yakkali <dd.yakkali@xxxxxxxxx<mailto: >> dd.yakkali@xxxxxxxxx>> wrote: >> >> Hello everyone, >> >> >> >> After our application folks implemented transaction management in the app, >> I am seeing a bunch of seesions waiting with "Tx - row lock contention" on >> an insert statement. we found that the parent table insert is not commited >> and hence the child record insert is hanging as both these statements are >> using different oracle sessions for some reason. This continues for >> eternity, until the app server is killled and restarted. >> >> >> >> >> >> Sun Java Enterprise Server, hibernate, oracle 10.2.0.4 RAC. >> >> >> >> >> >> Now here is the question: Our java app server folks are asking me to give >> them bind variable values of the statement that is hanging. We have a >> connection pool which is 132 connections size. Is there any way to get the >> bind variable values after the fact, i.e while it is waiting for the parent >> to commit? >> >> >> >> >> >> >> >> Thanks >> >> Deen >> >> >> >> >> > -- Andrew W. Kerber 'If at first you dont succeed, dont take up skydiving.'