제4장 tbImport

내용 목차

4.1. 개요
4.2. 빠른 시작
4.2.1. 실행 전 준비사항
4.2.2. Import 모드
4.2.3. 실행
4.3. 수행 방법
4.3.1. 제약조건이 있는 테이블의 Import
4.3.2. 호환이 가능한 테이블의 Import
4.3.3. 이미 존재하는 테이블에 데이터 Import
4.4. 명령 프롬프트에서의 파라미터 지정
4.4.1. 파라미터 목록
4.5. 수행 예제

본 장에서는 tbImport 유틸리티를 소개하고 사용 방법을 설명한다.

4.1. 개요

tbImportTibero에서 제공하는 Import 유틸리티이다. 이 유틸리티를 통해 외부 파일에 저장된 스키마 객체를 Tibero 데이터베이스에 다시 저장하므로, tbExport 유틸리티와 함께 데이터베이스의 백업과 다른 머신 간의 데이터베이스 전송 등을 할 때 유용하다. tbImport 유틸리티는 기능에서 tbExport 유틸리티와 대칭적이거나 유사한 것이 많다.

하나의 스키마 객체를 저장하면 그와 연관된 스키마 객체가 자동으로 함께 저장된다. 필요에 따라서 연관된 일부 스키마 객체가 저장되지 않도록 지정할 수 있다.

Import 모드에는 tbExport에서와 같이 전체 데이터베이스 모드, 사용자 모드, 테이블 모드가 있다. DBA만이 사용할 수 있으며, DBA 권한을 줄 수 없을 경우 SELECT ANY DICTIONARY 권한을 부여하여 사용하는 것을 권장한다.

Import가 실행되는 과정에서 발생하는 로그는 LOG 파라미터를 사용하여 지정한다.

다음은 tbImport 유틸리티를 실행한 결과로 생성되는 완료, 경고 및 에러 메시지에 대한 설명이다.

항목설명
완료 메시지Import가 성공적으로 완료된 후에 출력된다.
경고 메시지Import가 완료되었으나 경고가 발생한 경우에 출력된다.
에러 메시지Import 과정에서 에러가 발생하여 Import를 계속할 수 없는 경우에 출력된다.

4.2. 빠른 시작

tbImport 유틸리티는 Tibero를 설치하는 과정에서 함께 설치되며, Tibero를 제거하면 함께 제거된다. 또한 Java 언어로 구현되어 있으며, JVM(Java Virtual Machine)이 설치되어 있는 어떤 플랫폼에서도 바로 운영할 수 있다.

4.2.1. 실행 전 준비사항

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를 설치하는 과정에 함께 설치되므로 추가적인 작업을 할 필요는 없다.

4.2.2. Import 모드

Import 모드는 Export 모드와 동일하게 전체 데이터베이스 모드, 사용자 모드, 테이블 모드가 있다. Export를 한 파일을 소스로 하여 각 모드의 특성에 맞게 데이터를 Import한다. 각 모드는 파라미터를 사용하여 지정할 수 있다.

다음은 모드별로 Import하는 스키마 객체의 포함 관계를 나타내는 그림이다.

[그림 4.1] 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 모드

From User To User 모드는 Export한 파일로부터 FROMUSER 파라미터에 지정한 사용자에 대해서 TOUSER 파라미터에 지정한 사용자로 해당 스키마 객체의 소유자를 변경하여 Import하는 모드이다. DBA는 하나 이상의 사용자에게 이 모드를 사용할 수 있다.

From User To User 모드를 사용하기 위해서는 다음과 같은 형식으로 파라미터를 설정한다.

FROMUSER=SCOTT,USER1 TOUSER=USER2,USER3…

4.2.3. 실행

tbImport 유틸리티를 실행하려면 $TB_HOME/client/bin 디렉터리에서 tbimport 명령어를 입력한다.

다음은 전체 데이터베이스모드로 실행하는 예이다.

[예 4.1] tbImport 유틸리티의 실행

$ tbimport username=tibero password=tmax sid=tibero file=export.dat full=y
$ tbimport cfgfile=import.cfg

4.3. 수행 방법

4.3.1. 제약조건이 있는 테이블의 Import

tbImport 유틸리티를 실행하는 중에 테이블에 제약조건이 설정되어 있는 경우 이 제약조건을 위반하는 로우는 저장되지 않는다.

