파티션된 테이블의 경우 미리 파티션이 추가되어야 한다.
해당 기간 파티션이 생성되어 있지 않은 경우 데이터 INSERT가 안됨
-- PARTITION TABLE 조회
SELECT table_name,
partitioning_type,
partition_count
FROM user_part_tables
ORDER BY table_name;
-- 파티션 마지막 RANGE(HIGH_VALUE) 조회
SELECT table_name,
partition_name,
high_value,
tablespace_name
FROM (SELECT table_name,
partition_name,
high_value,
tablespace_name,
row_number() over(PARTITION BY table_name ORDER BY partition_name DESC) rn
FROM user_tab_partitions)
WHERE rn = 1
ORDER BY table_name;
-- 특정 테이블 파티션 조회
SELECT table_name,
partition_name,
high_value,
tablespace_name
FROM user_tab_partitions
WHERE table_name = 'TABLE명'
ORDER BY table_name, partition_name;
파티션 추가 예)
-- 특정 테이블 파티션 조회
SELECT table_name,
partition_name,
high_value,
tablespace_name
FROM user_tab_partitions
WHERE table_name = 'LO_ORDR_CLOSE_D'
ORDER BY table_name, partition_name;
ALTER TABLE LO_ORDR_CLOSE_D ADD PARTITION P1204_LO_ORDR_CLOSE_D VALUES LESS THAN ('20120501') TABLESPACE P01_HODB_DATA04;
ALTER TABLE LO_ORDR_CLOSE_D ADD PARTITION P1208_LO_ORDR_CLOSE_D VALUES LESS THAN ('20120901') TABLESPACE P01_HODB_DATA05;
ALTER TABLE LO_ORDR_CLOSE_D ADD PARTITION P1212_LO_ORDR_CLOSE_D VALUES LESS THAN ('20130101') TABLESPACE P01_HODB_DATA06;
-- 파티션테이블이 사용하는 테이블 스페이스를 돌려서 사용하는 방식임.
-- P01_HODB_DATA04 -> 테이블스페이스 명
-- P1204_LO_ORDR_CLOSE_D -> 파티션 이름(지정)
-- ('20120501') -> 기간 앞에 만들어진 파티션의 마지막 일자 부터 '20120430' 까지 기간을 나타냄
테이블 파티션을 추가하고나면 추가된 파티션의 인덱스는 디폴드 인덱스 테이블 스페이스로 지정이됨
따라서 인덱스 리빌드를 수행해야함.
-- 특정 테이블 인덱스 파티션 조회
SELECT index_name,
partition_name,
high_value,
tablespace_name
FROM user_ind_partitions
WHERE index_name LIKE '%LO_ORDR_CLOSE_D%'
ORDER BY index_name, partition_name;
-- 1번 INDEX REBUILD
ALTER INDEX IDX01_LO_ORDR_CLOSE_D REBUILD PARTITION P1204_LO_ORDR_CLOSE_D TABLESPACE P01_HODB_INDX04;
ALTER INDEX IDX01_LO_ORDR_CLOSE_D REBUILD PARTITION P1208_LO_ORDR_CLOSE_D TABLESPACE P01_HODB_INDX05;
ALTER INDEX IDX01_LO_ORDR_CLOSE_D REBUILD PARTITION P1212_LO_ORDR_CLOSE_D TABLESPACE P01_HODB_INDX06;
-- 2번 INDEX REBUILD
ALTER INDEX PK_LO_ORDR_CLOSE_D REBUILD PARTITION P1204_LO_ORDR_CLOSE_D TABLESPACE P01_HODB_INDX04;
ALTER INDEX PK_LO_ORDR_CLOSE_D REBUILD PARTITION P1208_LO_ORDR_CLOSE_D TABLESPACE P01_HODB_INDX05;
ALTER INDEX PK_LO_ORDR_CLOSE_D REBUILD PARTITION P1212_LO_ORDR_CLOSE_D TABLESPACE P01_HODB_INDX06;
-- 생성된 모든 인덱스에 대해서 위의 과정을 수행해줌
-- P1204_LO_ORDR_CLOSE_D -> 새로 생성된 테이블 파티션 명
-- P01_HODB_INDX04 -> 파티션 인덱스용 테이블 스페이스를 지정함
'Develop > Database & SQL' 카테고리의 다른 글
[Oracle] 서브쿼리 동작 방식을 제어하는 힌트들 (0) | 2024.06.28 |
---|---|
[MyBatis] jdbcType 종류 및 문법 (0) | 2024.03.18 |
오라클 랜덤 확률 가중치 (0) | 2023.04.26 |
[PL/SQL] 무작정 시작하기 (0) | 2022.12.01 |
1시간후, 1시간전, 1분전, 30분후, 1초전 (0) | 2022.09.23 |