Thursday, 24 October 2019

Move table partition sub partition

SET SERVEROUTPUT ON
SET FEEDBACK ON VERIFY ON HEADING ON ECHO ON TIMING ON
SPOOL MovePartTableTBS.log

BEGIN
FOR rec_tab_part IN (
SELECT DISTINCT TABLE_OWNER,TABLE_NAME,PARTITION_NAME 
FROM ALL_TAB_PARTITIONS 
WHERE TABLESPACE_NAME NOT IN ('SYSAUX','SYSTEM','DATA_TBS')
)
LOOP 
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE '||rec_tab_part.TABLE_OWNER||'.'||rec_tab_part.TABLE_NAME||' MOVE PARTITION '||rec_tab_part.PARTITION_NAME||' TABLESPACE DATA_TBS';
DBMS_OUTPUT.PUT_LINE('Successfully moved partition  '||rec_tab_part.TABLE_OWNER||'.'||rec_tab_part.PARTITION_NAME||' of '||rec_tab_part.TABLE_NAME);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unable to move partition '||rec_tab_part.PARTITION_NAME||' of '||rec_tab_part.TABLE_OWNER||'.'||rec_tab_part.TABLE_NAME||' with SQL Error '||SQLERRM);
END;
END LOOP;

FOR rec_tab_part IN (
SELECT DISTINCT TABLE_OWNER,TABLE_NAME,SUBPARTITION_NAME 
FROM ALL_TAB_SUBPARTITIONS 
WHERE TABLESPACE_NAME NOT IN ('SYSAUX','SYSTEM','DATA_TBS')
)
LOOP 
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE '||rec_tab_part.TABLE_OWNER||'.'||rec_tab_part.TABLE_NAME||' MOVE SUBPARTITION '||rec_tab_part.SUBPARTITION_NAME||' TABLESPACE DATA_TBS';
DBMS_OUTPUT.PUT_LINE('Successfully moved partition  '||rec_tab_part.TABLE_OWNER||'.'||rec_tab_part.SUBPARTITION_NAME||' of '||rec_tab_part.TABLE_NAME);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unable to move partition '||rec_tab_part.SUBPARTITION_NAME||' of '||rec_tab_part.TABLE_OWNER||'.'||rec_tab_part.TABLE_NAME||' with SQL Error '||SQLERRM);
END;
END LOOP;

END;
/

SPOOL OFF


No comments:

Post a Comment