Quick Start¶
이 문서는 Datatrans를 처음 사용할 때 가장 빠르게 실행해볼 수 있도록 핵심 절차만 정리한 빠른 시작 가이드입니다.
개요¶
기본 흐름은 아래와 같습니다.
- Source와 Target 연결 정보 준비
- 전송 범위 선택 (
schemas또는tables) - 기본 실행 옵션 지정 (
degree,table_action,jobname등) - Datatrans 실행
- 필요 시
query,mappings,scrambles같은 옵션 추가 - Interactive 모드에서 상태 확인 및 작업 제어
1. 가장 빠른 실행 절차¶
1.1 Source / Target 연결 정보 준비¶
Datatrans는 두 개의 데이터베이스 연결 정보를 사용합니다.
source: 데이터를 추출하는 원본 데이터베이스target: 데이터를 적재하는 대상 데이터베이스
연결 문자열은 Oracle EZCONNECT 형식을 사용합니다.
예시:
source=APP_SOURCE/samplePwd123@192.168.0.10:1521/SOURCEPDB
target=APP_TARGET/samplePwd123@192.168.0.20:1521/TARGETPDB
주의
- 실제 운영 계정과 비밀번호는 문서에 직접 남기지 않는 것을 권장합니다.
- 비밀번호에
@,:,/같은 특수문자가 있으면 URL 인코딩이 필요할 수 있습니다.
1.2 전송 범위 선택¶
전송 범위는 tables 또는 schemas로 지정합니다.
권장 기준
- 특정 테이블만 이관:
tables - 스키마 전체 이관:
schemas
1.3 기본 실행 옵션 지정¶
처음 실행할 때는 아래 옵션부터 지정하는 것을 권장합니다.
degree¶
병렬 처리 수준(동시 작업 수)을 지정합니다.
운영 팁
degree는 반드시 CPU 코어 수보다 작아야 하는 값은 아닙니다.- 작은 값부터 시작해 처리량과 DB 부하를 보면서 단계적으로 조정하는 것을 권장합니다.
table_action¶
Target 테이블이 이미 존재할 때 처리 방식을 지정합니다.
| 옵션 | 설명 |
|---|---|
TRUNCATE | 기존 데이터 삭제 후 다시 적재 |
APPEND | 기존 데이터 유지 후 추가 적재 |
REPLACE | Source 구조 기준으로 Target 테이블을 다시 생성 후 적재 |
주의
REPLACE는 테이블명 또는 스키마명 리매핑이 포함된 경우 지원하지 않을 수 있습니다.
jobname¶
작업 식별자를 지정합니다.
- 지정하지 않으면 Datatrans가 자동 생성합니다.
- 로그 파일과 에러 파일 이름의 기준이 됩니다.
1.4 가장 기본적인 실행 예시¶
2. 자주 함께 사용하는 옵션¶
2.1 query - 조건부 추출¶
특정 테이블에 대해 조건을 걸어 부분 추출할 수 있습니다.
예시:
주의
WHERE키워드는 쓰지 않습니다.- 조건절만 작성해야 합니다.
- 테이블명과 컬럼명은 반드시 Source 기준으로 작성해야 합니다.
실행 예시:
datatrans \
source=APP_SOURCE/samplePwd123@192.168.0.10:1521/SOURCEPDB \
target=APP_TARGET/samplePwd123@192.168.0.20:1521/TARGETPDB \
tables=EMPLOYEES \
query=HR.EMPLOYEES:"DEPARTMENT_ID = 90" \
degree=4 \
table_action=TRUNCATE \
jobname=hr_emp_90
2.2 flashback_scn - 추출 시점 제어¶
추출 시점을 제어하려면 flashback_scn을 사용합니다.
| 옵션 | 설명 |
|---|---|
CURRENT | 전체 테이블을 동일 시점 기준으로 추출 |
INDIVIDUAL | 각 테이블별 추출 시작 시점 기준으로 추출 |
| SCN 숫자 | 지정한 시점 기준으로 추출 |
권장 기준
- 정합성 우선:
CURRENT - 성능 우선:
INDIVIDUAL
2.3 remap_schema / remap_tablespace - 적재 위치 변경¶
Source와 Target의 스키마 또는 테이블스페이스가 다를 경우 아래 옵션을 사용할 수 있습니다.
remap_schema¶
remap_tablespace¶
주의
remap_tablespace는 table_action=REPLACE일 때만 적용됩니다.
2.4 batcherrors - 오류 행 계속 처리¶
적재 중 오류가 발생해도 가능한 행은 계속 적재하려면 batcherrors를 사용합니다.
| 옵션 | 동작 |
|---|---|
Y | 오류 행만 실패 처리하고 나머지는 계속 적재 |
N | 오류 발생 시 작업 단위 실패 가능 |
오류 데이터는 {jobname}.err 파일로 기록됩니다.
2.5 suffix - 타겟 테이블명에 접미사 추가¶
주기적 스냅샷이나 테스트 이관 시 Target 테이블명 뒤에 접미사를 붙일 수 있습니다.
예:
- Source:
HR.EMPLOYEES - Target:
HR.EMPLOYEES_20260227
3. 매핑 적용 빠른 시작¶
컬럼 이름이 다르거나 값 변환이 필요하면 매핑 YAML을 작성하고 mappings 파라미터로 적용합니다.
3.1 기본 구조¶
mappings:
USR_TARGET_MINI.MAPPING_CONV:
target:
owner: USR_TARGET_MINI
table_name: MAPPING_CONV
source:
owner: USR_SOURCE_MINI
table_name: EMP_01
columns:
- target_column: DATATA1
source_column: OWNER
- target_column: CONV1
conversion_rule: "ROUND(DATA_LENGTH + 3.5)"
3.2 적용 방식¶
여러 파일을 함께 적용할 때는 ,로 구분합니다.
주의
conversion_rule은 큰따옴표로 감싸는 것을 권장합니다.- 하나의
target_column에는source_column또는conversion_rule중 하나만 사용합니다. - 매핑은 단일 소스 테이블과 단일 타겟 테이블 간 1:1 규칙만 지원합니다.
실행 예시:
datatrans \
source=APP_SOURCE/samplePwd123@192.168.0.10:1521/SOURCEPDB \
target=APP_TARGET/samplePwd123@192.168.0.20:1521/TARGETPDB \
schemas=USR_SOURCE_MINI \
mappings=/home/user/dt_parfiles/mapping_rule.yaml \
degree=4 \
table_action=TRUNCATE \
jobname=mapping_test_01
4. 스크램블링 적용 빠른 시작¶
민감정보를 마스킹하거나 가명처리하려면 스크램블링 규칙을 적용합니다.
기본 흐름은 아래와 같습니다.
- 파이썬 함수 작성
- 함수를 도메인으로 등록
- YAML에 테이블/컬럼 규칙 작성
- 실행 시
scrambles파라미터 지정
4.1 함수 작성 예시¶
# $DATATRANS_HOME/rule/rules.py
import random
def get_name(*_):
names = ["KIM", "LEE", "PARK", "CHOI", "JUNG"]
return random.choice(names)
4.2 도메인 등록 예시¶
4.3 YAML 예시¶
4.4 실행 예시¶
datatrans \
source=APP_SOURCE/samplePwd123@192.168.0.10:1521/SOURCEPDB \
target=APP_TARGET/samplePwd123@192.168.0.20:1521/TARGETPDB \
schemas=USR_SOURCE_MINI \
scrambles=/path/to/scramble_rule.yaml \
degree=4 \
table_action=TRUNCATE \
jobname=scramble_test_01
운영 팁
- YAML의
rules:에는 함수명이 아니라 도메인명을 작성합니다. UNIQUE와CONSISTENT는 동시에 사용하지 않는 것을 권장합니다.args를 지정하면 스크램블 함수의 입력값을 다른 컬럼에서 가져올 수 있습니다.
5. 상태 확인 및 작업 제어¶
Datatrans를 실행 인자 없이 시작하면 Interactive 모드로 진입합니다.
기본 프롬프트:
자주 사용하는 명령:
중단된 작업을 다시 시작하려면 먼저 작업에 연결한 뒤 START_JOB를 실행합니다.
주의
STATUS단독 명령은 현재 연결된 작업이 있을 때 사용합니다.START_JOB=JOBNAME형식은 지원하지 않습니다.- 작업을 안전하게 멈출 때는
STOP_JOB를 우선 검토하고, 즉시 종료가 필요할 때만KILL_JOB를 사용합니다.
6. 상태 기반 전송 빠른 시작¶
Repository DB의 상태 정보를 기준으로 전송 대상을 자동 선택하려면 Status-Driven Transfer를 사용합니다.
이 경우 source, target 외에 repository 연결이 추가로 필요합니다.
6.1 필수 개념¶
repository¶
상태를 관리하는 Repository DB 접속 정보입니다.
completed_target_query¶
감시 대상 테이블 목록을 가져오는 쿼리입니다.
working_target_query¶
지금 전송 가능한 테이블을 가져오는 쿼리입니다.
polling_frequency¶
Repository 조회 주기(초)입니다.
운영 팁
- 일반적으로
3에서10초 사이로 조정하는 것을 권장합니다. - 실제 전송 대상은
schemas또는tables로 지정한 범위와completed_target_query결과의 교집합만 포함됩니다.
7. 첫 실행 체크리스트¶
처음 실행하기 전에는 아래 항목을 확인하는 것을 권장합니다.
- Source / Target 연결 정보가 정확한지 확인합니다.
- 전송 범위를
schemas또는tables로 명확히 지정합니다. - Target 테이블 처리 방식(
TRUNCATE,APPEND,REPLACE)을 결정합니다. -
jobname을 지정해 로그와 에러 파일을 구분하기 쉽게 만듭니다. - 부분 추출이 필요하면
query를 Source 기준으로 작성합니다. - 컬럼 구조가 다르면
mappings를 준비합니다. - 민감정보가 있으면
scrambles적용 여부를 검토합니다. - 대용량 작업은 작은
degree부터 시작해 점진적으로 올립니다. - 실행 후에는 Interactive 모드에서
STATUS=JOBNAME으로 상태를 확인합니다.
8. 추천 시작 예시¶
가장 무난한 첫 실행 예시는 아래와 같습니다.
datatrans \
source=APP_SOURCE/samplePwd123@192.168.0.10:1521/SOURCEPDB \
target=APP_TARGET/samplePwd123@192.168.0.20:1521/TARGETPDB \
schemas=SALES \
degree=4 \
table_action=TRUNCATE \
batcherrors=Y \
flashback_scn=CURRENT \
jobname=sales_first_run
이 설정은 다음 목적에 적합합니다.
- 스키마 단위로 빠르게 전송 시작
- 전체 시점 정합성 확보
- 오류 행은 별도 분리
- 로그 및 상태 관리 용이