CLI 모드

이번 장에서는 CLI 모드 사용법에 대해서 기술합니다.

개요

CLI 모드는 웹을 통하지 않고 터미널에서 직접 마이그레이션 작업을 실행하는 기능입니다.

cli.sh 파일을 통해 실행할 수 있으며, 커맨드 라인 또는 프로퍼티 파일을 통해 설정을 전달합니다.


사용법

수행예시

sh cli.sh -h

예상결과

Usage:

1. Command-line options only
    sh cli.sh <argument_name1>=<argument_value1> <argument_name2>=<argument_value2> ...
2. Property file usage
    sh cli.sh PROPERTY_FILE=cli-migration.properties
3. Property file and command-line options usage
    sh cli.sh PROPERTY_FILE=cli-migration.properties <argument_name1>=<argument_value1> <argument_name2>=<argument_value2> ...

======================================================================================================================================================
                                                   PROPERTY FILE CONFIGURATION
======================================================================================================================================================
PROPERTY_FILE                                      Path to the properties file, refer to the example file: cli-migration.properties.eg

======================================================================================================================================================
                                                   SOURCE DATABASE CONFIGURATION
======================================================================================================================================================

SOURCE_DATABASE                                    Source database vendor
...

1. 프로퍼티 파일로 옵션 전달

sh cli.sh PROPERTY_FILE=cli-migration.properties

2. 커맨드 라인으로 옵션 전달

sh cli.sh SOURCE_DATABASE=ORACLE ... MIGRATION_METHOD=FULL TABLE=SRC:T1

3. 프로퍼티 파일과 커맨드 라인으로 옵션 전달

sh cli.sh PROPERTY_FILE=cli-migration.properties SOURCE_DATABASE=ORACLE ... MIGRATION_METHOD=FULL TABLE=SRC:T1

참고

프로퍼티 파일커맨드 라인에서 동일한 옵션을 지정할 경우, 커맨드 라인에서 입력한 값이 프로퍼티 파일의 값보다 우선 적용됩니다.


옵션 목록

옵션
설명
기본값
필수 여부
이관 방식별 적용 여부

SOURCE_DATABASE

소스 데이터베이스 타입

-

true

공통

SOURCE_IPADDRESS

소스 데이터베이스 IP 주소

-

true

공통

SOURCE_PORT

소스 데이터베이스 포트

-

true

공통

SOURCE_USER

소스 데이터베이스 사용자

-

true

공통

SOURCE_PASSWORD

소스 데이터베이스 비밀번호

-

true

공통

SOURCE_DATABASE_NAME

소스 데이터베이스 이름

-

true

공통

SOURCE_SSL

소스 데이터베이스 SSL 사용 여부

false

false

공통

SOURCE_LOB_CHUNK_SIZE_VALUE

소스 데이터베이스 LOB 청크 크기

32

false

공통

SOURCE_LOB_CHUNK_SIZE_UNIT

소스 데이터베이스 LOB 단위

KB

false

공통

TARGET_IPADDRESS

타겟 데이터베이스 IP 주소

-

true

공통

TARGET_PORT

타겟 데이터베이스 포트

-

true

공통

TARGET_USER

타겟 데이터베이스 사용자

-

true

공통

TARGET_PASSWORD

타겟 데이터베이스 비밀번호

-

true

공통

TARGET_DATABASE_NAME

타겟 데이터베이스 이름

-

true

공통

TARGET_SSL

타겟 데이터베이스 SSL 사용 여부

false

false

공통

TARGET_LOB_CHUNK_SIZE_VALUE

타겟 데이터베이스 LOB 청크 크기

32

false

공통

TARGET_LOB_CHUNK_SIZE_UNIT

타겟 데이터베이스 LOB 단위

KB

false

공통

MIGRATION_METHOD

마이그레이션 방식

-

true

공통

LOG_LEVEL

로그 레벨

INFO

false

공통

TABLE, VIEW, INDEX 등

DDL_ONLY 이관 대상 객체 목록

-

조건부

DDL_ONLY / FULL

SOURCE_TABLE_TARGET_TABLE_PAIR

DATA_ONLY 이관 대상 테이블 매핑

-

조건부

DATA_ONLY

EXECUTE_DDL_STATEMENTS_ON_THE_TARGET_DB

추출된 DDL 스크립트를 타겟 데이터베이스에 수행할지 여부

true

false

DDL_ONLY

CREATE_STATEMENT_TYPE

DDL 생성 구문 타입 (CREATE, CREATE OR REPLACE)

CREATE OR REPLACE

false

DDL_ONLY / FULL

DEGREE_OF_PARALLEL_FOR_INDEX_CREATION

인덱스 생성 병렬도

1

false

DDL_ONLY / FULL

MIGRATE_OBJECT_COMMENTS

객체 코멘트 이관 여부

true

false

DDL_ONLY / FULL

CREATE_SCHEMA_USER

스키마 유저 생성 여부

true

false

DDL_ONLY / FULL

PASSWORD_POLICY

패스워드 정책 (DEFAULT, SET_INITIAL_PASSWORD)

DEFAULT

false

DDL_ONLY / FULL

INITIAL_PASSWORD

SET_INITIAL_PASSWORD 정책 시 초기 비밀번호

tibero

false

DDL_ONLY / FULL

GRANT_SYSTEM_PRIVILEGES

시스템 권한 부여 여부

true

false

DDL_ONLY / FULL

GRANT_OBJECT_PRIVILEGES

객체 권한 부여 여부

true

false

DDL_ONLY / FULL

GRANT_ROLE

롤 부여 여부

true

false

DDL_ONLY / FULL

ASSIGN_TABLESPACE_QUOTAS

테이블스페이스 쿼터 부여 여부

true

false

DDL_ONLY / FULL

ASSIGN_PROFILE

프로파일 부여 여부

true

false

DDL_ONLY / FULL

TABLE_OPTION_CREATE_TABLE_WITH_CONSTRAINTS

제약 포함 테이블 생성 여부

true

false

DDL_ONLY / FULL

TABLE_OPTION_INCLUDE_FOREIGN_KEY_CONSTRAINTS

FK 포함 여부

true

false

DDL_ONLY / FULL

TABLE_OPTION_CREATE_CONSTRAINTS_WITH_VALIDATE

VALIDATE로 생성 여부

true

false

DDL_ONLY / FULL

TABLE_OPTION_CHANGE_SEMANTIC_FROM_BYTE_TO_CHAR

CHAR 또는 VARCHAR 컬럼의 길이 기준을 BYTE → CHAR로 변경할지 여부

false

false

DDL_ONLY / FULL

TABLE_OPTION_SCALE_COLUMN_SIZE

컬럼 크기 배율 적용 여부

false

false

DDL_ONLY / FULL

TABLE_OPTION_SCALE_COLUMN_SIZE_CHAR

CHAR 컬럼 크기 배율

1

false

DDL_ONLY / FULL

TABLE_OPTION_SCALE_COLUMN_SIZE_VARCHAR

VARCHAR 컬럼 크기 배율

1

false

DDL_ONLY / FULL

ROLE_OPTION_GRANT_SYSTEM_PRIVILEGES

롤 시스템 권한 부여 여부

true

false

DDL_ONLY / FULL

ROLE_OPTION_GRANT_OBJECT_PRIVILEGES

롤 객체 권한 부여 여부

true

false

DDL_ONLY / FULL

ROLE_OPTION_GRANT_ROLE

롤에 롤 부여 여부

true

false

DDL_ONLY / FULL

INSERT_METHOD

데이터 적재 방식

DPL

false

DATA_ONLY

NUM_OF_JOBS

병렬 작업 개수 (= 동시에 이관할 테이블의 개수)

1

false

DATA_ONLY

PARALLEL_EXTRACT

병렬 추출 여부

true

false

DATA_ONLY

PARALLEL_EXTRACT_THREAD_COUNT

추출 스레드 개수

4

false

DATA_ONLY

PARALLEL_EXTRACT_HINT

병렬 힌트 사용 여부

true

false

DATA_ONLY

PARALLEL_EXTRACT_HINT_OF_DEGREE

병렬 힌트 병렬도

2

false

DATA_ONLY

FETCH_SIZE

Fetch 크기

1

false

DATA_ONLY

PARALLEL_INSERT

병렬 적재 여부

true

false

DATA_ONLY

PARALLEL_INSERT_THREAD_COUNT

적재 스레드 개수

4

false

DATA_ONLY

BATCH_COUNT

배치 크기(CPL 방식에서 사용)

100

false

DATA_ONLY

DISABLE_INDEX

데이터 이관 전 인덱스 비활성화 여부

false

