SQL> SQL> -- If "row momement" (alter table enable or disable row momvement) is enabled, SQL> -- updating a partitioing column may cause rows to change partition and ROWIDs. SQL> SQL> -- insert, delete will not cause row movemnet within hash partitioned table. SQL> -- but add partition will. Drop, merge and split are not possible with hash at the moment. SQL> SQL> -- Hash partitioning will not equally distribute the data among the partitioins. SQL> -- Rows of the same hash key value will go to the same partition, of course. SQL> -- Why not evenly distribute the rows among the partitions and disregard the key values? SQL> -- Partitioning prunning would not be possible in this case. SQL> -- Do you get "partition prunning" with hash? Yes, but for equality and IN type SQL> -- queries only. Makes sense. SQL> SQL> drop table partest_rowid; drop table partest_rowid * ERROR at line 1: ORA-00942: table or view does not exist SQL> SQL> create table partest_rowid(c1 number(2), c2 varchar2(2)) 2 partition by range (c1) 3 (partition p1 values less than (10), 4 partition p2 values less than (20), 5 partition p3 values less than(maxvalue)) 6 enable row movement; Table created. SQL> SQL> insert into partest_rowid values(5,'a'); 1 row created. SQL> insert into partest_rowid values(15,'b'); 1 row created. SQL> insert into partest_rowid values(25,'c'); 1 row created. SQL> SQL> select rowid, c1, c2 from partest_rowid; ROWID C1 C2 ------------------ ---------- -- AAAN5pAAJAAAALIAAA 5 a AAAN5qAAJAAAAPgAAA 15 b AAAN5rAAJAAAAPwAAA 25 c SQL> SQL> update partest_rowid set c1=35 where c1=5; 1 row updated. SQL> SQL> -- ROWID of c1=5 changed SQL> select rowid, c1, c2 from partest_rowid; ROWID C1 C2 ------------------ ---------- -- AAAN5qAAJAAAAPgAAA 15 b AAAN5rAAJAAAAPwAAA 25 c AAAN5rAAJAAAAPwAAB 35 a SQL> SQL> drop table partest_rowid; Table dropped. SQL> SQL> create table partest_rowid(c1 number(2), c2 varchar2(2)) 2 partition by hash(c2) partitions 4; Table created. SQL> SQL> insert into partest_rowid values(1,'a'); 1 row created. SQL> insert into partest_rowid values(2,'b'); 1 row created. SQL> insert into partest_rowid values(3,'c'); 1 row created. SQL> SQL> select rowid, c1, c2 from partest_rowid; ROWID C1 C2 ------------------ ---------- -- AAAN5tAAJAAAALIAAA 3 c AAAN5wAAJAAAAXAAAA 1 a AAAN5wAAJAAAAXAAAB 2 b SQL> SQL> alter table partest_rowid add partition p5; Table altered. SQL> SQL> -- Some ROWIDs can change when partition is added to the hash-partitioned table SQL> select rowid, c1, c2 from partest_rowid; ROWID C1 C2 ------------------ ---------- -- AAAN5xAAJAAAAXEAAA 3 c AAAN5wAAJAAAAXAAAA 1 a AAAN5wAAJAAAAXAAAB 2 b SQL> SQL> drop table partest_rowid; Table dropped. SQL> SQL> spool off