현상
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
복사