제2장 T-Up

내용 목차

2.1. 개요
2.2. 메인 화면
2.3. 호환성 평가 기능
2.3.1. Analysis 화면
2.3.2. 호환성 평가 대상
2.4. 마이그레이션 기능
2.4.1. Migration Option 화면
2.4.2. Migration Progress 화면
2.4.3. Migration Report 화면
2.4.4. 마이그레이션 대상
2.5. 접속 사용자의 권한
2.6. 호환성 평가 수행 예제
2.7. 마이그레이션 수행 예제

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

2.1. 개요

T-UpTibero DB에서 제공하는 호환성 평가 및 마이그레이션 유틸리티이다.

이 유틸리티는 실제 마이그레이션을 수행 전 호환성 평가 기능과 데이터베이스 스키마 오브젝트 중 전체 또는 일부를 Tibero로 옮기는 마이그레이션 기능으로 구성되어 있다. 호환성 평가 기능은 소스 데이터베이스의 스키마 오브젝트와 SQL 구문 그리고 응용 프로그램에서 사용된 데이터베이스 관련 API에 대해 Tibero에서의 지원가능 여부 및 미지원 원인 분석을 수행한다 . 마이그레이션은 소스 데이터베이스에 저장된 테이블, 인덱스, 뷰 등의 스키마 오브젝트와 PSM 프로그램 등을 Tibero 데이터베이스로 옮겨 이전의 데이터베이스와 같은 기능을 수행하도록 한다.

T-Up 유틸리티의 기능은 다음과 같다.

  • 호환성 평가 기능

    • 실제 마이그레이션을 수행하기 전에 소스 데이터베이스의 스키마 오브젝트, SQL 구문, 응용 프로그램의 API에 대한 호환성을 평가한다.

    • 호환성 평가 결과를 HTML 형식의 보고서로 출력하여 제공한다.

  • 마이그레이션 기능

    • 사용자가 원하는 데이터를 선택하여 Tibero로 마이그레이션한다.

    • 테이블, 인덱스, 뷰, 동의어 등의 스키마 객체와 테이블에 정의된 각종 제약조건을 마이그레이션한다.

    • 사용자 특권(privilege) 및 역할(role)을 마이그레이션한다.

    • 마이그레이션 타겟 데이터베이스에 대한 정보를 제공한다.

    • [Option] 버튼을 사용하여 다양한 방법으로 마이그레이션한다.

    • Progress 화면을 통해서 마이그레이션의 진행사항을 파악할 수 있다.

참고

T-Up은 Java 언어로 구현되어 있으며, Java 6 이상에서 사용할 수 있다. 또한 실행하기 전에 접속하려는 DB의 JDBC 드라이버 파일의 경로를 실행 스크립트 내의 classpath 설정에 추가해야 한다.

2.2. 메인 화면

다음은 T-Up 유틸리티를 실행하면 호환성 평가와 마이그레이션에서 공통으로 이용하는 메인 화면이다.

[그림 2.1] 메인 화면

메인 화면


  • Source

    • Source 접속 정보

      다음은 Source 접속 정보의 각 항목에 대한 설명이다.

      항목설명
      Address소스 데이터베이스의 IP 주소이름이다.
      Port소스 데이터베이스의 포트 번호이다.
      Database소스 데이터베이스의 SID이다.
      User ID소스 데이터베이스의 사용자 ID이다.
      Password소스 데이터베이스에 접근하려는 사용자의 패스워드이다.
      DB Type소스 데이터베이스의 종류를 선택한다.
      Properties소스 데이터베이스의 추가적인 접속 정보를 지정한다.
    • 소스 데이터베이스 스키마 트리

      스키마 트리는 사용자가 원하는 데이터를 선택하는 기능과 데이터베이스의 문자 셋 설정을 보여준다. 스키마 트리는 3개의 계층으로 구성되어 있다. 루트 노드는 소스 데이터베이스를 지칭하고 그 하위 계층은 스키마들을 지칭하고 각 스키마 하위 계층은 해당 스키마가 소유하고 있는 테이블들을 지칭한다. 데이터를 선택하는 방식은 아래와 같이 3가지로 나눈다.

      • 전체 모드

        데이터베이스명을 선택하면 모든 스키마가 선택된다. 종속된 스키마 요소를 하나라도 해제하면 전체 모드에서 스키마 모드로 변환한다.

        [그림 2.2] 전체 모드 선택방식

        전체 모드 선택방식

      • 스키마 모드

        특정한 스키마명를 선택하면 스키마에 종속된 객체들이 모두선택된다. 종속된 테이블 요소를 하나라도 해제하면 스키마 모드에서 테이블 모드로 변환된다.

        [그림 2.3] 스키마 모드 선택방식

        스키마 모드 선택방식

      • 테이블 모드

        테이블 요소를 선택한 것으로 T-Up의 최소 이관 단위이다.

        [그림 2.4] 테이블 모드 선택방식

        테이블 모드 선택방식

      Source의 문자 셋 설정은 다음 두 가지 정보를 보여준다.

      • Charset

      • NCharset

  • Tibero

    • Tibero 접속 정보

      다음은 Tibero 접속 정보의 각 항목에 대한 설명이다.

      항목설명
      AddressTibero 데이터베이스의 IP 주소다.
      PortTibero 데이터베이스의 포트 번호이다.
      DatabaseTibero 데이터베이스의 이름이다.
      User IDTibero 데이터베이스의 사용자 ID이다.
      PasswordTibero 데이터베이스의 패스워드이다.

    • Tibero 데이터베이스 스키마 트리

      소스 데이터베이스와 동일하다.

  • 버튼

    다음은 T-Up 메인 화면 버튼의 설명이다.

    버튼설명
    [Connect]대상 데이터베이스에 접속한다.
    [Analyze]호환성 평가 옵션 화면이 나타난다.
    [Option]마이그레이션 옵션 화면이 나타난다.
    [Migrate]마이그레이션을 시작한다.
    [Close]T-Up을 종료한다.

