인터벌 파티션 테이블로 생성된 테이블의 일정 보관 기간이 지나면 데이터 삭제가 필요.
oracle job 통해 배치 생성하여 주기적으로 데이터 관리 진행함
declare
cursor c_del_partition is
select object_name as tb_nm,
subobject_name as partition_nm
from ALL_OBJECTS
where owner = [스키마명]
and object_type = 'TABLE PARTITION'
and generated = 'Y' -- 시스템생성여부 : 인터벌파티션의 경우 자동생성되므로 시스템생성여부가 Y임
and ( object_name = [인터벌파티션테이블명] and created < trunc(sysdate)-10 ) ; --10일보관
;
begin
for c in c_del_partition
loop
l_ddl_str := 'alter table '||c.tb_nm||' drop partition '||c.partition_nm||'';
begin
execute immediate l_ddl_str;
exception
when others then
l_err_code := ''||SQLCODE;
l_err_msg := SQLERRM || ' ( ' || c.partition_nm || ' ) ' ;
insert into TB_ERR_LOG (wrk_tbl_nm, err_cd, err_msg) values (c.tb_nm,l_err_code,l_err_msg);
commit;
end;
end loop;
end;
all_object의 generated, created 컬럼 활용하여 삭제 대상 파티션 선정 후
파티션 삭제 진행
'DATABASE > Oracle' 카테고리의 다른 글
[Oracle] 파라미터 변경 방법 (0) | 2023.08.25 |
---|---|
[Oracle] 파라미터 파일 (spfile, pfile) (0) | 2023.08.25 |
[Oracle] SYS_CONTEXT 오라클 현재 세션 정보 확인 (0) | 2023.07.05 |
[Oracle] impdp 시 에러 해결 ORA-14460: only one COMPRESS or NOCOMPRESS clause may be specified (0) | 2023.06.27 |
[Oracle] V$SQL 활용한 SQL 성능 분석 (0) | 2023.06.13 |