Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: ROWID and UPDATE statement

Re: ROWID and UPDATE statement

From: Howard J. Rogers <hjr_at_dizwell.com>
Date: Fri, 30 Apr 2004 22:13:40 +1000
Message-ID: <409242ed$0$25007$afc38c87@news.optusnet.com.au>


Georg Scholz wrote:

> Howard, thanks for such a comprehensive answer!
>
> In our case, we only have "normal" tables (no IOT, not partitioned).
>
> Regarding Row migration: If a row grows over a block's borders, and it
> needs to be split: does the ROWID then change or not?
>

As I said, no -that's the whole point. The row header is left behind in the original block, and it's the location of the row header that gives a row its rowid. Therefore the rowid doesn't change. A link is established between the row header and the actual row data, which has been moved into another block. The index points to the row header (that's one of the reasons why Oracle still allows row migration to take place and doesn't just simply allow the row to move in its entirety to a new block and acquire a completely new rowid... because that would require either the index to be marked as out of date, or for the index to be updated in real-time, making what you thought was going to be a quick table update turn into a complete performance nightmare). The fact that the index (which of course stores the original rowid) still points to the row header in its original block gives you the clue: row migration involves no change to the rowid of the row being migrated.

Regards
HJR Received on Fri Apr 30 2004 - 07:13:40 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US