2.3. 호환성 평가 기능

T-Up의 호환성 평가와 관련된 화면 및 기능에 대해 설명한다.

2.3.1. Analysis 화면

다음은 호환성 평가를 위한 Analysis 화면이다. 이 화면을 통해 분석 대상과 분석 파일 등을 설정할 수 있고 분석 진행 상황을 파악할 수 있다.

[그림 2.5] Analysis 화면

Analysis 화면


  • Target to Analyze

    여기서는 호환성을 분석할 대상을 선택한다.

    • Data Dictionary

      소스 데이터베이스의 Table, Index, View 등과 같은 스키마 오브젝트의 호환성 평가를 수행한다. 이 옵션을 수행하기 위해서는 반드시 소스 데이터베이스에 접속해야 한다. 전체 모드와 스키마 모드처럼 적어도 하나 이상의 스키마가 선택되어야 평가를 진행할 수 있다.

      'Target to Analyze'에서 'Data Dictionary'를 선택하면 다음 그림과 같이 File Information 입력 항목이 활성화된다. 자세한 설명은 "File Information"을 참고한다.

    • SQL File

      DDL, DML, Query, PSM 등 소스 데이터베이스에서 사용된 SQL들에 대한 호환성 평가를 수행한다. 이 옵션을 수행하기 위해서는 파일의 형태로 입력을 받으므로 소스 데이터베이스에 대한 접속이 필요하지 않다.

      파일 입력 방식은 'Directory'와 'File' 두 가지 모두 가능하다. Directory는 선택된 가장 상위 디렉터리부터 하위의 모든 디렉터리까지 탐색하여 모든 파일을 분석의 입력으로 사용한다. File은 특정 하나의 파일만을 분석의 입력으로 사용한다.

      'Target to Analyze'에서 'SQL File'을 선택하면 다음 그림과 같이 File Information 입력 항목이 활성화된다. 자세한 설명은 "File Information"을 참고한다.

    • API Source

      소스 데이터베이스를 사용하는 응용 프로그램의 데이터베이스 관련 API들의 호환성 평가를 수행한다. 이 옵션도 응용 프로그램의 코드를 파일 형태로 입력 받으므로 소스 데이터베이스에 대한 접속이 필요하지 않다. 파일 입력 방식은 SQL File과 동일하다.

      'Target to Analyze'에서 'API Source'를 선택하면 다음 그림과 같이 File Information 입력 항목이 활성화된다. 자세한 설명은 "File Information"을 참고한다.

  • File Information

    • Syntax

      입력 형식을 선택한다. Data Dictionary의 경우 Dictionary Table, SQL History 중에 하나를 선택할 수 있고, SQL File의 경우에는 소스 데이터베이스의 종류를 선택할 수 있다. API Source의 경우에는 OCI, ODP.NET 중에 하나를 선택할 수 있다.

    • Search

      평가를 위한 디렉터리 또는 파일을 선택할 수 있도록 아래와 같이 화면을 띄워준다.

      [그림 2.6] 디렉터리 및 파일 선택화면

      디렉터리 및 파일 선택화면

    • Location

      선택한 디렉터리 혹은 파일의 경로가 표시된다.

  • Report Options

    여기서는 결과 보고서의 출력 옵션을 선택한다.

    • Remove Duplication Error

      이 옵션이 선택된 경우 중복된 에러 메세지는 결과 보고서에 표시하지 않는다.

  • Analysis

    [Run Analysis] 버튼을 클릭하면 설정한 옵션으로 호환성 평가가 수행되고 Progress Status에서 진행률을 보여준다. Log Messages에서는 평가 진행과 관련된 통계, 에러, 평가 완료 등의 간단한 메시지를 출력한다.

  • 버튼

    다음은 Analysis 화면 버튼의 설명이다.

    버튼설명
    [Syntax]분석 대상의 파일 형식을 지정한다.
    [Directory]분석할 파일들이 들어 있는 디렉터리를 선택한다.
    [File]분석할 하나의 파일을 선택한다.
    [Run Analysis]호환성 평가 분석을 시작한다.
    [Close]Analysis 화면을 종료한다.

