【TUNE_ORACLE】ROWID切片SQL参考

来源:这里教程网 时间:2026-03-03 16:51:16 作者:

实验环境 搭建平台:VMware WorkstationOS:RHEL 6.10Grid&DB:Oracle 11.2.0.4 SQL参考 create user test identified by test default tablespace users; --先给测试用户赋权 grant dba to test; create table tab as select * from stu.students;  --任意copy一张表用来测试 create or replace procedure p_rowid(range number, id number) is   cursor cur_rowid is   -----------------------------------SQL主体-----------------------------------       select dbms_rowid.rowid_create(1,                                    b.data_object_id,                                    a.relative_fno,                                    a.block_id,                                    0) rowid1,            dbms_rowid.rowid_create(1,                                    b.data_object_id,                                    a.relative_fno,                                    a.block_id + blocks - 1,                                    999) rowid2       from dba_extents a, dba_objects b      where a.segment_name = b.object_name        and a.owner = b.owner         and b.object_name = 'TAB' --表名        and b.owner = 'TEST' --用户名        and mod(a.extent_id, range) = id;   -----------------------------------SQL主体-----------------------------------        v_sql varchar2(4000); begin   for cur in cur_rowid loop     v_sql := 'delete tab where student_id > 200 and rowid between :1 and :2';  --可以根据自己的SQL修改此处     execute immediate v_sql       using cur.rowid1, cur.rowid2;     commit;   end loop; end; / --如果要将表切分成8份,可以在8个窗口中一次执行: begin  p_rowid(8,0); end; /

begin 

p_rowid(8,1);

end;

/ ...... begin  p_rowid(8,7); end; /

相关推荐