AFAIK ROWID in Oracle represents physical location of a record in appropriate datafile. In which cases ROWID of a record may change ?
The one known to me is UPDATE on partitioned table that "moves" the record to another partition.
Are there another cases ? Most of our DBs are Oracle 10.
As you have said, it occurs anytime the row is physically moved on disk, such as:
If is in an index organized table, then an update to the primary key would give you a different ROWID as well.