2.3.2. 호환성 평가 대상

호환성 평가는 크게 Data Dictionary, SQL File, API Source로 나눌 수 있다. 각 평가 대상은 Source DBMS의 종류에 따라 지원하는 범위에 대해 설명한다.

2.3.2.1. Oracle

  • Data Dictionary

    다음은 Oracle Data Dictionary 호환성 평가 대상 스키마 오브젝트이다.

    스키마 오브젝트스키마 오브젝트스키마 오브젝트스키마 오브젝트
    TABLESPACETABLEINDEXINDEX TYPE
    VIEWSEQUENCEMATERIALIZED VIEWMATERIALIZED VIEW LOG
    SYNONYMROLEDATABASE LINKTRIGGER
    FUNCTIONPROCEDUREPACKAGETYPE
    JAVA SOURCEDIRECTORYLIBRARYCONTEXT
    PROFILEOPERATORRESOURCEOUTLINE
    ASSOCIATIONCLUSTERDIMENSION
  • SQL File

    다음은 Oracle SQL File 호환성 평가 대상 문장이다.

    문장문장문장문장
    CREATEALTERDROPTRUNCATE
    GRANTREVOKEAUDITANALYZE
    ASSOCIATECOMMENTPURGERENAME
    LOCKINSERTDELETEUPDATE
    MERGECALLANONYMOUS BLOCK
  • API Source

    다음은 Oracle API Source 호환성 평가 대상 구문이다.

    구문구문
    OCIODP.NET

2.4. 마이그레이션 기능

T-Up의 마이그레이션과 관련된 화면 및 기능에 대해 설명한다.

2.4.1. Migration Option 화면

다음은 Migration Option 화면에 대한 설명이다.

[그림 2.7] Option 화면

Option 화면


  • DDL

    DDL은 마이그레이션할 때 첫 단계로 Tibero 데이터베이스의 객체들을 생성할 때 사용하는 SQL 문이다. 여기서는 어떤 타입의 스키마 오브젝트의 DDL을 추출하고, 생성한 DDL 문장을 수행할지를 선택하는 등의 DDL과 관련된 옵션을 결정한다.

    • Type Selection

      이관 대상이 될 스키마 오브젝트의 타입을 정한다.

      항목설명
      Migrates All Objects지원하는 모든 타입의 DDL 문장을 추출한다.
      Migrates Objects by Type선택한 오브젝트 종류에 해당하는 DDL 문장만을 추출한다.

      상세선택 버튼([...])을 클릭하면 다음과 같이 오브젝트 종류를 선택할 수 있는 선택 화면이 나타난다.

      [그림 2.8] 오브젝트 종류 선택창

      오브젝트 종류 선택창


    • Execute DDLs

      추출한 DDL 문장을 타깃 데이터베이스에 실행할지를 결정한다. 이관할 테이블 등의 오브젝트가 이미 생성되어 있는 경우 이 옵션을 선택 해제하여 생성 SQL 문을 실행하는 단계를 건너뛸 수 있다.

  • Data Transfer

    데이터 전송은 DDL 다음 단계로 데이터들을 소스 데이터베이스에서 Tibero로 이관한다.

    항목설명
    Transfer Table Data테이블 데이터의 마이그레이션 여부를 선택한다.
    Use Direct Path Load테이블의 데이터를 Direct Path Load 방식으로 마이그레이션한다.
    Use Batch Insert테이블의 데이터를 Batch Insert 방식으로 마이그레이션한다.
    Concurrent Thread여러 테이블의 데이터를 동시에 마이그레이션하기 위해 사용할 스레드의 개수를 정한다.
  • Conversion

    다음은 데이터 변환 옵션에 대한 설명이다.

    항목설명
    Read as Bytes테이블의 char, varchar와 같은 문자열을 저장하기 위한 열에 데이터베이스 설정과 다른 캐릭터 셋을 사용하여 실제 문자열이 저장될 경우 문자열 형태로 데이터를 가져올 경우 문자열이 깨질 수 있다. 이를 방지하기 위하여 문자열이 아닌 binary 형태로 데이터를 가져오고, binary 형태로 Tibero 측으로 옮길 때 사용되는 옵션이다.
    Real Characterset

    테이블 데이터 이외의 부분에 실제 데이터베이스의 캐릭터 셋과 다르게 입력된 부분이 있는 경우 이관 후 해당 내용이 깨질 수 있다. 이를 방지하기 위해 실제 사용한 캐릭터 셋을 지정하여 올바른 문자열 형태로 옮겨지도록 해주는 옵션이다.

    Read as Bytes 설정을 활성화한 경우에만 유효하며, 영향을 받는 항목은 PSM, DDL, 테이블의 COMMENT, 테이블 열의 COMMENT다.

    Double Character Column Size

    소스 데이터베이스와 Tibero의 캐릭터 셋이 서로 다른 경우 변환된 문자열 데이터의 실제 바이트 길이가 달라질 수 있다.

    이 때문에 열의 길이 제한을 초과하여 이관에 실패하는 경우가 발생할 수 있다. 이를 방지하기 위해 문자열 기반의 열을 생성할 때 소스 데이터베이스에서 지정된 것의 2배의 길이로 바꾸어주는 옵션이다.

    Truncate Data Exceeded Max Length컬럼 길이가 Tibero에서 지원하는 최대 길이를 초과하는 경우, 잘라내고 이관할지 에러를 낼지를 선택하는 옵션이다.
    Remove Double Quotation이관할 때 오브젝트명의 대소문자를 무시하기 위해 제공하는 옵션이다. 옵션을 사용하지 않으면, 기본적으로 이관할 때 소스 데이터베이스의 오브젝트명을 그대로 이관하기 위해서 큰따옴표(" ")를 붙여서 이관한다.

    Table, Column 오브젝트에 지원하고 있으며, PSM 소스와 같이 텍스트 형태로 저장되는 부분에는 적용되지 않는다.

    Type Conversion Table소스 데이터베이스와 Tibero의 열 타입이 완전히 일치하지 않기 때문에 호환성을 보완하기 위한 설정을 할 수 있는 옵션이다. 이 옵션의 내용은 소스 데이터베이스의 종류에 따라 다를 수 있다.
  • Verification

    다음은 데이터 검증 옵션에 대한 설명이다.

    항목설명
    Verify Table Data

    테이블 데이터가 잘 이관되었는지 확인할 수 있는 기능이다.

    소스 데이터베이스와 Tibero 양쪽의 이관된 모든 테이블 데이터를 읽어와 1:1로 비교한다. 데이터 양이 많은 경우 많은 시간이 소요될 수 있다.

