ROWID is the only sign that records the physical location of an ID, before the Oracle 8 version, the ROWID consists of file#+block#+row#, occupying 6 bytes of space, the file# of ten bits, the block# of 22bit, and the row# of the bit.
Starting with Oracle 8, ROWID became extend rowID, composed of data_object_id#+rfile#+block#+row#, occupying 10 bytes of space, 32bit data_object_id#,10 bit Rfile#,22bit's block#,16 bit of row#.
Since the composition of the ROWID has changed from file# to rfile#, the limit of the number of data files cannot be more than 1023 from the entire library to more than 1023 data files per table space.
file# identifies the logical identity,
rfile# identification of the corresponding segment
The bottom line is that the ROWID storage format is the cause.
Because the file number flag in rowID is only 10bit and the maximum data capacity is 1024, only 1023 file numbers are actually allowed because there are no 0 numbered files. In a database prior to Oracle8, ROWID is limited and includes only file#/block#/row#, and the database allows up to 1023 files.
And Oracle8 started rowid including data_object_id#/rfile#/block#/rowid#. The introduction of the data Object ID, while supporting the concept of table partitioning, a table can have multiple partitions (segment), while a partition can be in a different tablespace (represented by rfile# in the corresponding relative file number in the segment corresponding table space). This also increases the capacity of the table. The extended ROWID makes Oracle no longer limited to data files with only 1023 limits, while a table can be partitioned, and the capacity of the table is no longer confined to a single tablespace (1023 file limits).
ORACLE rowid,file# and rfile#