"Partition exchange"의 두 판 사이의 차이
DB CAFE
(→파티션 테이블 생성) |
|||
(같은 사용자의 중간 판 하나는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | === 테스트 테이블 생성 ,권한 ,시노님 === | ||
<source lang=sql> | <source lang=sql> | ||
CREATE TABLE SCOTT.TEST( ID NUMBER, COL1 VARCHAR2(10), COL2 VARCHAR2(10) ); | CREATE TABLE SCOTT.TEST( ID NUMBER, COL1 VARCHAR2(10), COL2 VARCHAR2(10) ); | ||
4번째 줄: | 5번째 줄: | ||
GRANT DELETE, INSERT, SELECT, UPDATE ON SCOTT.TEST TO HR; | GRANT DELETE, INSERT, SELECT, UPDATE ON SCOTT.TEST TO HR; | ||
CREATE PUBLIC SYNONYM TEST FOR SCOTT.TEST; | CREATE PUBLIC SYNONYM TEST FOR SCOTT.TEST; | ||
− | </source> | + | </source> |
=== 원본테이블의 범위를 확인 === | === 원본테이블의 범위를 확인 === |
2022년 7월 6일 (수) 15:58 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 테스트 테이블 생성 ,권한 ,시노님[편집]
CREATE TABLE SCOTT.TEST( ID NUMBER, COL1 VARCHAR2(10), COL2 VARCHAR2(10) );
ALTER TABLE SCOTT.TEST ADD CONSTRAINT TEST_PK PRIMARY KEY (ID);
GRANT DELETE, INSERT, SELECT, UPDATE ON SCOTT.TEST TO HR;
CREATE PUBLIC SYNONYM TEST FOR SCOTT.TEST;
2 원본테이블의 범위를 확인[편집]
-- SCOTT.TEST_INTERIM테이블의 TEST_S0001 파티션과 exchange할 예정이므로,
-- MAX(ID)가 1000000을 넘으면 안된다.
SELECT MAX(ID) FROM SCOTT.TEST;
3 파티션으로 전환할 테이블을 생성[편집]
CREATE TABLE SCOTT.TEST_INTERIM
( ID NUMBER, COL1 VARCHAR2(10), COL2 VARCHAR2(10) )
PARTITION BY RANGE(ID)
( PARTITION TEST_S0001 VALUES LESS THAN (1000000), -- 범위가 원본테이블을 포함해야함.
PARTITION TEST_S0002 VALUES LESS THAN (2000000),
PARTITION TEST_S0003 VALUES LESS THAN (3000000),
PARTITION TEST_S0004 VALUES LESS THAN (4000000)
)ENABLE ROW MOVEMENT;
4 TEST_INTERIM_PK 인덱스 생성[편집]
-- 원본 테이블과 동일하게 인덱스를 생성
CREATE UNIQUE INDEX SCOTT.TEST_INTERIM_PK ON SCOTT.TEST_INTERIM (ID) LOCAL;
5 Primary Key Constraint 생성[편집]
ALTER TABLE SCOTT.TEST_INTERIM ADD CONSTRAINT TEST_INTERIM_PK PRIMARY KEY (ID);
6 원본테이블과 동일하게 권한을 부여[편집]
GRANT DELETE, INSERT, SELECT, UPDATE ON SCOTT.TEST_INTERIM TO HR;
7 미리 인덱스/constraint명을 수정[편집]
alter index SCOTT.TEST_PK rename to TEST_PK_bk;
alter index SCOTT.TEST_INTERIM_PK rename to TEST_PK;
alter table SCOTT.TEST rename constraint TEST_PK to TEST_PK_bk;
alter table SCOTT.TEST_INTERIM rename constraint TEST_INTERIM_PK to TEST_PK;
-- 7~8 단계는 offline작업이므로, 빠르게 진행합니다.
8 테이블명을 수정[편집]
ALTER TABLE SCOTT.TEST RENAME TO TEST_BK;
ALTER TABLE SCOTT.TEST_INTERIM RENAME TO TEST;
9 파티션 exchange함.(시간이 약간 소요됨)[편집]
-- index의 무결성 체크없이 dictionary 정보만 변경하도록 without validation옵션을 추가한다.
ALTER TABLE SCOTT.TEST
EXCHANGE PARTITION TEST_S0001 WITH TABLE SCOTT.TEST_BK
INCLUDING INDEXES WITHOUT VALIDATION;
10 관련된 object compile[편집]
ALTER PUBLIC SYNONYM TEST COMPILE;
11 통계정보 수집[편집]
EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','TEST_INTERIM', granularity=>'AUTO',estimate_percent=>1);