Re: Is oracle 8 joking with me?

From: Jérôme Zittoun <jzittoun_at_erigne.com>
Date: 1999/11/28
Message-ID: <38418C0E.237F0753_at_erigne.com>#1/1


Hi,

I updated recently from Oracle 7.1 to Oracle 8 on Novell and had some troubles like this in my VB 6.0 softs.

I bypassed this by setting autocommit off before the statement: "select * from mytable where myselection for update" with the setconnection statement (see Oracle docs for details), update the rows like before and commit the transaction explicitely.

Sorry for my bad english, maybe the help was OK ?

Jérôme ZITTOUN
Erigne Informatique
mailto:jzittoun_at_erigne.com

KengLao a écrit :
>
> "Is oracle 8 joking with me?", I think, when I try to do
> concurrent update, I've always got "can't serialize access
> for this transaction". I am sure the transactions modify the
> different data rows. As the online document, Oracle8
> Server Concepts, said :
>
> "Oracle generates an error when a serializable transaction
> tries to update or delete data modified by a transaction
> that commits after the serializable transaction began:
>
> ORA-08177: Cannot serialize access for this transaction
> "
>
> So, I think this kind of error should never occur in my case,
> but actually it does.
>
> A test sample is as follows. If you are interested in it,
> just try it.
>
> ----------
>
> Transaction 1
> create table tablename ( rec# decimal(2), descri varchar2(10) );
> alter session set isolation_level = serializable;
> insert into tablename ( rec# ) values (1);
> commit;
> select * from tablename where rec#=1;
>
> Transaction 2
> alter session set isolation_level = serializable;
> insert into tablename ( rec# ) values (2);
> commit;
>
> select * from tablename where rec#=2;
> update tablename set descri='record 2' where rec#=2;
> commit;
>
> Transaction 1
> update tablename set descri='record 1' where rec#=1;
> <<RA-08177: Cannot serialize access for this transaction>>
>
> ----------
>
> Enjoy it.
> Keng
  Received on Sun Nov 28 1999 - 00:00:00 CET

Original text of this message