2.4.2. Migration Progress 화면

사용자는 Migration Progress 화면을 통해서 마이그레이션의 진행사항을 파악할 수 있다.

[그림 2.9] Migration Progress 화면

Migration Progress 화면


  • 조회 항목

    항목설명
    Current Schema

    현재 진행하고 있는 스키마 정보이다.

    Current Schema는 마이그레이션해야 할 스키마 갯수와 마이그레이션된 스키마 갯수를 보여준다. 마이그레이션이 완료되면 COMPLETE를 나타낸다.

    Current Stage

    현재 진행하고 있는 스키마의 스테이지 정보이다.

    스테이지 정보는 스키마의 데이터 타입 정보를 보여주고, 마이그레이션이 완료되면 COMPLETE를 나타낸다.

    Stage Progress

    마이그레이션하는 각 스테이지 진행상태를 보여준다.

    스테이지 진행 정보는 마이그레이션 진행 중인 데이터명을 가르키며, 마이그레이션해야 할 데이터 갯수와 마이그레이션된 데이터 갯수를 보여준다.

    Created Objects현재까지 성공적으로 생성된 Object 갯수를 보여준다.
    Errors현재까지 발생한 Error 갯수를 보여준다.
    Data Migrator #테이블 데이터를 처리하는 스레드를 나타내며, 각각 현재 처리하고 있는 테이블 이름과 진행률을 보여준다. 총 갯수는 Option 화면의 데이터 전송 옵션 중 Concurrent Threads 항목에서 지정한 값에 따른다.
  • 버튼

    버튼설명
    [Show Report]마이그레이션의 결과를 확인할 수 있는 Report 화면이 나타난다. 자세한 내용은 “2.4.3. Migration Report 화면”을 참고한다.
    [OK]마이그레이션이 진행 중일 때는 비활성화되어 있다. 작업 과정이 모두 끝나면 버튼이 활성화되며, 클릭하면 모든 과정이 종료된다.
    [Cancel]마이그레이션의 진행이 중단된다. 작업과정이 모두 끝나면 이 버튼은 비활성화된다.

2.4.3. Migration Report 화면

Migration Report 화면은 마이그레이션의 진행 결과를 보여준다.

[그림 2.10] Migration Report 화면

Migration Report 화면


2.4.4. 마이그레이션 대상

T-Up 유틸리티는 전체 모드, 스키마 모드, 테이블 모드 3가지 마이그레이션 모드를 지원한다. 각 모드는 각각 다른 마이그레이션 범위를 지원한다.

  • 전체 모드

    전체 모드를 선택하면 데이터베이스안의 모든 스키마 객체들이 마이그레이션 대상이 된다.

  • 스키마 모드

    특정 스키마만 선택하는 경우는 스키마 모드로 동작하며, 선택한 스키마와 그에 속한 오브젝트 또는 연관된 오브젝트가 마이그레이션의 대상이 된다.

  • 테이블 모드

    특정 테이블을 선택하는 경우는 테이블 모드로 동작하며, 해당 테이블과 그에 속한 스키마의 연관된 객체들이 마이그레이션된다.

각 모드에 따라 마이그레이션하는 객체를 타입별로 정리하면 다음 표와 같다.

항목전체 모드스키마 모드테이블 모드
TABLESPACE
ROLE
SYSTEM PRIVILEGE
OBJECT PRIVILEGE
SYNONYM
SEQUENCE
TABLE
INDEX
CONSTRAINT
MATERIALIZED VIEW
VIEW
PSM

