export/import를 이용하여 데이터를 옮기거나 space를 정리할 때 table과 index를 각각 다른 테이블스페이스에 분리하여 저장하기도 한다. 이러한 방법은 Oracle의 속도를 향상시키는 데 많은 도움을 준다.
import할 때 table과 index를 생성시켰던 script를 가지고 있으면 편리하게 이 작업을 할 수 있다. 먼저 import할 때 indexes=N 옵션을 사용하여 Index를 제외한 나머지 object들을 import하고, index는 script에서 테이블스페이스를 지정한 후 SQL file을 실행시켜서 생성하면 된다.
index 생성 script를 가지고 있지 않을 때는 import 옵션중에서 indexfile 옵션을 사용하여 index script를 만들어 낼 수가 있다. 이 방법은 indexfile만 만들기 때문에 속도가 빠르고, Index 뿐만이 아니라 table script도 만들어 지기 때문에 결과적으로 table script도 활용할 수 있다. 다음과 같이 만들 수 있다.
다음 작업은 scott user의 모든 데이터를 test user로 옮기기 위해서 export/import를 이용하는 작업이다. import시에 table과 index는 테이블스페이스를 다르게 하여 저장한다.
1. 다음과 같이 scott user를 export 받는다.
$ exp scott/tiger file=scott.dmp
2. export받은 file에서 index를 제외한 나머지만 import한다.
$ imp system/manager file=scott.dmp fromuser=scott touser=test indexes=n commit=y
위와 같이 실행하면 test user에는 index를 제외한 나머지 object만 import된다.
3. 그리고 다음과 같이 indexfile 옵션을 이용하여 index script를 만든다.
$ imp system/manager file=scott.dmp indexfile=index.sql
위와 같이 명령을 실행하면 실제로 데이터는 import되지 않고 index.sql이라는 파일만 만들어진다. 그리고 파일을 vi 등으로 열어서 확인해보면 create table 문장과 create index 문장이 있고 create table 문장은 REM으로 막혀 있어서 결과적으로 create index문만 실행할 수 있도록 되어있다.
이 화일에서 create index문의 테이블스페이스만 바꾸어서 다음과 같이 SQL*Plus에서 실행시킨다.
$ sqlplus test/test
SQL> @index
이렇게 하여 table과 index를 다른 테이블스페이스로 분리하여 저장할 수 있다.
이 indexfile 옵션은 index만이 아니라 table 생성문장이 필요할 때도 유용하게 사용하여 활용할 수 있다.
'ORACLE' 카테고리의 다른 글
Oracle에서 행을 열로 바꿔서 출력 (sys_connect_by_path) (0) | 2010.02.07 |
---|---|
Oracle 10g 설치 후 접속이 안될 경우 (ORA-12514 에러) (0) | 2009.06.25 |
Oracle 내장함수 (0) | 2009.04.14 |
undo tablespace 사이즈 변경 (0) | 2008.12.03 |
DB Link (0) | 2008.12.03 |
control file 위치 변경 (0) | 2008.12.03 |
Database Reorg. (0) | 2008.12.03 |
ORA-04021 timeout occurred while waiting to lock object (0) | 2008.12.02 |
쿼리문 Trace 뜨는 방법 (0) | 2008.12.02 |
로컬에서 @SID (Service Name) 생략하기 로그인하기 (0) | 2008.12.02 |