A reader, October 14, 2001 - 7:49 pm UTC
Why do migrated rows need a pointer.
Amar, March 03, 2003 - 1:04 am UTC
What i wanted to ask was why does ORACLE need a pointer in the original block to point to the new block? Why not just directly go to the new block the way it goes to the older block??
Why doesn't Oracle simply update the table directory and row directory to point to the new block when migration occurs??
One reason i could think of was to preserve the rowid... any other reasons ??
March 03, 2003 - 6:49 am UTC
to preserve the rowid. to do otherwise would require us to update each and every index during a migration, and if you are using rowid based snapshots....
Amar, March 03, 2003 - 7:48 am UTC
And also i would need to rebuild the indexes again if that happens :)
Amar, March 03, 2003 - 7:51 am UTC
oops missed that, you had already said regarding the indexes
Any way,Thanks a lot.
Why migrate a row?
Arun Gupta, June 07, 2004 - 4:35 pm UTC
While going through the concepts manual of 10g, I just thought that since in newer versions of Oracle, rowid can change (alter table..move tablespace, row movement enable etc.), why does Oracle still do row migration? If the updated row is too big to fit in the block, why not move it to a new block and assign a new rowid? Is it because of index maintenance?
June 07, 2004 - 4:40 pm UTC
it can move -- but by default won't.
many applications would break if it moved for something as simple as an update.
Also, an update of a non-indexed column -- that caused a migration -- of a row with 10 indexes on it - would all of a sudden cause 10 indexes to be updated, which would be bad.