TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-27 |
제목 | IMPORT 시 TABLE과 INDEX를 분리하여 저장하는 방법 | ||
---|---|---|---|
IMPORT 시 TABLE과 INDEX를 분리하여 저장하는 방법
================================================ Purpose ------- I/O의 분산을 위해 Table과 Index를 다른 tablespace에 저장하는 경우가 있다. Import 할 때 이렇게 Table과 Index를 분리하는 방법에 대해 알아보자 Explanation ----------- Export/Import를 이용하여 Data를 옮기거나 Space를 정리할 때 Table과 Index를 각각 다른 Tablespace에 분리하여 저장하기도 한다. 이러한 방법은 Oracle의 속도를 향상시키는 데 많은 도움을 준다. Import할 때 Table과 Index를 생성시켰던 Script를 가지고 있으면 편리하게 이 작업을 할 수 있다. 먼저 Import할 때 Indexes=N option을 사용하여 Index를 제외한 나머지 Object를 Import하고, Index는 Script에서 Tablespace를 지정한 후 SQL file을 실행시켜서 생성하면 된다. 그러나, Index Script를 가지고 있지 않을 때에는 문제가 복잡해진다. 그러한 경우에 Import Option 중에서 Indexfile Option을 사용하여 Index script를 만들어 낼 수가 있다. 이 방법은 Indexfile만 만들기 때문에 속도가 빠르고, Index 뿐만 아니라 Table Script도 만들어지기 때문에 결과적으로 Table Script도 활용할 수 있다. 단, 이렇게 하면 create index에 의해 만들어진 index는 분리되지만, primary key나 unique constraint에 의해 만들어진 index는 그대로 data가 insert되는 tablespace 내에 포함된다. 이러한 제약 사항으로 인해 생성된 index도 다른 tablespace에 분리하고자 한다면, 다시 constaint를 using index 절을 이용하여 재생성하거나 rebuild 하여야 한다. 다음과 같이 만들 수 있다. 다음 작업은 Scott User의 모든 Data를 Test User로 옮기기 위해서 Export/Import를 이용하는 작업이다. Import 시에 Table과 Index는 tablespace를 다르게 하여 저장한다. 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 log=scott.log 위와 같이 실행하면 Test User에는 Index를 제외한 나머지 Object만 Import된다. 3. 그리고 다음과 같이 Indexfile Option을 이용하여 Index Script를 만든다. $ imp system/manager file=scott.dmp indexfile=index.sql 위와 같이 명령을 실행하면 실제로 Data는 Import되지 않고, index.sql이라는 File만 만들어진다. 그리고 그 화일을 vi 등으로 열어서 확인해 보면 create table 문장과 create index 문장이 있고 Create Table 문장은 REM 으로 막혀 있어서 결과적으로 Create Index 문만 실행할 수 있도록 되어 있다. 이 화일에서 Create Index 문의 Tablespace만 바꾸어서 다음과 같이 SQL*Plus에서 실행시킨다. $ sqlplus test/test SQL> @index 이렇게 하여 Table과 Index를 다른 Tablespace로 분리하여 저장할 수 있다. 이 Indexfile option은 Index 뿐만 아니라 Table 생성 문장이 필요할 때에 도 유용하게 사용하여 활용할 수 있다. *** 참고로 primary key 같은 경우 import 후 rebuild하여 다른 tablespace에 생성하는 방법은 다음과 같다. alter index index_name rebuild tablespace tablespace_name; |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |