SELECT MAX(BYTES) / 1024 / 1024
INTO VM1
FROM DBA_SEGMENTS
WHERE OWNER = C.OWNNAME
AND SEGMENT_NAME = C.TABNAME
AND PARTITION_NAME = C.PARNAME;
EXECUTE IMMEDIATE 'select /*+ parallel(t,4) */ count(*) from
' || C.TABNAME || ' partition (' || C.PARNAME || ') t'
INTO VR1;
INSERT INTO TL_COMPRESS_LOG
VALUES
(C.OWNNAME,
C.TABNAME,
C.PARNAME,
C.TSNAME,
VT1,
NULL,
VM1,
NULL,
VR1,
NULL);
--
EXECUTE IMMEDIATE 'alter table ' || C.TABNAME || ' move partition
' || C.PARNAME ||' compress' ;
--
VT2 := SYSDATE;
SELECT MAX(BYTES) / 1024 / 1024
INTO VM2
FROM DBA_SEGMENTS
WHERE OWNER = C.OWNNAME
AND SEGMENT_NAME = C.TABNAME
AND PARTITION_NAME = C.PARNAME;
EXECUTE IMMEDIATE 'select /*+ parallel(t,4) */ count(*) from
' || C.TABNAME || ' partition (' || C.PARNAME || ') t'
INTO VR2;
UPDATE TL_COMPRESS_LOG
SET ENDTIME = VT2, NEW_MB = VM2, NEW_ROWS = VR2
WHERE OWNNAME = C.OWNNAME
AND TABNAME = C.TABNAME
AND SUBPARNAME= C.PARNAME;
END LOOP;
END;