ROWID (since Oracle8 is called extended ROWID until Oracle7 is now called restricted ROWID) saves / encodes the physical location of the row.
(extended) ROWID encodes (in hexadecimal format) the following fields: OBJID (unique identifier of the object to which the string belongs), FILENO (relative file number in TABLESPACE in which the object is created, BLOCKNO (relative block number in the file) and ROWNUM (relative line number inside the block).
(limited) The ROWID contains only FILENO (relative file number in the database), BLOCKNO and ROWNUM (for example, in the extended ROWID) and OBJID.
At any given time, the ROWID uniquely encodes a row in the database (except perhaps for clustered tales that have the same ROWID). The ROWID can change (due to the reorganization of the database), and can also be reused (for example, after deleting and inserting, a new row can reuse the ROWID). Also export / import tables will reassign a new ROWID for the tables.
Please note that FILENO is not necessarily unique for each database in the extended ROWID format, but since the extended format also contains an OBJID (which uniquely identifies the table space in which segments of the table object are stored), we can find a unique file.
BLOCKNO is unique for each database file, and ROWNUM is unique for each database block.
Exceptions: indexed tables - the ROWID cannot find the exact block due to the reorganization of the index (moving leaf blocks).
ROWID may change due to database reorganization operations.
source share