제3장 tbExport

내용 목차

3.1. 개요
3.2. 특징
3.3. 빠른 시작
3.3.1. 실행 전 준비사항
3.3.2. Export 모드
3.3.3. 실행
3.4. 명령 프롬프트에서의 파라미터 지정
3.4.1. 파라미터 목록
3.5. 수행 예제

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

3.1. 개요

tbExportTibero에서 제공하는 Export 유틸리티이다. 이 유틸리티를 통해 Tibero 데이터베이스에 저장된 스키마 객체의 전체 또는 일부를 추출해 고유 형식의 파일로 저장하므로 데이터베이스의 백업과 다른 머신 간의 데이터베이스를 전송할 때 유용하다.

tbExport 유틸리티에서 하나의 스키마 객체를 추출하면 그와 연관된 스키마 객체가 자동으로 함께 추출된다. 예를 들어 하나의 테이블을 추출하면 그 테이블에 대해 생성된 인덱스와 제약조건 등이 함께 추출된다. 필요에 따라서 연관된 일부 스키마 객체가 함께 추출되지 않도록 지정할 수 있다.

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

tbExport 유틸리티를 실행한 결과로 생성된 파일은 운영체제 파일이다. 따라서 Tibero 데이터베이스 파일과는 달리 일반 파일과 같은 작업을 실행할 수 있다. 예를 들어 파일을 FTP를 이용하여 전송하거나 CD-ROM 등에 저장하여 원격지의 Tibero 데이터베이스로 옮길 수도 있다.

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

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

항목설명
완료 메시지Export가 성공적으로 완료된 후에 출력된다.
경고 메시지

Export가 완료되었으나 경고가 발생한 경우에 출력된다.

존재하지 않는 테이블에 대해 Export를 시도할 때와 같은 경우에 발생하며 이런 경우 tbExport 유틸리티는 경고 메시지를 출력한 후 해당 테이블을 건너뛰고 다음 객체에 대해 Export를 계속한다.

에러 메시지

Export가 실행되는 과정에서 에러가 발생하여 Export를 계속할 수 없는 경우에 출력된다.

시스템 메모리가 부족한 상황이나 Export에 필요한 뷰가 생성되지 않는 경우처럼 Export를 계속 실행할 수 없는 상황에 출력되며, 에러 메시지를 출력한 후 Export 세션을 종료한다.

3.2. 특징

tbExport 유틸리티의 특징은 다음과 같다.

  • 논리적인 백업

    Tibero의 내부 스키마 및 데이터를 SQL 문장으로 추출한다.

  • 서로 다른 시점의 데이터

    여러 개의 테이블을 Export할 때 추출한 각 테이블의 데이터는 동일 시점의 데이터가 아니라 Export 작업이 실행되는 시점의 순차적인 데이터이다.

  • 테이블 정의를 저장

    데이터의 존재 여부에 상관 없이 테이블 정의(테이블의 DDL 스크립트)를 저장한다.

  • 테이블의 재구성

    테이블 생성 후 수많은 DML 작업으로 인해 발생한 마이그레이션이 된 로우(migrated row)나 단편화(fragmentation)를 제거한다.

3.3. 빠른 시작

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

3.3.1. 실행 전 준비사항

tbExport 유틸리티를 실행하기 전에 다음과 같은 사항을 준비해야 한다.

  • JRE 1.4.2 이상 설치

  • Tibero 데이터베이스 서버와 같은 플랫폼에 설치되어 있거나 네트워크로 연결된다.

  • 실행에 필요한 클래스 라이브러리(기본 위치: $TB_HOME/client/lib/jar 디렉터리)

    • tbExport 클래스: expimp.jar

    • 유틸리티 공통 라이브러리: toolcom.jar

    • 유틸리티 공통 Logger 라이브러리: msllogger-14.jar

    • JDBC 드라이버: internal-jdbc-14.jar

실행에 필요한 클래스 라이브러리는 Tibero를 설치하는 과정에 함께 설치되므로 추가적인 작업을 할 필요는 없다.

3.3.2. Export 모드

Export 모드에는 전체 데이터베이스 모드, 사용자 모드, 테이블 모드가 있다. 각 모드는 파라미터를 사용하여 지정할 수 있다.

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

[그림 3.1] Export 모드

Export 모드

전체 데이터베이스 모드

전체 데이터베이스 모드Tibero 데이터베이스 전체를 Export하기 위한 모드이다. SYS 사용자를 제외한 모든 사용자의 객체를 Export하기 위해 사용한다.

전체 데이터베이스 모드를 사용하려면 다음과 같이 FULL 파라미터를 Y로 설정한다.

FULL=Y

사용자 모드

사용자 모드는 SYS 사용자를 제외한 지정된 사용자가 소유한 모든 스키마 객체를 Export하는 모드이다. 지정한 사용자가 소유한 객체를 Export하기 위해 사용하며 DBA는 하나 이상의 사용자에게 이 모드를 사용할 수 있다.

사용자 모드를 사용하려면 다음과 같이 USER 파라미터를 USER=userlist 형태로 설정한다.

USER=SCOTT, USER1, …

테이블 모드