false

DATA_ONLY

REBUILD_INDEX

데이터 이관 후 인덱스 재구성 여부

false

false

DATA_ONLY

COMMIT_AT_END

종료 시 커밋 (CPL 방식에서 사용)

true

false

DATA_ONLY

COMMIT_AFTER_EACH_ROW

행마다 커밋 (CPL 방식에서 사용)

false

false

DATA_ONLY

COMMIT_SIZE

커밋 단위(건, CPL 방식에서 사용)

1000

false

DATA_ONLY

BYTE_TO_STRING_CONVERSION

CHAR 또는 VARCHAR 데이터를 java String 타입 변환 없이 이관할 지 여부

false

false

DATA_ONLY

LOG_UNIT_SIZE

로그 단위(행)

10000

false

DATA_ONLY

옵션 참고 사항

마이그레이션 방식별 필수 옵션

  • DDL_ONLY 또는 FULL 방식인 경우: TABLE, INDEX와 같은 객체 목록 중 최소 1개 이상

  • DATA_ONLY: SOURCE_TABLE_TARGET_TABLE_PAIR 옵션 사용 필수

TABLE, INDEX 등 객체 목록 입력 방식

  • 스키마 종속 객체: SCHEMA:OBJECT1,OBJECT2;SCHEMA2:OBJECT3,OBJECT4

    • 예: TABLE=TEST_USER:T,T2;TEST_USER2:T3,T4

    • Job의 경우에는 JOB_${JOB_ID} 형식으로 입력

      • 예: JOB=TEST_USER:JOB_1,JOB_2;TEST_USER2:JOB_3,JOB_4

  • 스키마 독립 객체: OBJECT1,OBJECT2,OBJECT3

    • 예: ROLE=ROLE1,ROLE2,ROLE3

  • SOURCE_TABLE_TARGET_TABLE_PAIR 옵션 입력 방식

    • :를 기준으로 소스 및 타겟 스키마 구분, ,를 기준으로 하나의 매핑 구분

      • 예: SOURCE_TABLE_TARGET_TABLE_PAIR=SOURCE_USER.T:TARGET_USER.T,SOURCE_USER2.T3:TARGET_USER2.T3

      • => SOURCE_USER의 테이블 TTARGET_USER의 테이블T를 매핑

      • => SOURCE_USER2의 테이블 T3TARGET_USER2의 테이블T3를 매핑


사용 예시

Case 1. DDL_ONLY: 테이블, 인덱스 일부만 이관하는 예시

sh cli.sh \
  SOURCE_DATABASE=TIBERO SOURCE_IPADDRESS=localhost SOURCE_PORT=8629 \
  SOURCE_USER=tibero SOURCE_PASSWORD=tmax SOURCE_DATABASE_NAME=tibero \
  TARGET_IPADDRESS=localhost TARGET_PORT=9268 \
  TARGET_USER=tibero TARGET_PASSWORD=tmax TARGET_DATABASE_NAME=tibero \
  MIGRATION_METHOD=DDL_ONLY \
  TABLE=TEST_USER:T,T2;TEST_USER2:T3,T4 \
  INDEX=TEST_USER:IDX_T,IDX_T2

Case 2. DATA_ONLY: 특정 테이블 매핑 이관, 병렬 추출/적재 활성화

sh cli.sh \
  SOURCE_DATABASE=TIBERO SOURCE_IPADDRESS=localhost SOURCE_PORT=8629 \
  SOURCE_USER=tibero SOURCE_PASSWORD=tmax SOURCE_DATABASE_NAME=tibero \
  TARGET_IPADDRESS=localhost TARGET_PORT=9268 \
  TARGET_USER=tibero TARGET_PASSWORD=tmax TARGET_DATABASE_NAME=tibero \
  MIGRATION_METHOD=DATA_ONLY \
  SOURCE_TABLE_TARGET_TABLE_PAIR=TEST_USER.T:TEST_USER.T,TEST_USER2.T3:TEST_USER2.T3 \
  INSERT_METHOD=DPL BATCH_COUNT=500 COMMIT_SIZE=20000


프로퍼티 파일 예시 (cli-migration.properties.eg)

프로퍼티 파일 예시는, 동봉된 cli-migration.properties.eg 파일에서 확인할 수 있습니다.

해당 프로퍼티 예시 파일을 복사 및 수정하여 사용하면 됩니다.

Last updated