Q :
테이블의 move시에 해당 테이블에 걸려 있는 인덱스의 상태는 어떻게 될까?
A :
UNUSABLE로 되기 때문에 TABLE MOVE시에는 반드시 인덱스를 rebuild 해줘야 한다.
=============================================
테스트 시나리오
1. 테스트용 테이블 생성
2. 데이터 입력
3. 인덱스 생성
4. 테이블 move(테이블스페이스 이동)
5. 인덱스 상태 확인
6. 인덱스 rebuild
7. 인덱스 상태 확인
---------------------------------------------
1. 테스트용 테이블 생성
SQL> create table test (col1 number, col2 varchar2(100));
테이블이 생성되었습니다.
2. 데이터 입력
SQL> insert into test
2 select level, 'test'
3 from dual
4 connect by level <= 1000;
1000개의 행이 생성되었습니다.
SQL> commit;
커밋이 완료되었습니다.
3. 인덱스 생성
SQL> create index test_idx01 on test(col1,col2);
인덱스가 생성되었습니다.
4. 테이블 move(테이블스페이스 이동)
SQL> conn test/test
연결되었습니다.
SQL> alter table test move tablespace test;
테이블이 변경되었습니다.
5. 인덱스 상태 확인
SQL> select index_name, status from dba_indexes
2 where index_name = 'TEST_IDX01';
INDEX_NAME STATUS
------------------------------ --------
TEST_IDX01 UNUSABLE
6. 인덱스 rebuild
SQL> alter index TEST_IDX01 rebuild;
인덱스가 변경되었습니다.
7. 인덱스 상태 확인
SQL> conn / as sysdba
연결되었습니다.
SQL> select index_name, status from dba_indexes
2 where index_name = 'TEST_IDX01';
INDEX_NAME STATUS
------------------------------ --------
TEST_IDX01 VALID
'Oracle > Admin' 카테고리의 다른 글
PK 변경절차 (0) | 2016.11.18 |
---|---|
파티션 테이블 인덱스 DDL 작업 (0) | 2015.08.18 |
[펌] AMM에 관한 Test Case (0) | 2013.04.16 |
SQL*Loader 성능을 향상시키는 방법 (0) | 2013.01.16 |
유저 단위 export시 테이블스페이스 관련 (0) | 2012.09.24 |