본문 바로가기

oracle

Partition table auto drop procdure

728x90

간단한 파티션 자동 삭제 프로시져 운영 하는 DB 조건에 맞게 수정해서 사용하면 되겠다.

1. 프로시져 설명 : SCOTT Schema가 소유한 TEST_LOG 라는 파티션 테이블(RANGE 파티션이고 일별파티션으로 생성)의 프로시져 수행시간 기준 31일 이전 데이터는 삭제하는 프로시져 
table partition naming rule : TEST_LOG_PR_20220624


CREATE OR REPLACE PROCEDURE SCOTT.WEEKLY_DROP_PARTITION

IS

vSTMT VARCHAR2(100);

BEGIN

FOR PART IN (
SELECT TABLE_OWNER,TABLE_NAME,PARTITION_NAME
  from dba_TAB_PARTITIONS
 where table_name IN  ('TEST_LOG') 
  and TABLE_OWNER='SCOTT'
 AND TO_DATE(SUBSTR(PARTITION_NAME, -8, 8),'YYYYMMDD')<TRUNC(SYSDATE-31)
ORDER BY TABLE_OWNER, TABLE_NAME, PARTITION_POSITION)

LOOP

vSTMT:='ALTER TABLE '||PART.TABLE_OWNER||'.'||PART.TABLE_NAME||' DROP PARTITION '||PART.PARTITION_NAME;

execute immediate vSTMT;

END LOOP;

END;
/

728x90