2013년 5월 24일

오라클 데이터 파일 IMPORT 하기

보통은 export 된 데이터 파일을 import 한는 경우  imp 명령 옵션에서 fromuser=[export 계정] 와 touser=[import 계정] 을 사용하거나 FULL=Y 옵션을 사용하여 임포트한다.

TABLESPACE 이름이 다른 경우 import 하는 계정의 TABLESPACE 가 디폴드로 사용되는데 CLOB, BLOB 타입은  예외다. 즉 LOB 타입의 컬럼을 포함하는 테이블들은 import 되지 않는 문제가 발생된다.

이를 해결하기 위하여 데이터파일을 가지고 LOB 데이터를 포함하는 테이블 생성을 위한 스크립트를 추출하고, 추출된 쿼리를 사용하여 LOB 컬럼을 포함하는 미리 테이블을 생성한다.
다음으로 데이터파일을 import 한다.


indexfile 옵션을 사용하여 export 된 데이터파일에서 쿼리 추출 


imp system/***** file=SITE1_REAL.DMP fromuser=user01 touser=user02 indexfile=create.sql constraints=y full=y log=debug.log


create.sql 에서 CLOB, BLOB 문자를 검색하고 해당 테이블 관련 쿼리를 추출한다. 참고로 추출된 create.sql 은 아래와 같은 형식으로 만들어 진다. 이때 TABLESPACE 를 import 하려는 계정이 사용하는 TABLESPACE 롤 변경한다.  

REM  ... 0 rows

REM  CREATE TABLE "USER02"."T_USER_PHOTO" ("USER_NUM" VARCHAR2(15)

REM  NOT NULL ENABLE, "PHOTO" BLOB, "CREATED_DTIME" VARCHAR2(14),

REM  "CREATED_BY" VARCHAR2(15), "UPDATED_DTIME" VARCHAR2(14), "UPDATED_BY"

REM  VARCHAR2(15)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

REM  STORAGE(INITIAL 2097152 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL

REM  DEFAULT) TABLESPACE "USER01_TB" LOGGING NOCOMPRESS LOB ("PHOTO")

REM  STORE AS (TABLESPACE "USER01_TB" ENABLE STORAGE IN ROW CHUNK 8192

REM  PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 2097152 FREELISTS 1

REM  FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) ;

REM  ... 3 rows

REM  ALTER TABLE "USER02"."T_USER_PHOTO" ADD PRIMARY KEY

REM  ("USER_NUM") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255

REM  STORAGE(INITIAL 2097152 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL

REM  DEFAULT) TABLESPACE "USER01_TB" LOGGING ENABLE ;



TABLESPACE "USER01_TB" 값을 TABLESPACE "USER02_TB" (USER02 의 TABLESPACE 가  "USER02_TB" 라 가정)

이제 추출된 쿼리를 사용하여 테이블 생성한다.

export 된 데이터파일에서 import 

imp system/****** file=SITE1_REAL.DMP fromuser=user01 touser=user02 ignore=y log=debug.log

댓글 없음:

댓글 쓰기