만약 tbImport 유틸리티의 실행 순서로 테이블 데이터보다 테이블 제약조건을 먼저 저장한다면, 제약조건을 위반하여 저장되지 않는 로우가 생길 것이다. 예를 들어 참조 무결성 제약조건이 설정되어 있는 두 테이블에서 자식 테이블의 데이터를 부모 테이블보다 먼저 저장한다면, 자식 테이블에는 한 개의 로우도 저장되지 않을 것이다.

따라서 제약조건이 있는 테이블을 Import할 때에는 모든 테이블 데이터를 입력하고 나중에 테이블 제약조건을 설정한다.

4.3.2. 호환이 가능한 테이블의 Import

tbImport 유틸리티를 실행하기 전에 데이터베이스에 사용자가 직접 같은 이름의 테이블을 정의할 수 있다. 이때 새로 정의하는 테이블은 tbImport 유틸리티를 실행할 테이블과 호환성을 유지하는 한도에서 다르게 정의할 수 있다.

테이블 간의 호환성을 유지하려면 다음의 사항에 주의한다.

  • tbImport 유틸리티를 실행할 테이블

    해당 테이블이 포함하는 컬럼을 모두 포함해야 한다.

  • 데이터 타입

    상호 호환성이 있어야 하며 기본값 등을 변경하면 안 된다.

  • 새로운 컬럼을 추가하는 경우

    NOT NULL 또는 기본 키 제약조건 등을 설정하지 않아야 한다.

4.3.3. 이미 존재하는 테이블에 데이터 Import

데이터베이스 내에 이미 존재하는 같은 이름의 테이블에 tbImport 유틸리티를 실행할 수도 있다. 이 때에도 앞에서 설명한 바와 같이 두 테이블 간에 호환성을 유지해야 한다.

tbImport 유틸리티를 실행하기 전에 사용자가 같은 이름의 테이블을 정의하거나 데이터베이스 내에 같은 이름의 테이블이 이미 존재하는 경우 테이블에 미리 설정되어 있는 제약조건에 의해 tbImport 유틸리티에 저장되지 않는 로우가 생길 수 있다.

이미 존재하는 테이블에 데이터를 Import할 때에는 다음의 두 가지 방법을 사용할 수 있다.

  • 제약조건의 정지

    tbImport 유틸리티를 실행하는 동안에 제약조건을 잠시 정지시킨다.

  • 실행 순서 조절

    tbImport 유틸리티를 실행하는 동안에 실행 순서를 조절한다. 예를 들어 참조 무결성 제약조건이 설정되어 있는 두 테이블에 대해 부모 테이블을 먼저 저장하고 나중에 자식 테이블을 저장한다.

테이블의 크기가 매우 큰 경우에는 순서 조절을 이용하는 후자의 해결 방법이 성능 면에서 유리하다. 제약조건을 잠시 정지시키는 방법의 경우 제약조건을 다시 허용하면 테이블 내의 모든 로우에 대해 제약조건의 성립 여부를 검사하기 때문에 성능 면에서 좋지 않은 영향을 줄 수 있다.

4.4. 명령 프롬프트에서의 파라미터 지정

사용자가 파라미터 값을 지정하지 않고 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

4.4.1. 파라미터 목록

다음은 명령 프롬프트에서 지정할 수 있는 tbImport 유틸리티의 파라미터이다.

항목설명
BIND_BUF_SIZEImport를 DPL 모드로 실행할 때 stream에서 사용하는 bind buffer의 크기를 조절한다. (기본값: 1MB(1048576))
CFGFILE환경설정 파일의 이름이다.
COMMIT

insert 작업 후에 commit을 수행한다. (기본값: N)

insert 작업의 단위는 아래와 같다.

  • CPL로 import할 때 기본적으로 bind insert buffer size인 1MB를 넘었을 때 commit을 수행한다. 만약 LONG, LONG RAW 컬럼이 있다면 row 단위로 commit을 수행한다.

  • DPL로 import할 때 BIND_BUF_SIZE로 지정된 크기를 넘었을 때 commit을 수행한다.

CONSTRAINT

Import를 수행할 때 제약조건의 Import 여부를 지정한다.

  • Y: 제약조건을 Import한다. (기본값)

  • N: 제약조건을 Import하지 않는다.

