기술 정보
home
채널 소개
home

tbexport remap_tablespace 사용 시 LOB 컬럼 테이블스페이스 미변경 현상

문서 유형
장애 해결
분야
마이그레이션
키워드
LOB
remap_tablespac
적용 제품 버전
6FS07
1 more property

현상

Tibero 6 (DB 6.0 FS07_CS_2005) 버전에서 tbexport 수행 시 remap_tablespace 옵션을 지정해도LOB에 대한 테이블스페이스는 변경되지 않는 현상이 발생하였습니다.
 1. lob 컬럼이 있는 테이블에 대한 tbexport을 remap_tablespace 옵션을 포함하여 수행합니다.
$ tbexport username=sys password=tibero sid=tibero port=8629 file=lob_col.dat log=lob_col.log table=tibero.test remap_tablespace=tibero:test script=y
SQL
복사
2. tbexport에서 생성된 DDL 스크립트 확인합니다.
테이블에 대한 테이블스페이스는 변경되었지만, LOB에 대한 테이블스페이스는 변경되지 않았음을 확인할 수 있습니다.
SQL> @ISU_CRYPT_BLOCK.sql At line 179, column 48: if((i + 1) % 16 == 0 && i != 0){ ^ Enter value for 'i':
SQL
복사

원인

table mode export진행 시 table space name을 remap table space name으로 받아와 export를 진행하는 것이 아닌 기존의 table space name으로 받아와 ddl 구문을 생성하면서 해당 오류가 발생하였습니다.

해결

1. FS07_282928a_expimp 패치 포함 바이너리로 교체

Tibero6 FS07PS 버전부터는 기반영 되어있으므로, FS07_282928a_expimp 패치를 적용하여 해결합니다.

2. LOB 테이블 DDL 확인 및 테이블스페이스 수동 지정 후 tbimport 수행

tbexport 시 script=y 옵션을 주어 LOB 테이블에 대한 DDL을 확인하여 테이블스페이스를 수동으로 변경해주고, 테이블을 생성한 상태로 tbimport 시 ignore=y 옵션을 주어 데이터를 이관합니다.
tbexport 수행 시 스크립트 생성
$ tbexport username=sys password=tibero sid=tibero port=8629 file=lob_col.dat log=lob_col.log table=tibero.test remap_tablespace=tibero:test script=y
SQL
복사
SCRIPT
Export를 수행할 때 스키마 객체를 생성하는 DDL 스크립트의 표시 여부를 지정합니다. - Y : 스키마 객체를 생성하는 DDL 스크립트를 표시합니다. - N : 스키마 객체를 생성하는 DDL 스크립트를 표시하지 않습니다. (기본값)
tbimport 수행 명령어
$ tbimport username=sys password=tibero sid=tibero port=8629 file=lob_col.dat table=tibero.test log=imp_lob_col.log script=y ignore=y
SQL
복사
IGNORE
Import를 수행할 때 이미 존재하는 스키마 객체로 인한 생성 에러를 무시 여부를 설정합니다. Y : 이미 존재하는 스키마 객체로 인한 생성 에러를 무시합니다. N : 이미 존재하는 스키마 객체로 인한 생성 에러를 무시하지 않습니다. (기본값)

3. Tibero Client 변경 작업 후 tbexport/tbimport 재수행

Client 변경 방안
3.1) 패치가 포함된 client.tar 파일을 /home/{tibero OS 유저명} 경로에 업로드
3.2) client.tar 압축 해제
$ tar xvf client.tar
SQL
복사
3.3) tbimport 파일의 jar 파일 경로 변경
$ vi /home/{tibero OS 유저명}/client/bin/tbimport --------------------------- #Classpath toolcom=/home/{tibero OS 유저명}/client/lib/jar/toolcom.jar expimp=/home/{tibero OS 유저명}/client/lib/jar/expimp.jar jdbc=/home/{tibero OS 유저명}/client/lib/jar/internal-jdbc-14.jar logger=/home/{tibero OS 유저명}/client/lib/jar/msllogger-14.jar ---------------------------
SQL
복사
3.4) tbexport 및 tbimport 수행
변경한 Client(tbimport 유틸리티)가 존재하는 디렉토리에서 수행합니다.
$ tbexport username=sys password=tibero sid=tibero port=8629 file=lob_col.dat log=lob_col.log table=tibero.test remap_tablespace=tibero:test script=y
SQL
복사
$ tbimport username=sys password=tibero sid=tibero port=8629 file=lob_col.dat table=tibero.test log=imp_lob_col.log script=y ignore=y
SQL
복사