Oracle/Admin2015. 4. 30. 13:30

 

 

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
Posted by 자수성가한 부자