Thursday, 24 October 2019

Rebuild INDEX partition and subpartitions

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

BEGIN
FOR rec_indexes IN (
SELECT DISTINCT INDEX_OWNER,INDEX_NAME,TABLESPACE_NAME,PARTITION_NAME FROM ALL_IND_PARTITIONS
WHERE INDEX_NAME NOT IN (
SELECT INDEX_NAME FROM USER_INDEXES
WHERE INDEX_TYPE='LOB'

AND SUBPARTITION_COUNT=0
AND TABLESPACE_NAME NOT IN ('SYSAUX','SYSTEM','DATA_TBS')
)
LOOP
BEGIN
EXECUTE IMMEDIATE 'ALTER INDEX '||rec_indexes.INDEX_OWNER||'.'||rec_indexes.INDEX_NAME||' REBUILD PARTITION '||rec_indexes.PARTITION_NAME||' TABLESPACE HS_INDEX STORAGE(INITIAL 1 NEXT 1)';
DBMS_OUTPUT.PUT_LINE('Successfully rebuilt index '||rec_indexes.INDEX_OWNER||'.'||rec_indexes.INDEX_NAME||'on partition '||rec_indexes.PARTITION_NAME);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unable to rebuild index '||rec_indexes.INDEX_OWNER||'.'||rec_indexes.INDEX_NAME||'on partition '||rec_indexes.PARTITION_NAME||' with SQL Error '||SQLERRM);
END;
END LOOP;

FOR rec_indexes IN (
SELECT DISTINCT INDEX_OWNER,INDEX_NAME,TABLESPACE_NAME,SUBPARTITION_NAME FROM ALL_IND_SUBPARTITIONS
WHERE INDEX_NAME NOT IN (
SELECT INDEX_NAME FROM USER_INDEXES
WHERE INDEX_TYPE='LOB'
)
AND TABLESPACE_NAME NOT IN ('SYSAUX','SYSTEM','DATA_TBS')
)
LOOP
BEGIN
EXECUTE IMMEDIATE 'ALTER INDEX '||rec_indexes.INDEX_OWNER||'.'||rec_indexes.INDEX_NAME||' REBUILD SUBPARTITION '||rec_indexes.SUBPARTITION_NAME||' TABLESPACE HS_INDEX';
DBMS_OUTPUT.PUT_LINE('Successfully rebuilt index '||rec_indexes.INDEX_OWNER||'.'||rec_indexes.INDEX_NAME||'on partition '||rec_indexes.SUBPARTITION_NAME);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unable to rebuild index '||rec_indexes.INDEX_OWNER||'.'||rec_indexes.INDEX_NAME||'on partition '||rec_indexes.SUBPARTITION_NAME||' with SQL Error '||SQLERRM);
END;
END LOOP;

END;
/

SPOOL OFF

No comments:

Post a Comment