ITPub博客

首页 > Linux操作系统 > Linux操作系统 > split the segment by rowid for parallel process

split the segment by rowid for parallel process

原创 Linux操作系统 作者:my_vips 时间:2012-06-26 14:00:48 0 删除 编辑
select grp,
       dbms_rowid.rowid_create( 1, data_object_id, lo_fno, lo_block, 0 ) min_rid,
       dbms_rowid.rowid_create( 1, data_object_id, hi_fno, hi_block, 10000 ) max_rid
  from (
select distinct grp,
       first_value(relative_fno) 
        over (partition by grp order by relative_fno, block_id
              rows between unbounded preceding and unbounded following) lo_fno,
       first_value(block_id    ) 
       over (partition by grp order by relative_fno, block_id
            rows between unbounded preceding and unbounded following) lo_block,
       last_value(relative_fno) 
        over (partition by grp order by relative_fno, block_id
        rows between unbounded preceding and unbounded following) hi_fno,
       last_value(block_id+blocks-1) 
        over (partition by grp order by relative_fno, block_id
         rows between unbounded preceding and unbounded following) hi_block,
       sum(blocks) over (partition by grp) sum_blocks
  from (
select relative_fno,
       block_id,
       blocks,
       trunc( (sum(blocks) over (order by relative_fno, block_id)-0.01) /
              (sum(blocks) over ()/&CHUNKS) ) grp
  from dba_extents
 where segment_name = upper('&TNAME')
   and wner = user order by block_id
       )
       ),
       (select data_object_id from user_objects where object_name = upper('&TNAME') );

&TNAME  is the segment name, &CHUNKS is the number of fraction.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24057587/viewspace-733811/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-04

  • 博文量
    6
  • 访问量
    12843