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
댓글 없음:
댓글 쓰기