OS환경 : Oracle Linux 7.6 (64bit)
DB 환경 : Oracle Database 19.10.0.0
방법 : 오라클 19c 인터벌 파티션 테이블 생성
오라클 19c에서 인터벌 파티션 테이블을 생성하는 방법에 대해 설명함
먼저 7번 라인까지는 일반 파티션 테이블을 만드는것과 다르지 않음
하지만 8번 라인 interval 부분에 numtodsinterval 이 존재함
이 곳에는 'DAY', 'HOUR', 'MINUTE', 'SECOND' 이렇게 4개로 지정이 가능함
예를들어 하루 간격으로 파티션을 생성하고 싶은 경우 아래와 같이 작성하면됨
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SQL>
create table interval_test
(
date1 date,
col number
)
partition by range (date1)
interval (numtodsinterval(1, 'day')) -- 하루 간격으로 파티션 생성
(
-- 초기 파티션 생성
partition p_init values less than (to_date('2023/12/02', 'yyyy/mm/dd')) -- 초기 파티션 범위 설정(내일날짜 입력)
)
;
|
위 쿼리로 테이블을 생성하게 되면 초기 파티션은 P_INIT 하나만 존재함
이 파티션의 high_value는 20203년 12월 02일이기 때문에 2023년 12월 01일이나 그 이전데이터만 들어올 수 있음
파티션 테이블 조회
1
2
3
4
5
6
7
8
9
10
11
12
|
SQL>
set lines 200 pages 1000
col table_name for a15
col partition_name for a15
col high_value for a80
select table_name, partition_name, high_value
from dba_tab_partitions
where table_name = 'INTERVAL_TEST';
TABLE_NAME PARTITION_NAME HIGH_VALUE
--------------- --------------- --------------------------------------------------------------------------------
INTERVAL_TEST P_INIT TO_DATE(' 2023-12-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
|
그리고 이 상태에서 기존 파티션에 들어갈수 없는 신규 데이터가 insert 될때 새로운 파티션이 생성됨
신규 데이터 삽입
1
2
3
|
SQL> insert into interval_test values (to_date('2023/12/02', 'yyyy/mm/dd'), 1);
1 row created.
|
(commit 하지 않은 상태)
파티션 테이블 조회
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SQL>
set lines 200 pages 1000
col table_name for a15
col partition_name for a15
col high_value for a80
select table_name, partition_name, high_value
from dba_tab_partitions
where table_name = 'INTERVAL_TEST';
TABLE_NAME PARTITION_NAME HIGH_VALUE
--------------- --------------- --------------------------------------------------------------------------------
INTERVAL_TEST P_INIT TO_DATE(' 2023-12-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
INTERVAL_TEST SYS_P688 TO_DATE(' 2023-12-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
|
신규 파티션 SYS_P688이 생성됨
자동 파티션 추가 시 alert log 확인
1
2
3
|
$ vi alert.log
2023-12-08T10:40:06.358856+09:00
TABLE SYS.INTERVAL_TEST: ADDED INTERVAL PARTITION SYS_P688 (1) VALUES LESS THAN (TO_DATE(' 2023-12-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
|
파티션이 추가 되었다는 메세지가 alert에 남음
'ORACLE > Admin' 카테고리의 다른 글
오라클 무료 모니터링 툴 ASH Viewer 사용법 (0) | 2023.12.11 |
---|---|
오라클 무료 모니터링 툴 ASH Viewer 설치 가이드 (0) | 2023.12.11 |
오라클 19c dml 중 인덱스 drop 시 발생사항 확인 (0) | 2023.11.30 |
오라클 19c 인덱스 Sparse 발생시 공간 재사용 확인 (0) | 2023.11.30 |
오라클 19c 인덱스 Skew 발생시 공간 재사용 확인 (0) | 2023.11.22 |