반응형
Oracle에서 범위 파티션을 만들기 위해 기존 테이블을 변경하는 방법
10년 데이터가 있는 기존 테이블이 있습니다(폐기물 처리했습니다).
테이블 내의 하나의 날짜 키 열에 있는 기존 테이블을 Range 파티션으로 분할하려고 합니다.
제가 보는 대부분의 예는 다음과 같습니다.CREATE TABLE..PARTITION BY RANGE...
새 파티션을 추가합니다.하지만 제 테이블은 기존 테이블입니다.
좀 필요할 것 같아요ALTER
진술.
ALTER TABLE TABLE_NAME
PARTITION BY RANGE(CREATED_DATE)
PARTITION JAN16 VALUES LESS THAN (01-02-2016),
PARTITION FEB16 VALUES LESS THAN (01-03-2016) AND GREATER THAN(31-01-2016),//OR?
PARTITION MAR16 VALUES BETWEEN (01-03-2016) AND (31-03-2016), //OR?
두 가지 질문이 있습니다.
분할 메커니즘을 추가하기 위해 Alter 문이 필요합니까, 아니면 create 문으로 작업해야 합니까?
각 파티션에 한 달 데이터만 유지하기 위한 올바른 구문은 무엇입니까?
사용 중인 경우Oracle 12c Release 2
싱글을 사용할 수 있습니다.ALTER
분할되지 않은 테이블을 분할된 테이블로 변환하는 방법(일방향 이동):
CREATE TABLE my_tab ( a NUMBER(38,0), b NUMBER(38,0));
ALTER TABLE MY_TAB MODIFY PARTITION BY RANGE (a) INTERVAL (1000) (
PARTITION p1 VALUES LESS THAN (1000)) ONLINE;
다음을 추가하여 인덱스를 변환할 수도 있습니다.
update indexes (index_name [local/global]);
분할되지 않은 테이블에는 두 가지 옵션이 있습니다.
- 데이터 내보내기, 테이블 삭제, 새 파티션 테이블 만들기, 데이터 가져오기
- 분할 후 파티션 교환 방법을 사용합니다.https://oracle-base.com/articles/misc/partitioning-an-existing-table-using-exchange-partition
또한 매월 새 파티션을 만들려면 SET INTERVAL에 대해 읽어보십시오.예:
CREATE TABLE tst
(col_date DATE)
PARTITION BY RANGE (col_date) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
(PARTITION col_date_min VALUES LESS THAN (TO_DATE('2010-01-01', 'YYYY-MM-DD')));
언급URL : https://stackoverflow.com/questions/35932771/how-do-i-alter-my-existing-table-to-create-a-range-partition-in-oracle
반응형
'programing' 카테고리의 다른 글
Android: 터치 이동 시 보기 이동(ACTION_MOVE) (0) | 2023.08.19 |
---|---|
jquery 정렬 가능한 자리 표시자 높이 문제 (0) | 2023.08.19 |
데이터베이스에 테이블이 있는지 확인 - PL SQL (0) | 2023.08.14 |
Gitrepo에서 파일을 정리하지 못했습니다. 새 백업을 만들 수 없습니다. (0) | 2023.08.14 |
Amazon AWS 람다와 함께 Spring boot/cloud를 사용해도 값이 주입되지 않습니다. (0) | 2023.08.14 |