提供下oracle rowid分段的sql,程序就是用多线程扫描每一段数据,这里就不提供了。
select group_id,min(chartorowid(min_rowid)) min_rowid, max(chartorowid(max_rowid)) max_rowid from (select T.min_rowid, T.max_rowid, T.Relative_Fno, NTILE(分的段数) over(order by T.Relative_Fno,chartorowid(T.min_rowid)) group_id from (select dbms_rowid.rowid_create(1, B.data_object_id, A.relative_fno, A.block_id, 0) min_rowid, dbms_rowid.rowid_create(1, B.data_object_id, A.relative_fno, A.block_id + A.blocks - 1, 10000) max_rowid,A.Relative_Fno from (select relative_fno, block_id, blocks from sys.dba_extents where segment_name = '表名' and owner = '表的所有用户' order by block_id) A, (select data_object_id from sys.DBA_objects where owner = '表的所有用户' and object_name = '表名') B where B.data_object_id IS NOT NULL) T) group by group_id;