"글로벌 인덱스 관리"의 두 판 사이의 차이
DB CAFE
(새 문서: == 파티션 태이블 글로벌 인덱스 관리 == # 인덱스는 기본적으로 열의 키(값)를 테이블의 해당 행의 물리적 위치에 매핑하는 구조 # 따라서...) |
(→파티션 태이블 글로벌 인덱스 관리) |
||
3번째 줄: | 3번째 줄: | ||
# 따라서 행을 이동 하는 경우(즉, 행의 물리적 위치 변경) 해당 행의 인덱스 항목을 업데이트해야 함 | # 따라서 행을 이동 하는 경우(즉, 행의 물리적 위치 변경) 해당 행의 인덱스 항목을 업데이트해야 함 | ||
# 그렇지 않으면 인덱스를 더 이상 사용할 수 없습니다. | # 그렇지 않으면 인덱스를 더 이상 사용할 수 없습니다. | ||
− | # 파티션 테이블에 로컬 인덱스 와 글로벌 인덱스를 모두 있는 경우 alter table 명령 으로 파티션을 추가 하거나 삭제시 글로벌 인덱스는 invalid 로 | + | # 파티션 테이블에 로컬 인덱스 와 글로벌 인덱스를 모두 있는 경우 alter table 명령 으로 파티션을 추가 하거나 삭제시 글로벌 인덱스는 invalid 로 되어 unusable 상태가 됨(즉 사용할수 없는 상태가 됨) |
# 19C '''update global indexes''' 옵션 추가되어 unusable index문제 해결 (12C는 확인 ?) | # 19C '''update global indexes''' 옵션 추가되어 unusable index문제 해결 (12C는 확인 ?) | ||
2023년 1월 19일 (목) 16:12 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 파티션 태이블 글로벌 인덱스 관리[편집]
- 인덱스는 기본적으로 열의 키(값)를 테이블의 해당 행의 물리적 위치에 매핑하는 구조
- 따라서 행을 이동 하는 경우(즉, 행의 물리적 위치 변경) 해당 행의 인덱스 항목을 업데이트해야 함
- 그렇지 않으면 인덱스를 더 이상 사용할 수 없습니다.
- 파티션 테이블에 로컬 인덱스 와 글로벌 인덱스를 모두 있는 경우 alter table 명령 으로 파티션을 추가 하거나 삭제시 글로벌 인덱스는 invalid 로 되어 unusable 상태가 됨(즉 사용할수 없는 상태가 됨)
- 19C update global indexes 옵션 추가되어 unusable index문제 해결 (12C는 확인 ?)
1.1 update global indexes 테스트[편집]
- global index unusable 로 되는경우 테스트
-- 파티션 테이블 생성
SQL> create table t (x int, y int, z int )
2 partition by range (x)
3 (
4 partition p1 values less than (4000),
5 partition p2 values less than (8000)
6 );
Table created.
-- 데이터 입력
SQL> insert into t
select q*1000,rownum,rownum
from dba_objects
, ( select rownum q
from dual
connect by level < 8);
SQL> commit;
Commit complete.
-- 로컬 인덱스 생성
SQL> create index ix_local on t ( y ) local;
Index created.
-- 글로벌 인덱스 생성
SQL> create index ix_global on t ( z ) ;
Index created.
-- alter 명령으로 파티션 테이블 구성을 변경(p2a ,p2b 파티션을 추가하여 글로벌 인덱스가 unusable 되는지 확인)
SQL> alter table t split partition p2 at (6000)
2 into ( partition p2a, partition p2b ) ;
Table altered.
-- 파티션 테이블 구조를 변경했기 때문이 로컬 인덱스는 변경 사항없고 글로벌 인덱스는 UNUSABLE 됨.
SQL>
SQL> select index_name, partition_name, status
2 from user_ind_partitions
3 where index_name like 'IX%';
INDEX_NAME PARTITION_NAME STATUS
------------------------------ -------------------- --------
IX_LOCAL P1 USABLE
IX_LOCAL P2A UNUSABLE
IX_LOCAL P2B UNUSABLE
3 rows selected.
SQL>
SQL> select index_name, status
2 from user_indexes
3 where index_name like 'IX%';
INDEX_NAME STATUS
------------------------------ --------
IX_GLOBAL UNUSABLE
IX_LOCAL N/A
2 rows selected.