이때 타깃 데이터베이스에 새로 생성된 사용자의 비밀번호는 모두 초기화되며, 기본값은 'tibero'이다.

Object Privilege의 Grantor 값은 부여할 때 사용자의 권한에 따라 다르게 설정될 수 있기 때문에, 이관 후 로그인 사용자 또는 오브젝트의 소유자로 값이 변경될 수 있다.

다음은 간단한 예제이다.

# DBA권한의 사용자로 로그인
create user owuser identified by tibero;
grant resource, connect to owuser;
create user gtuser1 identified by tibero;
grant resource, connect to gtuser1;
create user gtuser2 identified by tibero;

# owuser 사용자로 로그인
create table grantest1 ( c1 varchar2(20) );
grant select on grantest1 to gtuser1  with grant option;

# gtuser1 사용자로 로그인
grant select on owuser.grantest1 to gtuser2;

위의 순서로 권한을 부여하면 Grantor가 다른 Object Privilege가 생성된다. 이런 Grantor에 해당되는 사용자에 대한 접속 정보를 T-Up에서 모두 알 수 없기 때문에 일괄적으로 마이그레이션을 수행하며, Grantor가 그대로 옮겨지지 않을 수 있다. 사용자 A가 Grantor이고 사용자 B가 Grantee인 권한을 생성하려면 위의 예제를 참고하여, A에게 권한을 우선 부여한 후 A로 로그인하여 B에게 다시 권한을 부여하면 된다.

2.4.4.1. 지원 오브젝트

메인 화면의 Source 접속 정보에서 소스 데이터베이스를 선택할 수 있다. 각 데이터베이스별로 고려해야 할 항목들과 지원하는 스미카 오브젝트들은 아래와 같다.

  • Default value의 표현식이 Tibero에서 지원하지 않는 경우 이관에 실패할 수 있다.

  • Character의 Size, Number의 Precision 등이 Tibero의 지원 범위보다 클 경우 이관에 실패할 수 있다.

Oracle
  • 메인 화면 Source 접속 정보

    Connect As 정보를 설정해야 한다. [Properties] 버튼을 클릭하면 옵션을 선택할 수 있는 화면이 나타난다. 화면에서 NORMAL, SYSDBA, SYSOPER 중에 하나를 선택할 수 있다. (기본값: NORMAL)

    참고

    SYSDBA 또는 SYSOPER를 선택하여 접속하는 경우 Oracle의 설정에 따라 원격에서의 로그인이 금지되어 있을 수 있다. 이에 해당하는 경우에는 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 설정을 주어 해결 할 수 있으며, 해당 설정에 대한 상세한 내용은 Oracle의 문서를 참고한다.

  • Option 화면의 데이터 변환 옵션

    Option 화면이 나타나면 Type Conversion Table을 이용하여 컬럼 타입 변환 옵션을 설정할 수 있다.

    LONG과 LONG RAW 컬럼은 Oracle 8x 이후에서는 사용하지 않는 것으로 권장되는 컬럼 타입으로, 단지 7x 이전 버전과의 호환성을 위해 지원되고 있다. 이 옵션을 이용하여 이관할 때에 위의 컬럼들을 각각 대치되는 CLOB, BLOB으로 변환할 것인지, 또는 해당 타입을 유지할 것인지를 지정할 수 있다.

다음은 Oracle에서 Tibero로 이관할 때 지원 오브젝트를 타입별로 정리한 내용이다.

OracleTibero비고
ConstraintConstraintPrimary Key, Foreign Key, Check, Ref Constraint에 대해 이관 지원한다. Primary Key index/constraint는 모두 constraint로 처리된다. Check constraint의 표현식은 Oracle의 DD에 저장된 문장을 이용해 DDL을 생성한다.
IndexIndexR-TREE, Domain Index는 미지원
Materialized ViewMaterialized View 
Materialized View LogMaterialized View Log 
PrivilegePrivilege 
PSMPSM 
RoleRole 
SchemaSchema 
SequenceSequence 
SynonymSynonym 
TableTable 
TablespaceTablespace 
ViewView 

Oracle에서 Tibero로 이관할 때 데이터 타입은 아래와 같이 변환된다.

Oracle이관 Data Type비고
blobBLOB 
binary_floatBINARY_FLOAT 
binary_doubleBINARY_DOUBLE 
characterCHAR 
clobCLOB 
dateDATE 
interval day to secondINTERVAL DAY(2) TO SECOND(6) 
interval year to monthINTERVAL YEAR(2) TO MONTH 
longLONG 
long rawLONG RAW 
ncharNCHAR 
nclobNCLOB 
numberNUMBER 
nvarchar2NVARCHAR2 
rowidROWID 
timeTIME 
timestampTIMESTAMP 
timestamp with time zoneTIMESTAMP WITH TIME ZONE 
timestamp with local time zoneTIMESTAMP(6) WITH LOCAL TIME ZONE 
varcharVARCHAR 
varchar2VARCHAR2 
xmltypeXMLTYPE 

