"UNUSABLE 파티션 테이블"의 두 판 사이의 차이
DB CAFE
(→UNUSABLE 조회) |
|||
(같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
5번째 줄: | 5번째 줄: | ||
-- 파티션 테이블 UNUSABLE 생성/변경 테스트 | -- 파티션 테이블 UNUSABLE 생성/변경 테스트 | ||
+ | |||
+ | === 테이블 생성 === | ||
<source lang=sql> | <source lang=sql> | ||
− | |||
− | |||
CREATE TABLE KCY_UNIQUE_IX_TEST | CREATE TABLE KCY_UNIQUE_IX_TEST | ||
( | ( | ||
36번째 줄: | 36번째 줄: | ||
PARALLEL 8 | PARALLEL 8 | ||
MONITORING; | MONITORING; | ||
− | + | </source> | |
− | + | === UNIQUE 인덱스 생성 === | |
− | + | <source lang=sql> | |
CREATE UNIQUE INDEX UX_KCY_UNIQUE_IX_01 ON KCY_UNIQUE_IX_TEST(ITEM_CD,AGG_DT) | CREATE UNIQUE INDEX UX_KCY_UNIQUE_IX_01 ON KCY_UNIQUE_IX_TEST(ITEM_CD,AGG_DT) | ||
54번째 줄: | 54번째 줄: | ||
) | ) | ||
UNUSABLE ; | UNUSABLE ; | ||
− | + | </source> | |
− | + | === 일반 인덱스 생성 === | |
+ | <source lang=sql> | ||
CREATE INDEX IX_KCY_UNIQUE_IX_02 ON KCY_UNIQUE_IX_TEST(ITEM_CD,AGG_DT) | CREATE INDEX IX_KCY_UNIQUE_IX_02 ON KCY_UNIQUE_IX_TEST(ITEM_CD,AGG_DT) | ||
71번째 줄: | 72번째 줄: | ||
) | ) | ||
UNUSABLE ; | UNUSABLE ; | ||
+ | </source> | ||
− | + | === 데이터 입력 === | |
− | + | <source lang=sql> | |
INSERT INTO KCY_UNIQUE_IX_TEST (STR_CD,AGG_DT,ITEM_CD) VALUES ('A','20180401','2222'); | INSERT INTO KCY_UNIQUE_IX_TEST (STR_CD,AGG_DT,ITEM_CD) VALUES ('A','20180401','2222'); | ||
− | + | </source> | |
− | + | === UNUSABLE 조회 === | |
+ | <source lang=sql> | ||
SELECT INDEX_OWNER,INDEX_NAME,PARTITION_NAME,STATUS | SELECT INDEX_OWNER,INDEX_NAME,PARTITION_NAME,STATUS | ||
FROM DBA_IND_PARTITIONS | FROM DBA_IND_PARTITIONS | ||
WHERE INDEX_OWNER = 'MIG_ADM' | WHERE INDEX_OWNER = 'MIG_ADM' | ||
AND STATUS='UNUSABLE'; | AND STATUS='UNUSABLE'; | ||
− | + | </source> | |
− | + | ||
− | + | === 인덱스 리빌드 === | |
+ | <source lang=sql> | ||
ALTER INDEX MIG_ADM.UX_KCY_UNIQUE_IX_01 REBUILD PARTITION PT_1804; | ALTER INDEX MIG_ADM.UX_KCY_UNIQUE_IX_01 REBUILD PARTITION PT_1804; | ||
− | + | </source> | |
− | + | === 인덱스 REBUILD 처리DDL 생성 === | |
+ | <source lang=sql> | ||
SELECT 'ALTER INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||';' | SELECT 'ALTER INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||';' | ||
FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSABLE'; | FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSABLE'; | ||
− | + | </source> | |
− | + | === 인덱스 UNUSABLE 파티션 삭제 === | |
+ | <source lang=sql> | ||
SELECT 'DROP INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||';' | SELECT 'DROP INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||';' | ||
FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSABLE'; | FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSABLE'; | ||
− | + | ||
SELECT * | SELECT * | ||
FROM KCY_UNIQUE_IX_TEST; | FROM KCY_UNIQUE_IX_TEST; | ||
− | + | </source> | |
− | + | === 테이블 UNUSABLE 상태로 변경 === | |
+ | <source lang=sql> | ||
ALTER INDEX MIG_ADM.UX_KCY_UNIQUE_IX_01 MODIFY PARTITION PT_1804 UNUSABLE; | ALTER INDEX MIG_ADM.UX_KCY_UNIQUE_IX_01 MODIFY PARTITION PT_1804 UNUSABLE; | ||
</source> | </source> | ||
[[Category:oracle]] | [[Category:oracle]] |
2021년 3월 12일 (금) 17:26 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 UNUSABLE 파티션 테이블 테스트[편집]
- 테스트목적 : 파티션테이블에 UNIQUE/일반 인덱스가 UNUSABLE 일때 데이터를 입력할수 있는지?
- 결론 : UNIQUE 인덱스가 UNUSABLE 일때 데이터를 입력할수 없다.
일반 인덱스는 UNUSABLE 일때 데이터를 입력 할수 있다.
-- 파티션 테이블 UNUSABLE 생성/변경 테스트
1.1 테이블 생성[편집]
CREATE TABLE KCY_UNIQUE_IX_TEST
(
STR_CD VARCHAR2(5 BYTE) NOT NULL,
AGG_DT VARCHAR2(8 BYTE) NOT NULL,
ITEM_CD VARCHAR2(14 BYTE) NOT NULL
)
TABLESPACE TS_MIG
NOLOGGING
PARTITION BY RANGE (AGG_DT)
(
PARTITION PT_1804 VALUES LESS THAN ('20180499') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1805 VALUES LESS THAN ('20180599') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1806 VALUES LESS THAN ('20180699') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1807 VALUES LESS THAN ('20180799') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1808 VALUES LESS THAN ('20180899') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1809 VALUES LESS THAN ('20180999') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1810 VALUES LESS THAN ('20181099') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1811 VALUES LESS THAN ('20181199') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_1812 VALUES LESS THAN ('20181299') NOLOGGING NOCOMPRESS TABLESPACE TS_MIG,
PARTITION PT_MAX VALUES LESS THAN (MAXVALUE)
NOLOGGING
NOCOMPRESS
TABLESPACE TS_MIG
)
NOCOMPRESS
NOCACHE
PARALLEL 8
MONITORING;
1.2 UNIQUE 인덱스 생성[편집]
CREATE UNIQUE INDEX UX_KCY_UNIQUE_IX_01 ON KCY_UNIQUE_IX_TEST(ITEM_CD,AGG_DT)
LOCAL (
PARTITION PT_1804,
PARTITION PT_1805,
PARTITION PT_1806,
PARTITION PT_1807,
PARTITION PT_1808,
PARTITION PT_1809,
PARTITION PT_1810,
PARTITION PT_1811,
PARTITION PT_1812,
PARTITION PT_MAX
)
UNUSABLE ;
1.3 일반 인덱스 생성[편집]
CREATE INDEX IX_KCY_UNIQUE_IX_02 ON KCY_UNIQUE_IX_TEST(ITEM_CD,AGG_DT)
LOCAL (
PARTITION PT_1804,
PARTITION PT_1805,
PARTITION PT_1806,
PARTITION PT_1807,
PARTITION PT_1808,
PARTITION PT_1809,
PARTITION PT_1810,
PARTITION PT_1811,
PARTITION PT_1812,
PARTITION PT_MAX
)
UNUSABLE ;
1.4 데이터 입력[편집]
INSERT INTO KCY_UNIQUE_IX_TEST (STR_CD,AGG_DT,ITEM_CD) VALUES ('A','20180401','2222');
1.5 UNUSABLE 조회[편집]
SELECT INDEX_OWNER,INDEX_NAME,PARTITION_NAME,STATUS
FROM DBA_IND_PARTITIONS
WHERE INDEX_OWNER = 'MIG_ADM'
AND STATUS='UNUSABLE';
1.6 인덱스 리빌드[편집]
ALTER INDEX MIG_ADM.UX_KCY_UNIQUE_IX_01 REBUILD PARTITION PT_1804;
1.7 인덱스 REBUILD 처리DDL 생성[편집]
SELECT 'ALTER INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||';'
FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSABLE';
1.8 인덱스 UNUSABLE 파티션 삭제[편집]
SELECT 'DROP INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||';'
FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSABLE';
SELECT *
FROM KCY_UNIQUE_IX_TEST;
1.9 테이블 UNUSABLE 상태로 변경[편집]
ALTER INDEX MIG_ADM.UX_KCY_UNIQUE_IX_01 MODIFY PARTITION PT_1804 UNUSABLE;