Mục đích: Với bảng core khi move partition mà không rebuild luôn index partition làm cho các câu lệnh Insert, update, delete sẽ bị lỗi, câu lệnh select thì sẽ bị quét full do đó với bảng Core các bạn cần chú ý khi move 1 partition thì phải rebuild index luôn và check luôn unusable nhé.
1. Script sinh câu lệnh:
select 'alter table '||table_owner||'.'||table_name||' move partition '||partition_name|| ' tablespace ' || substr(partition_name,1,8) ||'_RW nologging parallel 4;', partition_name, tablespace_name
from dba_tab_partitions
where table_owner='BINH_OWNER' and table_name = 'TAB1' and partition_name like 'DATA2014%'
union
select 'alter index '||index_owner||'.'||index_name||' rebuild partition '||partition_name
|| ' tablespace INDX' || substr(partition_name,5,4) || '_RW nologging parallel 4 online;', partition_name, tablespace_name
from dba_ind_partitions
where index_name in
(select index_name from dba_indexes where
table_owner='BINH_OWNER' and table_name = 'TAB1')
and partition_name like 'DATA2014%'
union
select 'alter index '||owner||'.'||index_name||' noparallel;', null, null from dba_indexes where
table_owner='BINH_OWNER' and table_name = 'TAB1'
order by 2, 1 desc, 3;
2. Copy vào TOAD hoặc SQL Navigator để chạy .
3. Check lại:
select * from dba_ind_partitions where status='UNUSABLE';