DPL

DPL 방법으로 Import할지 여부를 지정한다.

  • Y: DPL 방법을 사용한다.

  • N: DPL 방법을 사용하지 않는다. (기본값)

DBLINK

Import를 수행할 때 DBLink의 Import 여부를 지정한다.

  • Y: DBLink를 Import한다. (기본값)

  • N: DBLink를 Import하지 않는다.

EXP_SERVER_VER

Export한 서버의 버전을 설정한다.

  • 8: Tibero 6 (기본값)

  • 7: Tibero 5 SP1

  • 6: Tibero 5

FILE

Import를 수행할 덤프 파일의 이름을 입력한다. (기본값: default.dat)

바이너리 파일의 형태로 운영체제에서 생성되며, 이름을 지정하지 않으면 기본값에서 Import한다.

FROMUSER

From to User 모드에서 사용하며 Export할 때 사용된 객체의 원래 소유자를 지정한다.

다음의 형태로 사용할 수 있으며 이 때 Mapping 개수는 동일해야 한다.

FROMUSER=userlist

자세한 설정 방법은 아래 예제를 참고한다.

  • multi user를 설정한다.

    FROMUSER=user1,user2 TOUSER=user3,user4
  • multi user의 object를 하나의 user로 설정할 수 있다.

    FROMUSER=user1,user2 TOUSER=user3,user3
  • FROMUSER에 동일한 user를 지정할 수 없다.

    FROMUSER=user1,user1 TOUSER=user3,user4

FULL

전체 데이터베이스 모드로 Import를 수행할지 지정한다.

  • Y: 전체 데이터베이스 모드로 Import를 수행한다.

  • N: 사용자 또는 테이블 모드로 Import를 수행한다. (둘 중 하나의 모드는 있어야 함) (기본값)

GRANT

Import를 수행할 때 권한의 Import 여부를 지정한다.

  • Y: 권한을 Import한다. (기본값)

  • N: 권한을 Import하지 않는다.

GEOM_ASBYTES

geometry 컬럼에 대해 WKB 또는 bytes로 밀어넣을지 여부를 설정한다.

(기본값 : Y)

  • Tibero 6 이후에서 Geometry 컬럼을 WKB 포맷으로 저장하기 때문에 이 옵션을 사용할 필요가 없다. 이 옵션은 Tibero 5 SP1 이하 버전의 tibero를 export된 데이터를 import할 때 설정하여 사용해야 한다.

  • Tibero 5 SP1 이하 버전의 Tibero에서 export할 때, geom_asbytes를 'N'로 설정하여 Geometry 컬럼을 WKB 포맷으로 받았다면 geom_asbytes 옵션을 'N'로 설정해야한다. 내부적으로 st_geomfromwkb를 한다. 만약 DPL로 넣으려면 서버 _DP_IMPORT_GEOM_FROM_OLD_FORMAT(기본값 : N) iparam을 'Y'로 설정해야 한다.

IGNORE

Import를 수행할 때 이미 존재하는 스키마 객체로 인한 생성 에러를 무시한다.

  • Y: 이미 존재하는 스키마 객체로 인한 생성 에러를 무시한다.

  • N: 이미 존재하는 스키마 객체로 인한 생성 에러를 무시하지 않는다. (기본값)

INDEX

Import를 수행할 때 인덱스 정보의 Import 여부를 지정한다.

  • Y: 인덱스를 Import한다. (기본값)

  • N: 인덱스를 Import하지 않는다.

IO_BUF_SIZE

Import를 실행할 때 파일의 입/출력에 사용되는 버퍼의 크기를 조절한다.

(기본값: 16MB(16777216))

IPImport 대상 Tibero 서버의 IP 주소를 입력한다. (기본값: localhost)
LOGImport된 오브젝트들의 스크립트가 기록될 파일의 이름을 입력한다.
LOGDIRImport의 수행 로그가 기록될 파일을 저장할 디렉터리 이름을 입력한다.
NATIONAL_CHARSETExport한 언어 셋을 설정한다. (기본값: Export한 문자 셋)
NO_PACK_DIRImport를 수행할 압축을 해제한 덤프 파일이 저장되는 디렉터리이다. 이 옵션이 지정되면, FILE 파라미터에 설정된 값은 무시된다.
PASSWORDImport를 수행하는 사용자의 패스워드를 입력한다.
ROLE