참고

BFILE, spatial data에 대해서 이관 지원하지 않는다.

Tibero

같은 Tibero 간에 마이그레이션을 수행하는 경우 다른 데이터베이스를 선택한 경우와는 다르게 소스 데이터베이스와 타겟인 Tibero와 연결하는 경우 같은 JDBC 드라이버를 사용하게 된다. 그러므로 T-Up에 포함된 JDBC는 양쪽 데이터베이스 모두에 호환되어야 하며, 가장 최신의 JDBC를 사용하는 것이 바람직하다.

Sybase Adaptive Server Enterprise

다음은 Sybase Adaptive Server Enterprice (ASE) 15 기준으로 Tibero와 다른 부분을 정리한 내용이다.

Sybase ASETibero비고
UserSchemaTibero의 schema는 DB schema와 DB user를 포함한 개념이다.
SegmentSegmentASE에는 테이블스페이스 개념이 없으며, 각 객체가 Segment에 직접 저장된다. 이관할 때에는 Segment 이름에 해당하는 테이블스페이스를 만들어 각 객체를 그에 할당한다.
Tablespace
RoleRole 
TableTableASE의 테이블 중 USER TABLE로 분류되는 것들을 이관한다.
ViewViewASE에서 제공하는 sp_helptext를 이용하여 얻은 생성 DDL을 이용해 이관이 가능하다. 단, 문법이 완벽히 호환되지는 않는다.
IndexIndexFunction based Index를 제외한 Table Index를 이관한다.
RuleConstraintPrimary Key, Unique, Not Null, Check, Referential constraint의 이관이 가능하다.
System ProtectSystem PrivilegeSystem Protect와 Privilege의 각 항목의 이름이 ASE와 Tibero 양쪽 모두 동일할 경우에만 이관이 가능하다.
Object Privilege
Transact SQLPSM미지원
SQLJ Procedure
Scalar Function

Informix

메인 화면 Source 접속 정보의 Properties에 Informix 서버 이름을 입력해야 한다. 메인 화면에서 [Properties] 버튼을 클릭하면 Informix 서버 이름을 입력할 수 있는 화면이 나타난다.

SQL Server

다음은 SQL Server에서 Tibero로 이관할 때의 스키마 오브젝트를 타입별로 정리한 내용이다.

각 오브젝트별 Storage 옵션 등의 세부 옵션은 대부분 지원하지 않는다.

SQL ServerTibero비고
SchemaSchema 
TableTable 
ViewView미지원
IndexIndexUnique index/constraint는 모두 index로 처리된다.
PrivilegePrivilege미지원
RoleRole미지원
SequenceSequence미지원
TablespaceTablespace미지원
IndexIndex 
ConstraintConstraintPrimary Key, Foreign Key, Check에 대해 이관 지원한다. Primary Key index/constraint는 모두 constraint로 처리된다. Foreign Key의 update 규칙은 지원하지 않는다.
SynonymSynonym미지원
Public Synonym미지원 
Materialized ViewMaterialized View미지원
PSMPSM미지원

SQL Server에서 Tibero로 이관할 때 데이터 타입은 아래와 같이 변환된다.

SQL Server이관 Data Type비고
bigintNUMBER(19) 
binaryRAW길이가 2000을 넘는 데이터는 truncate된다.
bitNUMBER(1) 
charCHAR최대 컬럼 길이는 2000(MAX_CHAR_SIZE)이며, 길이를 넘는 데이터는 truncate된다.
cursor미지원 
dateDATE 
datetimeTIMESTAMP(3) 
datetime2TIMESTAMP(7) 
datetimeoffsetTIMESTAMP WITH TIMEZONE 
decimalNUMBER 
double precisionBINARY_DOUBLE 
floatBINARY_FLOAT 또는 BINARY_DOUBLE1 ~ 24 precision은 BINARY_FLOAT, 25 ~ 53은 BINARY_DOUBLE로 이관된다.
hyierachyid미지원 
imageBLOB 
intNUMBER(10) 
moneyNUMBER(19, 4) 
ncharNCHAR길이가 2000을 넘는 데이터는 truncate된다.
numericNUMBER 
nvarcharNVARCHAR길이가 4000을 넘는 데이터는 truncate된다.
ntextNCLOB 
realBINARY_FLOAT 
smalldatetimeDATE 
smallintNUMBER(5) 
smallmoneyNUMBER(10, 4) 
sql_variantLONG RAW 
table미지원 
textCLOB 
timeTIME(7) 
timestampRAW(8) 
tinyintNUMBER(3) 
uniqueidentifierVARCHAR(36) 
varbinaryRAW길이가 2000을 넘는 데이터는 truncate하며, RAW(max)는 BLOB으로 이관한다.
varcharVARCHAR길이가 8000을 넘는 데이터는 truncate된다. Target DB 버전에 따라 지원하는 varchar max size 차이가 있음을 주의가 필요하다.
xmlXMLTYPE 

참고

spartial 타입 컬럼은 지원하지 않는다.