테이블 모드는 하나 이상의 테이블을 지정하여 그 테이블과 연관된 인덱스 등의 스키마 객체를 함께 Export하는 모드이다.

테이블 모드를 사용하려면 다음과 같이 TABLE 파라미터를 TABLE=tablelist 형태로 설정한다. 주의할 점은 SCOTT.EMP와 같이 테이블을 소유한 사용자를 반드시 명시해야 한다는 것이다.

TABLE=SCOTT.EMP, USER1.TABLE1, …

3.3.3. 실행

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

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

[예 3.1] tbExport 유틸리티의 실행

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

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

사용자가 파라미터 값을 지정하지 않고 tbExport를 실행하면, 다음과 같이 명령 프롬프트에서 지정할 수 있는 파라미터의 목록과 사용법이 나타난다.

tbExport 6.0 102665 TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Usage: tbexport [PARAMETER1=VALUE] [PARAMETER2=VALUE] ... 
Parameters:  
  CFGFILE      Config file name  
  CONSTRAINT   Export Constraint: Y/N, default: Y
  CONSISTENT   Consistent Mode: Y/N, default: N
  EXCLUDE      Limit the export to specific objects
  FILE         Export dump file name, default: default.dat
  FULL         Full Mode: Y/N, default: N
  GEOM_ASBYTES     Export the geometry columns as bytes, default: N
  GRANT        Export Grant: Y/N, default: Y
  INDEX        Export Index: Y/N, default: Y
  INLINE_CONSTRAINT Use the Inline Constraint: Y/N, default: N
               (this option is only supported for the not null)
  IP           IP address, default: localhost
  LOG          Export script log file name
  LOGDIR       Export log directory
  NO_PACK_DIR  Export unpacked dump files to specified directory. 
               If this option is specified, FILE parameter will be ignored.
  OVERWRITE    Overwrite datafile if same file name exists: Y/N, default: N
  PASSWORD     User password
  PORT         PORT number, default: 8629
  QUERY        Where predicate: (Optional) to filter data to be exported
               (must be used with TABLE parameter.)
  REMAP_TABLESPACE Remaps the objects from the source tablespace to the target tablespace.
  ROWS         Export 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
  SID          Database name
  TABLE        Table Mode: table name list
               Append :<Partition Name> to select a single partition (Optional)
  TARGETDB     Target Server, default: TIBERO
  TEMP_DIR     Directory for the temporary raw dump files.
  THREAD_CNT   Thread Count, default: 4
  USER         User Mode: user name list
  USERNAME     Database user name

파라미터 값은 순서를 지정해서 입력하지 않아도 된다. 파라미터 값 중에 CFGFILE은 명령 프롬프트에서만 지정할 수 있지만, 나머지 파라미터 값은 환경설정 파일에서도 지정할 수 있다.

명령 프롬프트에 사용되는 파라미터를 환경설정 파일에 저장하여 관리하는 방법에는 다음과 같은 두 가지 형식이 있다. 두 번째 형식은 하나 이상의 파라미터 값을 지정하는 경우이다.

PARAMETER=value
PARAMETER=value1, ...

다음은 파라미터를 지정하는 예이다.

FULL=Y
FILE=EXPORT.DAT
GRANT=Y
INDEX=Y
CONSTRAINT=Y

3.4.1. 파라미터 목록

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

항목설명
CFGFILE환경설정 파일의 이름이다.
CONSISTENT

Export를 수행하는 시점을 기준으로 데이터를 Export하는 기능이다.

  • Y: Consistent 모드로 Export한다.

  • N: Consistent 모드로 Export하지 않는다. (기본값)

flashback query에서 지원하지 않는 대상에 대해서 지원하지 않는다.

CONSTRAINT

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

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

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

EXCLUDE

Export할 때 제외할 특정 user, table을 설정할 수 있다.

제외하기 위해서 아래와 같은 방법으로 설정할 수 있다.

  • schema 및 schema.table 제외

    exclude=schema:\"=\'TIBERO\'/table:LIKE \'T%\'\" 
    exclude=schema:\"IN\'USER1\'\"
  • 여러 개 schema 제외

    exclude=schema:\"=\'TIBERO\'\" exclude=schema:\"=\'USER1\'\"
    
  • 여러 개 table 제외

    exclude=table:\"LIKE\'E%\'\" exclude=table:\"LIKE\'E%\'\"
FILE

Export를 수행할 때 생성되는 파일의 이름이다. (기본값: default.dat)

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

FULL

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

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

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

GEOM_ASBYTES

geometry 컬럼에 대해 WKB 또는 bytes로 얻어올지 여부를 결정한다.

