간단한 데일리 파티션 추가 procdure
ex>
partition name 형식 : PARTITION_TABLE1_PR_20220715(partition name 형태가 다를 경우 프로시져 수정 필요)
SQL>exec PARTITION_ADD('SCOTT','PARTITON_TABLE1','20231231'); --SCOTT.PARTITON_TABLE1 이라는 일일파티션테이블을 20231231까지 생성
CREATE OR REPLACE PROCEDURE PARTITION_ADD(powner in varchar2,ptabnm in varchar2 , pMAXDT in varchar2)
IS
vMAX_DT DATE;
vSTMT VARCHAR2(1000);
vCNT NUMBER :=1;
BEGIN
SELECT TO_DATE(SUBSTR(PARTITION_NAME,-8,8),'YYYYMMDD') AS MAX_DT
into vMAX_DT
FROM DBA_TAB_PARTITIONS A,
(SELECT TABLE_OWNER,TABLE_NAME,MAX(PARTITION_POSITION) AS PARTITION_POSITION FROM DBA_TAB_PARTITIONS GROUP BY TABLE_OWNER,TABLE_NAME) B
WHERE A.TABLE_OWNER=B.TABLE_OWNER
AND A.TABLE_NAME=B.TABLE_NAME
AND A.PARTITION_POSITION=B.PARTITION_POSITION
AND A.TABLE_OWNER=powner
AND A.TABLE_NAME=ptabnm;
WHILE vMAX_DT+vcnt <= TO_DATE(pMAXDT,'YYYYMMDD')
LOOP
vSTMT:= 'ALTER TABLE '||powner||'.'||ptabnm||' ADD PARTITION '||ptabnm||'_PR_'||TO_CHAR(vMAX_DT+vcnt,'YYYYMMDD')||' VALUES LESS THAN ('''||TO_CHAR(vMAX_DT+vcnt+1,'YYYYMMDD')||''') TABLESPACE STSMDC02DT';
execute immediate vSTMT;
vCNT:=vCNT+1;
END LOOP;
END;
/
'oracle' 카테고리의 다른 글
[ORACLE]Oracle Profile (0) | 2022.08.12 |
---|---|
TNS-12531: TNS:cannot allocate memory (0) | 2022.08.02 |
[ORACLE] Supplemental logging 사용법 (0) | 2022.07.13 |
[ORACLE] rollback 남은 시간 확인 쿼리 (0) | 2022.07.07 |
[ORACLE] 특정 USER 에게 특정 테이블 TRUNCATE 권한 부여 procdure (0) | 2022.07.06 |