Re: When does oracle allocate a ora_ROWSCN to a transaction
- From: "Alberto Dell'Era" <alberto.dellera@xxxxxxxxx>
- To: aalurkar@xxxxxxxxxxxx
- Date: Fri, 9 Mar 2007 22:21:46 +0100
At the end.
Simple to see (10.2.0.3):
SQL> create table t (x int) ROWDEPENDENCIES;
Table created.
SQL> column scn form 99999999999999999999999
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
------------------------
6969135063616
SQL> insert into t(x) values (1);
1 row created.
SQL> select ora_rowscn from t;
ORA_ROWSCN
----------
SQL> exec dbms_lock.sleep (10);
PL/SQL procedure successfully completed.
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
------------------------
6969135063802
SQL> commit;
Commit complete.
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
------------------------
6969135063804
SQL> column ora_rowscn form 99999999999999999999999
SQL> select ora_rowscn from t;
ORA_ROWSCN
------------------------
6969135063803
So - ora_rowscn is undefined (null) before the transaction ends, and
is assigned at commit time, note that in my case:
6969135063802 < ora_rowscn < 6969135063803
It's not always so precise, the Sql Reference says, about the
"NOROWDEPENDENCIES | ROWDEPENDENCIES" clause:
"This clause lets you specify whether table will use row-level
dependency tracking.
With this feature, each row in the table has a system change number (SCN) that
represents a time greater than or equal to the commit time of the last
transaction that modified the row."
Note "a time greater than or equal".
HTH
Al
On 3/9/07, Adi Alurkar <aalurkar@xxxxxxxxxxxx> wrote:
Greetings,
At what point does Oracle allocate a ora_ROWSCN to a transaction? Is the
ora_ROWSCN allocated when the transaction commences or when it is committed?
i.e.
transaction T1 starts at 00:00:00 on 01/01/2007 and runs for 10 minutes
(ends at 00:09:59 01/01/2007)
transaction T2 starts at 00:02:00 on 01/01/2007 and runs for 4 minutes (ends
at 00:06:59 01/01/2007)
transaction T3 starts at 00:04:00 on 01/01/2007 and runs for 3 minutes (end
at 00:07:59 01/01/2007)
which of the following are true ?
T1.ora_ROWSCN > T3.ora_ROWSCN and T3.ora_ROWSCN
or
T3.ora_ROWSCN > T2.ora_ROWSCN > T1.ora_ROWSCN
---
Adi Alurkar
aalurkar@xxxxxxxxxxxx
--
Alberto Dell'Era
"Per aspera ad astra"
--
http://www.freelists.org/webpage/oracle-l
- References:
- When does oracle allocate a ora_ROWSCN to a transaction
- From: Adi Alurkar
Other related posts:
- » When does oracle allocate a ora_ROWSCN to a transaction
- » Re: When does oracle allocate a ora_ROWSCN to a transaction
Greetings, At what point does Oracle allocate a ora_ROWSCN to a transaction? Is the ora_ROWSCN allocated when the transaction commences or when it is committed? i.e. transaction T1 starts at 00:00:00 on 01/01/2007 and runs for 10 minutes (ends at 00:09:59 01/01/2007) transaction T2 starts at 00:02:00 on 01/01/2007 and runs for 4 minutes (ends at 00:06:59 01/01/2007) transaction T3 starts at 00:04:00 on 01/01/2007 and runs for 3 minutes (end at 00:07:59 01/01/2007) which of the following are true ? T1.ora_ROWSCN > T3.ora_ROWSCN and T3.ora_ROWSCN or T3.ora_ROWSCN > T2.ora_ROWSCN > T1.ora_ROWSCN --- Adi Alurkar aalurkar@xxxxxxxxxxxx
- When does oracle allocate a ora_ROWSCN to a transaction
- From: Adi Alurkar