내용 목차
본 장에서는 tbImport 유틸리티를 소개하고 사용 방법을 설명한다.
tbImport는 Tibero에서 제공하는 Import 유틸리티이다. 이 유틸리티를 통해 외부 파일에 저장된 스키마 객체를 Tibero 데이터베이스에 다시 저장하므로, tbExport 유틸리티와 함께 데이터베이스의 백업과 다른 머신 간의 데이터베이스 전송 등을 할 때 유용하다. tbImport 유틸리티는 기능에서 tbExport 유틸리티와 대칭적이거나 유사한 것이 많다.
하나의 스키마 객체를 저장하면 그와 연관된 스키마 객체가 자동으로 함께 저장된다. 필요에 따라서 연관된 일부 스키마 객체가 저장되지 않도록 지정할 수 있다.
Import 모드에는 tbExport에서와 같이 전체 데이터베이스 모드, 사용자 모드, 테이블 모드가 있다. DBA만이 사용할 수 있으며, DBA 권한을 줄 수 없을 경우 SELECT ANY DICTIONARY 권한을 부여하여 사용하는 것을 권장한다.
Import가 실행되는 과정에서 발생하는 로그는 LOG 파라미터를 사용하여 지정한다.
다음은 tbImport 유틸리티를 실행한 결과로 생성되는 완료, 경고 및 에러 메시지에 대한 설명이다.
항목 | 설명 |
---|---|
완료 메시지 | Import가 성공적으로 완료된 후에 출력된다. |
경고 메시지 | Import가 완료되었으나 경고가 발생한 경우에 출력된다. |
에러 메시지 | Import 과정에서 에러가 발생하여 Import를 계속할 수 없는 경우에 출력된다. |
tbImport 유틸리티는 Tibero를 설치하는 과정에서 함께 설치되며, Tibero를 제거하면 함께 제거된다. 또한 Java 언어로 구현되어 있으며, JVM(Java Virtual Machine)이 설치되어 있는 어떤 플랫폼에서도 바로 운영할 수 있다.
tbImport 유틸리티를 실행하기 전에 다음과 같은 사항을 준비해야 한다.
JRE 1.4.2 이상 설치
Tibero 데이터베이스 서버와 같은 플랫폼에 설치되어 있거나 네트워크로 연결된다.
실행에 필요한 클래스 라이브러리(기본 위치: $TB_HOME/client/lib/jar 디렉터리)
tbImport 클래스: expimp.jar
유틸리티 공통 라이브러리: toolcom.jar
유틸리티 공통 Logger 라이브러리: msllogger-14.jar
JDBC 드라이버: internal-jdbc-14.jar
실행에 필요한 클래스 라이브러리는 Tibero를 설치하는 과정에 함께 설치되므로 추가적인 작업을 할 필요는 없다.
Import 모드는 Export 모드와 동일하게 전체 데이터베이스 모드, 사용자 모드, 테이블 모드가 있다. Export를 한 파일을 소스로 하여 각 모드의 특성에 맞게 데이터를 Import한다. 각 모드는 파라미터를 사용하여 지정할 수 있다.
다음은 모드별로 Import하는 스키마 객체의 포함 관계를 나타내는 그림이다.
전체 데이터베이스 모드는 Export한 파일로부터 Tibero 데이터베이스 전체를 Import하기 위한 모드이다. SYS 사용자를 제외한 모든 사용자의 객체를 Import하기 위해 사용한다.
전체 데이터베이스 모드를 사용하기 위해서는 FULL 파라미터를 Y로 설정한다.
FULL=Y
사용자 모드는 Export한 파일로부터 SYS 사용자를 제외한 지정된 사용자에 대해 그 사용자가 소유하고 있는 모든 스키마 객체를 Import하는 모드이다. DBA는 하나 이상의 사용자에게 이 모드를 사용할 수 있다.
사용자 모드를 사용하기 위해서는 USER 파라미터를 USER=userlist 형태로 설정한다.
USER=SCOTT, USER1, …
테이블 모드는 Export한 파일로부터 하나 이상의 테이블을 지정하여 그 테이블과 연관된 인덱스 등의 스키마 객체를 함께 Import하는 모드이다.
테이블 모드를 사용하기 위해서는 TABLE 파라미터를 TABLE=tablelist 형태로 설정한다. 주의할 점은 SCOTT.EMP와 같이 테이블을 소유한 사용자를 반드시 명시해야 한다는 것이다.
TABLE=SCOTT.EMP, USER1.TABLE1, …
From User To User 모드는 Export한 파일로부터 FROMUSER 파라미터에 지정한 사용자에 대해서 TOUSER 파라미터에 지정한 사용자로 해당 스키마 객체의 소유자를 변경하여 Import하는 모드이다. DBA는 하나 이상의 사용자에게 이 모드를 사용할 수 있다.
From User To User 모드를 사용하기 위해서는 다음과 같은 형식으로 파라미터를 설정한다.
FROMUSER=SCOTT,USER1 TOUSER=USER2,USER3…
tbImport 유틸리티를 실행하는 중에 테이블에 제약조건이 설정되어 있는 경우 이 제약조건을 위반하는 로우는 저장되지 않는다.
만약 tbImport 유틸리티의 실행 순서로 테이블 데이터보다 테이블 제약조건을 먼저 저장한다면, 제약조건을 위반하여 저장되지 않는 로우가 생길 것이다. 예를 들어 참조 무결성 제약조건이 설정되어 있는 두 테이블에서 자식 테이블의 데이터를 부모 테이블보다 먼저 저장한다면, 자식 테이블에는 한 개의 로우도 저장되지 않을 것이다.
따라서 제약조건이 있는 테이블을 Import할 때에는 모든 테이블 데이터를 입력하고 나중에 테이블 제약조건을 설정한다.
tbImport 유틸리티를 실행하기 전에 데이터베이스에 사용자가 직접 같은 이름의 테이블을 정의할 수 있다. 이때 새로 정의하는 테이블은 tbImport 유틸리티를 실행할 테이블과 호환성을 유지하는 한도에서 다르게 정의할 수 있다.
테이블 간의 호환성을 유지하려면 다음의 사항에 주의한다.
tbImport 유틸리티를 실행할 테이블
해당 테이블이 포함하는 컬럼을 모두 포함해야 한다.
데이터 타입
상호 호환성이 있어야 하며 기본값 등을 변경하면 안 된다.
새로운 컬럼을 추가하는 경우
NOT NULL 또는 기본 키 제약조건 등을 설정하지 않아야 한다.
데이터베이스 내에 이미 존재하는 같은 이름의 테이블에 tbImport 유틸리티를 실행할 수도 있다. 이 때에도 앞에서 설명한 바와 같이 두 테이블 간에 호환성을 유지해야 한다.
tbImport 유틸리티를 실행하기 전에 사용자가 같은 이름의 테이블을 정의하거나 데이터베이스 내에 같은 이름의 테이블이 이미 존재하는 경우 테이블에 미리 설정되어 있는 제약조건에 의해 tbImport 유틸리티에 저장되지 않는 로우가 생길 수 있다.
이미 존재하는 테이블에 데이터를 Import할 때에는 다음의 두 가지 방법을 사용할 수 있다.
제약조건의 정지
tbImport 유틸리티를 실행하는 동안에 제약조건을 잠시 정지시킨다.
실행 순서 조절
tbImport 유틸리티를 실행하는 동안에 실행 순서를 조절한다. 예를 들어 참조 무결성 제약조건이 설정되어 있는 두 테이블에 대해 부모 테이블을 먼저 저장하고 나중에 자식 테이블을 저장한다.
테이블의 크기가 매우 큰 경우에는 순서 조절을 이용하는 후자의 해결 방법이 성능 면에서 유리하다. 제약조건을 잠시 정지시키는 방법의 경우 제약조건을 다시 허용하면 테이블 내의 모든 로우에 대해 제약조건의 성립 여부를 검사하기 때문에 성능 면에서 좋지 않은 영향을 줄 수 있다.
사용자가 파라미터 값을 지정하지 않고 tbImport 유틸리티를 실행하면, 다음과 같이 명령 프롬프트에서 지정할 수 있는 파라미터의 목록과 사용법이 나타난다.
tbImport 6.0 101902 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Usage: tbimport [PARAMETER1=VALUE] [PARAMETER2=VALUE] ... Parameters: BIND_BUF_SIZE Specify the buffer size of DPL stream, default: 1M(1048576) CFGFILE Config file name COMMIT Commit after the insertion, default: N CONSTRAINT Import Constraint: Y/N, default: Y DBLINK Import DB Link: Y/N, default: Y DPL Use Direct Path Load: Y/N, default: N EXP_SERVER_VER Specify the exported server version, default: 8 FILE Import dump file name, default: default.dat FROMUSER FromUser toUser Mode: user name list (must be used with TOUSER parameter) FULL Full Mode: Y/N, default: N GRANT Import Grant: Y/N, default: Y GEOM_ASBYTES Import the data to the geometry columns as bytes, default: N IGNORE Ignore create error due to object existence: Y/N, default: N INDEX Import Index: Y/N, default: Y IO_BUF_SIZE Specify the buffer size of file I/O, default: 16M(16777216) IP IP address, default: localhost LOG Import script log file name LOGDIR Import log directory NATIONAL_CHARSET Specify the exported national character set, default is the exported character set NO_PACK_DIR Import unpacked dump files from specified directory. If this option is specified, FILE parameter will be ignored. PASSWORD User password ROLE Import Role: Y/N, default: Y PORT PORT number, default: 8629 PSM Import PSM: Y/N, default: Y P_DPL Use Parallel DPL: Y/N, default: N ROWS Import Table Rows: Y/N, default: Y SAVE_CREDENTIAL Save your username and password to specified file SCRIPT LOG THE DDL SCRIPT: Y/N, default: N SEQUENCE Import Sequence: Y/N, default: Y SID Database name SYNONYM Import Synonym: Y/N, default: Y TABLE Table Mode: table name list TEMP_DIR Directory for the temporary raw dump files. THREAD_CNT Thread Count, default: 4 TOUSER FromUser toUser Mode: user name list (must be used with FROMUSER parameter) TRIGGER Import Trigger: Y/N, default: Y USER User Mode: user name list USERNAME Database user name
파라미터 값은 순서를 지정해서 입력하지 않아도 된다. 파라미터 값 중에 CFGFILE 값은 명령 프롬프트에서만 지정할 수 있지만, 나머지 파라미터 값은 환경설정 파일에서도 지정할 수 있다.
명령 프롬프트에 사용되는 파라미터를 환경설정 파일에 저장하여 관리하는 방법에는 다음과 같은 두 가지 형식이 있다. 두 번째 형식은 하나 이상의 파라미터 값을 지정하는 경우이다.
PARAMETER=value PARAMETER=value1, ...
다음은 파라미터를 지정하는 예이다.
FULL=Y
FILE=TBEXPORT.DAT
GRANT=Y
INDEX=Y
CONSTRAINT=Y
다음은 명령 프롬프트에서 지정할 수 있는 tbImport 유틸리티의 파라미터이다.
항목 | 설명 |
---|---|
BIND_BUF_SIZE | Import를 DPL 모드로 실행할 때 stream에서 사용하는 bind buffer의 크기를 조절한다. (기본값: 1MB(1048576)) |
CFGFILE | 환경설정 파일의 이름이다. |
COMMIT | insert 작업 후에 commit을 수행한다. (기본값: N) insert 작업의 단위는 아래와 같다.
|
CONSTRAINT | Import를 수행할 때 제약조건의 Import 여부를 지정한다.
|
DPL | DPL 방법으로 Import할지 여부를 지정한다.
|
DBLINK | Import를 수행할 때 DBLink의 Import 여부를 지정한다.
|
EXP_SERVER_VER | Export한 서버의 버전을 설정한다.
|
FILE | Import를 수행할 덤프 파일의 이름을 입력한다. (기본값: default.dat) 바이너리 파일의 형태로 운영체제에서 생성되며, 이름을 지정하지 않으면 기본값에서 Import한다. |
FROMUSER | From to User 모드에서 사용하며 Export할 때 사용된 객체의 원래 소유자를 지정한다. 다음의 형태로 사용할 수 있으며 이 때 Mapping 개수는 동일해야 한다. FROMUSER=userlist 자세한 설정 방법은 아래 예제를 참고한다.
|
FULL | 전체 데이터베이스 모드로 Import를 수행할지 지정한다.
|
GRANT | Import를 수행할 때 권한의 Import 여부를 지정한다.
|
GEOM_ASBYTES | geometry 컬럼에 대해 WKB 또는 bytes로 밀어넣을지 여부를 설정한다. (기본값 : Y)
|
IGNORE | Import를 수행할 때 이미 존재하는 스키마 객체로 인한 생성 에러를 무시한다.
|
INDEX | Import를 수행할 때 인덱스 정보의 Import 여부를 지정한다.
|
IO_BUF_SIZE | Import를 실행할 때 파일의 입/출력에 사용되는 버퍼의 크기를 조절한다. (기본값: 16MB(16777216)) |
IP | Import 대상 Tibero 서버의 IP 주소를 입력한다. (기본값: localhost) |
LOG | Import된 오브젝트들의 스크립트가 기록될 파일의 이름을 입력한다. |
LOGDIR | Import의 수행 로그가 기록될 파일을 저장할 디렉터리 이름을 입력한다. |
NATIONAL_CHARSET | Export한 언어 셋을 설정한다. (기본값: Export한 문자 셋) |
NO_PACK_DIR | Import를 수행할 압축을 해제한 덤프 파일이 저장되는 디렉터리이다. 이 옵션이 지정되면, FILE 파라미터에 설정된 값은 무시된다. |
PASSWORD | Import를 수행하는 사용자의 패스워드를 입력한다. |
ROLE | Import를 수행할 때 ROLE의 Import 여부를 지정한다.
|
PORT | Import 대상 Tibero 서버의 포트 번호를 입력한다. (기본값: 8629) |
PSM | Import를 수행할 때 PSM 오브젝트의 Import 여부를 지정한다.
|
P_DPL | 병렬 DPL 방법으로 Import할지 여부를 지정한다.
|
ROWS | Import를 수행할 때 테이블의 데이터를 Import할지 여부를 지정한다.
|
SAVE_CREDENTIAL | 암호화한 USERNAME과 PASSWORD를 사용할 때 설정한다.
|
SCRIPT | Import를 수행할 때 스키마 객체를 생성하는 DDL 스크립트를 표시할지 여부를 지정한다.
|
SEQUENCE | Import를 수행할 때 Sequence의 Import 여부를 지정한다.
|
SID | Import 대상 Tibero 서버의 SID를 입력한다. |
SYNONYM | Import를 수행할 때 Synonym의 Import 여부를 지정한다.
|
TABLE | 테이블 모드로 Import를 수행할 때 Import할 대상 테이블의 이름을 지정한다. 다음의 형태로 사용한다. TABLE=tablelist |
TEMP_DIR | Import를 수행할 때 사용되는 임시 덤프 파일들이 생성될 디렉터리를 지정한다. |
THREAD_CNT | 테이블 데이터를 Import하기 위해 사용하는 스레드의 개수를 입력한다. (기본값: 4) |
TOUSER | From to User 모드에서 사용하며 Import를 수행할 때 Import할 소유자를 지정한다. 다음의 형태로 사용한다. TOUSER=userlist |
TRIGGER | Import를 수행할 때 Trigger의 Import 여부를 지정한다.
|
USER | 사용자 모드로 Import를 수행할 때 Import될 객체의 소유자를 지정한다. 다음의 형태로 사용한다. USER=userlist |
USERNAME | Import를 수행하는 사용자의 계정을 입력한다. |
tbImport 유틸리티로 Import를 수행하는 순서는 다음과 같다.
테이블 정의
테이블 데이터
테이블 인덱스
테이블 제약조건, 뷰, 프러시저 등
다음은 tbImport 유틸리티를 이용하여 Import를 수행하는 예이다.
[예 4.2] tbImport 유틸리티를 이용한 Import의 수행
tbImport 6.0 97819 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Unpacking the file... the entire database: Mon Jul 14 01:07:43 KST 2014 Import character set: MS949 The version of this tbExport dump file is 5.0. importing schema: "TIBERO" importing tables [M] importing table BONUS no rows imported. [0] importing table DEPT 4 rows imported. [0] importing table SALGRADE 5 rows imported. [1] importing table EMP 10 rows imported. importing index importing sequences importing views importing synonyms Import completed successfully: Mon Jul 14 01:07:55 KST 2014