(기본값: N)

  • Tibero 6 이상 서버에서 Geometry 컬럼 데이터를 WKB 포맷으로 저장하기 때문에 export나 import할 때 이 옵션을 사용하면 성능면에서 이점을 얻을 수 있다. export할 때 geom_asbytes 옵션을 'Y'로 설정하면 st_asbinary 같은 함수를 사용하지 않고 LOB 그대로 처리한다.

  • Tibero 5 SP1 이하 버전의 Tibero에서 export할 때, WKB 포맷으로 export하기 위해서는 geom_asbytes를 'Y'로 설정하지 않도록 주의해야 한다.

    geom_asbytes를 'N'로 설정하여 사용해야 하며, 이 때 내부적으로 st_asbinary()를 사용하여 WKB 포맷으로 데이터를 받아온다.

    하위 버전의 Tibero 서버에서 Export 작업할 때 temp lob을 생성하여 처리해야 하는 성능상의 문제와 Import할 때에 DPL로 사용하는 경우 size가 큰 geometry 데이터에 대해서 처리할 수 없는 문제가 있을 수 있다.

GRANT

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

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

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

INDEX

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

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

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

INLINE_CONSTRAINT

Export를 수행할 때 스크립트를 Inline Constraint로 출력할지 여부를 설정한다.

  • Y: Inline Constraint로 출력한다(Not Null에만 지원한다).

  • N: Out-of-line Constraint로 출력한다. (기본값)

IPExport 대상 Tibero 서버의 IP 주소를 입력한다. (기본값: localhost)
LOGExport된 오브젝트들의 스크립트가 기록될 로그 파일의 이름을 입력한다.
LOGDIRExport의 수행 로그가 기록될 파일을 저장할 디렉터리 이름을 입력한다.
NO_PACK_DIR압축을 해제한 덤프 파일이 저장되는 디렉터리이다. 이 옵션이 지정되면, FILE 파라미터에 설정된 값은 무시된다.
OVERWRITE

Export를 수행할 때 생성되는 파일의 이름과 동일한 이름의 파일이 이미 존재하는 경우 파일을 덮어쓸지 지정한다.

  • Y: 파일을 덮어쓴다.

  • N: 파일을 덮어쓰지 않는다. (기본값)

PASSWORDExport를 수행하는 사용자의 패스워드를 입력한다.
PACK_TYPE (hidden)

패키징에 사용할 알고리즘을 지정한다.

  • TAR: TAR 형식으로 패키징한다. (기본값)

  • ZIP: ZIP 형식으로 패키징한다.

PARALLEL_DEGREE (hidden)테이블의 데이터를 Export하기 위해 수행하는 질의의 parallel hint를 입력한다. (기본값: 0 (NOT PARALLEL))
PORTExport 대상 Tibero 서버의 포트 번호를 입력한다. (기본값: 8629)
QUERY

Export될 데이터에 필터 조건을 지정한다.

  • 모드에 상관없이 동작하지만, 원하지 않는 테이블에도 적용될 수 있으므로 주의한다.

  • Where 조건 앞과 뒤를 "\로 감싸주어야 한다. 단, 조건절의 내용을 String 처리를 해야한다면 "\"로 감싸주어야 한다.

  • 지정된 조건에 의해 SQL 문장에서 문법(Syntax) 에러가 발생할 경우 조건을 적용하지 않고 다시 시도한다.

REMAP_TABLESPACE

Tablespace 이름을 변경할 수 있는 기능을 제공한다.

아래와 같은 방법으로 설정할 수 있다.

  • 테이블 스페이스 USR1에서 USR3으로 변경

    REMAP_TABLESPACE=usr1:usr3
  • 여러 개 테이블 스페이스 변경 설정

    REMAP_TABLESPACE=usr1:usr3,usr2:usr4
  • 대소문자 구분하여 설정

    REMAP_TABLESPACE=\"Usr1\":usr3
ROWS

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

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

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

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

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

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

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

SERVER_VER (hidden)Export의 대상이 되는 Tibero의 버전을 지정하여, 버전에 맞는 스크립트를 생성하도록 한다.

Export 버전 상수이다.

  • 8: Tibero 6 (기본값)

  • 7: Tibero 5 SP1

  • 6: Tibero 5

SIDExport 대상 Tibero 서버의 SID를 입력한다.
TABLE

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

TABLE=tablelist의 형태로 사용한다. 자세한 내용은 "테이블 모드"를 참고한다.

TEMP_DIRExport를 수행할 때 사용되는 임시 dump file들이 생성될 디렉터리를 지정한다.
THREAD_CNT

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

(기본값: 4)

USER

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

USER=userlist의 형태로 사용한다. 자세한 내용은 "사용자 모드"를 참고한다.

USERNAMEExport를 수행하는 사용자의 계정을 입력한다.

3.5. 수행 예제

다음은 tbExport 유틸리티를 이용하여 Export를 수행하는 예이다.

[예 3.2] tbExport 유틸리티를 이용한 Export의 실행

tbExport 6.0 97668 TmaxData Corporation Copyright (c) 2008-. All rights reserved.
the entire database: Fri Feb 06 10:45:16 KST 2015
Export character set: MS949
    exporting tablespaces
    exporting roles
    exporting schema: "TIBERO"
        exporting tables
          [0] exporting table BONUS     no rows exported.
          [1] exporting table DEPT      4 rows exported.
          [2] exporting table EMP       10 rows exported.
          [3] exporting table SALGRADE  5 rows exported.
        exporting object privileges
        exporting indexes
        exporting sequences
        exporting views
        exporting synonyms
Packing the file...
Export completed successfully: Fri Feb 06 10:46:17 KST 2015