PostgreSQL

다음은 PostgreSQL을 Tibero로 이관할 때 오브젝트를 타입별로 정리한 내용이다. 각 오브젝트별 storage 옵션 등의 세부 옵션은 대부분 지원하지 않는다.

PostgreSQLTibero비고
TablespaceTablespace미지원
RoleRole미지원
SchemaSchema (=User)Tibero는 Schema와 User가 동일한 Object이나 PostgreSQL에서는 Schema(namespace)와 User가 별개로 구분된다. T-Up에서는 PostgreSQL의 Schema(namespace)를 Tibero Schema(=Tibero의 User)로 생성한다. PostgreSQL의 User는 Tibero User(=Tibero Schema)로 이관되지 않는다.
User
PrivilegePrivilege미지원
Public Synonym미지원
SequenceSequence미지원
TableTable 
IndexIndexUnique index/constraint는 모두 index로 처리된다.
ConstraintConstraintPrimary Key, Foreign Key, Check에 대해 이관 지원한다. Primary Key index/constraint는 모두 constraint로 처리된다. Check constraint의 표현식은 PostgreSQL의 DD에 저장된 문장을 이용해 DDL을 생성하며, Tibero와 대소문자 처리방식 차이로도 이관에 실패할 수 있다. Foreign Key의 update 규칙은 지원하지 않는다. delete 규칙은 CASCADE와 SET NULL 두 가지만 지원한다.
SynonymSynonym미지원
Materialized ViewMaterialized View미지원
ViewView미지원
PSM미지원

PostgreSQL을 Tibero로 이관할 때 데이터 타입은 아래와 같이 변환된다.

PostgreSQL이관 Data Type비고
smallintNUMBER(5) 
integerNUMBER(10) 
bigintNUMBER(19) 
decimalNUMBER 
numericNUMBER 
realBINARY_FLOAT 
double precisionBINARY_DOUBLE 
floatBINARY_FLOAT 또는 BINARY_DOUBLE1 ~ 24 precision은 BINARY_FLOAT, 25 ~ 53은 BINARY_DOUBLE로 이관된다.
moneyNUMBER 
characterCHAR 
character varyingVARCHAR 
textVARCHAR(65532) 
dateDATE 
timeTIME(6) 
time with time zoneTIMEtimezone이 반영된 time 값으로 이관된다.
timestampTIMESTAMP(6) 
timestamp with time zoneTIMESTAMP(6) WITH TIME ZONE조회할 때 받아오는 timezone이 반영된다.
interval미지원 
booleanCHAR(1) 
cidrVARCHAR(43) 
inetVARCHAR(43) 
macaddrVARCHAR(17) 
BITVARCHAR 
BIT VARYINGVARCHAR 
byteaRAW(2000) 
uuidVARCHAR(40) 
xmlXMLTYPE 

참고

Array 타입 컬럼은 지원하지 않고, 컬럼의 추가 옵션은 Nullable과 Default value 설정만을 지원한다.

2.5. 접속 사용자의 권한

소스와 타겟 데이터베이스에 접속할 때 사용자에게는 마이그레이션 작업에 필요한 권한이 부여되어 있어야 한다. 적절한 권한이 부여되지 않으면 이관 실패가 발생할 수 있다. 예를 들면 SELECT ANY TABLE 권한이 없을 경우에 이관할 테이블을 조회하지 못하는 문제가 발생한다. 주로 DBA 권한을 부여한 사용자를 사용할 것을 권장하고 있으며, 실제 필요한 상세 권한 목록은 데이터베이스의 종류나 Option 화면에서 선택한 이관하게 될 오브젝트 종류에 따라 달라질 수 있다.

예를 들어 Oracle에서 전체 모드로 이관할 경우 소스 데이터베이스에 접속할 때 사용자에게는 다음의 권한이 부여되어 있어야 한다.

  • CONNECT

  • SELECT ANY TABLE

  • SELECT ANY DICTIONARY

  • ALTER SESSION

SELECT ANY DICTIONARY 권한에 SYS DATA DICTIONARY TABLE에 대해서 조회할 권한이 없을 수 있는데, 이 때는 아래 테이블에 대해서 추가적인 권한 부여가 필요하다.

  • constraint : sys.user$, sys.con$, sys.cdef$

  • mview : sys.snap$

타겟 데이터베이스가 Tibero인 경우 접속할 때 사용자에게는 다음의 권한이 부여되어 있어야 한다.

  • CONNECT

  • SELECT ANY TABLE

  • SELECT ANY DICTIONARY

  • RESOURCE

  • ALTER SESSION

2.6. 호환성 평가 수행 예제

