Oracle 운용시 Export한 DB 와 import할 DB 의 테이블스페이스명(tablespace 이름)이 다른 경우
2011/07/06 12:13 : --- IT관련 지식 ----/-- Oracle 기초 --Oracle DBMS를 운용 중에 export 한 DB를 import 할 경우 다른 tablespace로 해야하는 경우가 종종 발생한다. 특히 해당 oracle user의 default tablespace에 지정된 tablespace에서 export를 하고 다른 tablespace로 import를 해야할 경우가 해당될 수 있다.
이 경우에는 여러가지해결 방법이 있으나 보통 export를 이용해 dump된 파일을 이용해서 새로운 tablespace에 해당하는 object들을 생성하는 script를 만든 후 그 script를 이용해 object를 미리 생성해놓고 data를 import하는 방법을 사용한다.
작업은 다음과 같은 순서로 진행한다.
1.
( imp 명령의 indexfile 옵션을 이용)
$ imp오라클사용자명/비밀번호@DB인스턴스명 file=dump된파일명 fromuser=export한사용자명 touser=import할사용자명 indexfile=script파일명
위와 같이 실행시키면 해당 디렉토리에 DB object를 생성하는 script 파일이 생성된다. 이 생성 script일을 그대로 사용할 수 없으니 text editor로 편집을 해야한다. Editor를 이용해서 파일을 열어보면 각각의 object들을 확인할 수 있다.
2.
이 생성 script는 모두 'REM' 으로 주석 처리가 되어 있는데 이 'REM' 주석 표시를 모두제거한다.
또한 script 처음 부분에 보면 첫번째 table을 생성하고 connect 명령어가 나오는데 이 부분도 제거한다.
그리고 생성 script에서 tablespace명을 import할 곳의 tablespace에 맞게 수정한다.
3. Data import
Object 생성 script를 모두 수정하였으면 Oracle client 어플리케이션 등을 이용해서 object 생성 script를 실행 후 imp 명령을 다시 실행한다.
이때 indexfile 옵션은 없애야 하며 대신 ignore=yes 옵션을추가한다. import시 동일한 이름의 object가 있는 경우 에러를 발생하고 import를 skip 하는데 ignore=yes 옵션은 이를 무시하고 import 할 수 있게 해준다.
실행 형식은 아래와 같다.
$ imp 오라클사용자명/비밀번호@DB인스턴스명 file=dump된파일명 fromuser=export한사용자명 touser=import할명 ignore=yes log=log파일명