Import를 수행할 때 ROLE의 Import 여부를 지정한다.

  • Y: ROLE을 Import한다. (기본값)

  • N: ROLE을 Import하지 않는다.

PORTImport 대상 Tibero 서버의 포트 번호를 입력한다. (기본값: 8629)
PSM

Import를 수행할 때 PSM 오브젝트의 Import 여부를 지정한다.

  • Y: PSM 오브젝트를 Import한다. (기본값)

  • N: PSM 오브젝트를 Import하지 않는다.

P_DPL

병렬 DPL 방법으로 Import할지 여부를 지정한다.

  • Y: 병렬 DPL 방법을 사용한다.

  • N: 병렬 DPL 방법을 사용하지 않는다. (기본값)

ROWS

Import를 수행할 때 테이블의 데이터를 Import할지 여부를 지정한다.

  • Y: 테이블의 데이터를 Import한다. (기본값)

  • N: 테이블의 데이터를 Import하지 않는다.

SAVE_CREDENTIAL

암호화한 USERNAME과 PASSWORD를 사용할 때 설정한다.

  • 사용 방법

    • SAVE_CREDENTIAL 옵션을 사용하여 EXPIMP_WALLET 암호화 파일을 생성한다.

    • SAVE_CREDENTIAL=[EXPIMP_WALLET_FILE_NAME]

      예)

      SAVE_CREDENTIAL=/tmp/.expimp 
      USERNAME=username PASSWORD=password
  • EXPIMP_WALLET 파일 환경변수 설정

    export SAVE_CREDENTIAL=/tmp/.expimp
  • 인식 우선 순위

    • command line에 입력한 username, password 파라미터를 가장 먼저 확인한다.

    • cfgfile 내의 USERNAME과 PASSWORD 파일을 확인한다.

    • EXPIMP_WALLET 파일의 USERNAME과 PASSWORD를 읽어 온다.

    • 위의 설정들에 지정되어 있지 않으면 에러를 발생한다.

SCRIPT

Import를 수행할 때 스키마 객체를 생성하는 DDL 스크립트를 표시할지 여부를 지정한다.

  • Y: 스키마 객체를 생성하는 DDL 스크립트를 표시한다.

  • N: 스키마 객체를 생성하는 DDL 스크립트를 표시하지 않는다. (기본값)

SEQUENCE

Import를 수행할 때 Sequence의 Import 여부를 지정한다.

  • Y: Sequence를 Import한다. (기본값)

  • N: Sequence를 Import하지 않는다.

SIDImport 대상 Tibero 서버의 SID를 입력한다.
SYNONYM

Import를 수행할 때 Synonym의 Import 여부를 지정한다.

  • Y: Synonym을 Import한다. (기본값)

  • N: Synonym을 Import하지 않는다.

TABLE

테이블 모드로 Import를 수행할 때 Import할 대상 테이블의 이름을 지정한다.

다음의 형태로 사용한다.

TABLE=tablelist
TEMP_DIRImport를 수행할 때 사용되는 임시 덤프 파일들이 생성될 디렉터리를 지정한다.
THREAD_CNT

테이블 데이터를 Import하기 위해 사용하는 스레드의 개수를 입력한다.

(기본값: 4)

TOUSER

From to User 모드에서 사용하며 Import를 수행할 때 Import할 소유자를 지정한다.

다음의 형태로 사용한다.

TOUSER=userlist
TRIGGER

Import를 수행할 때 Trigger의 Import 여부를 지정한다.

  • Y: Trigger를 Import한다. (기본값)

  • N: Trigger를 Import하지 않는다.

USER

사용자 모드로 Import를 수행할 때 Import될 객체의 소유자를 지정한다.

다음의 형태로 사용한다.

USER=userlist
USERNAMEImport를 수행하는 사용자의 계정을 입력한다.

4.5. 수행 예제

tbImport 유틸리티로 Import를 수행하는 순서는 다음과 같다.

  1. 테이블 정의

  2. 테이블 데이터

  3. 테이블 인덱스

  4. 테이블 제약조건, 뷰, 프러시저 등

다음은 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