다음은 T-Up의 호환성 평가 기능을 사용하는 과정에 대한 설명이다.

  1. Data Dictionary로 분석을 수행할 경우에 아래 화면처럼 T-Up 유틸리티 메인 화면에서 소스 데이터베이스의 접속 정보를 입력하고 [Connect] 버튼을 클릭해서 접속한 후 스키마를 선택한 후 [Analyze] 버튼을 클릭한다.

    [그림 2.11] 메인 화면

    메인 화면

  2. 다음과 같이 Analysis 화면이 나타난다. Target to Analyze에서 Data Dictionary를 선택한 후 [Run Analysis] 버튼을 클릭해서 분석을 수행한다.

    [그림 2.12] Analysis 화면 (1)

    Analysis 화면 (1)

  3. 분석이 수행되면 진행률과 간략한 로그 메시지가 출력된다. 분석이 완료되면 HTML 형식의 보고서가 생성되고 웹 브라우저를 통해 자동으로 팝업된다.

    [그림 2.13] Analysis 화면 (2)

    Analysis 화면 (2)

  4. 다음은 호환성 평가 보고서의 첫 화면이다. 맨 위에는 버전 및 접속 정보 등이 표시되고 Summary에서는 전반적인 호환률에 대한 통계가 나타난다.

    [그림 2.14] 호환성 평가 보고서 - 통계

    호환성 평가 보고서 - 통계

  5. 다음은 호환성 평가 보고서의 하단에 나타나는 호환되지 않는 항목에 대해 자세한 정보를 제공하는 화면이다. 결과 리스트의 각 테이블 행을 클릭하면 평가된 문장이 나타나고 문제가 되는 부분을 빨간색으로 표시하여 보여준다.

    [그림 2.15] 호환성 평가 보고서 - 자세한 정보

    호환성 평가 보고서 - 자세한 정보

  6. SQL File 또는 API Source로 분석을 수행할 경우에는 메인 화면에서 소스 데이터베이스에 접속할 필요 없이 [Analyze] 버튼을 클릭하면 다음 그림과 같이 Target to analyze에서 각각 'SQL File', 'API Source' 항목을 선택하면 File Information에 항목이 활성화된다.

    [그림 2.16] Analysis - SQL File

    Analysis - SQL File

  7. [Directory] 또는 [File] 버튼을 클릭하면 다음과 같은 그림의 선택창이 팝업된다. 분석에 사용할 디렉터리나 파일을 선택한다.

    [그림 2.17] Analysis - 파일 선택 화면

    Analysis - 파일 선택 화면

  8. 디렉터리나 파일을 선택하면 'Location'에 경로가 표시된다. 분석을 수행하기 위해 [Run Analysis] 버튼을 클릭하면 분석이 수행된다. SQL File 또는 API Source도 Data Dictionary와 마찬가지로 평가가 완료되면 호환성 평가 보고서를 출력하고 웹 브라우저를 통해 자동으로 팝업된다.

    [그림 2.18] Analysis - SQL File

    Analysis - SQL File

2.7. 마이그레이션 수행 예제

다음은 T-Up의 마이그레이션 기능을 사용하는 과정에 대한 설명이다.

  1. T-Up 유틸리티를 실행하면 다음과 같은 초기 화면이 나타난다.

    [그림 2.19] 메인 화면

    메인 화면

  2. 접속할 소스 데이터베이스의 사용자 ID, 패스워드 등의 입력이 완료되면 [Connect] 버튼을 클릭한다.

    [그림 2.20] 마이그레이션 - 소스 데이터베이스 접속 정보 입력

    마이그레이션 - 소스 데이터베이스 접속 정보 입력

  3. 접속할 Tibero 데이터베이스의 사용자 ID, 패스워드 등의 입력이 완료되면 [Connect] 버튼을 클릭한다.

    [그림 2.21] 마이그레이션 - 타깃 데이터베이스 접속 정보 입력

    마이그레이션 - 타깃 데이터베이스 접속 정보 입력

  4. [OPTION] 버튼을 클릭한다. 그리고 Option 정보 설정이 완료되면 [OK] 버튼을 클릭한다.

    [그림 2.22] 마이그레이션 - Migration Options 입력 화면

    마이그레이션 - Migration Options 입력 화면

  5. 소스 데이터베이스 스키마 트리 뷰에서 마이그레이션할 대상을 선택하여 [Run] 버튼을 클릭하면 마이그레이션이 진행된다.

    [그림 2.23] 마이그레이션 - 선택 후 실행

    마이그레이션 - 선택 후 실행

  6. 마이그레이션을 진행하면 다음과 같이 진행상황을 보여주는 Progress 화면이 나타난다. 또한 화면 하단의 뷰에서 진행상황 로그를 확인할 수 있다.

    [그림 2.24] 마이그레이션 - 마이그레이션 진행

    마이그레이션 - 마이그레이션 진행

  7. 진행 중 또는 종료 후 [Show Report] 버튼을 클릭하면 다음과 같은 Report 화면이 뜨고 마이그레이션 진행 내역을 확인할 수 있다.

    [그림 2.25] 마이그레이션 - Report 화면

    마이그레이션 - Report 화면

  8. 모든 과정이 끝난 뒤 Progress 화면를 닫으면 다음과 같이 마이그레이션이 완료되었다는 대화 상자가 나타나면 [OK] 버튼을 클릭한다.

    [그림 2.26] 마이그레이션 - 완료 화면

    마이그레이션 - 완료 화면