OMA (Oracle Modernization Accelerator) 소개

목적

OMA는 Oracle 기반 시스템을 PostgreSQL/MySQL 등의 오픈소스 데이터베이스로 마이그레이션하기 위한 자동화 도구입니다.

  • Oracle 데이터베이스를 PostgreSQL/MySQL로 변환
  • MyBatis 기반 Java 애플리케이션의 SQL 자동 변환
  • 마이그레이션 작업의 자동화 및 효율성 향상

범위

1. 데이터베이스 변환

  • 도구: AWS Database Migration Service + Schema Conversion Tool 활용
  • 대상: Oracle 스키마, 테이블, 인덱스, 제약조건
  • 결과: PostgreSQL/MySQL 호환 스키마

2. 애플리케이션 변환

  • 도구: OMA 스크립트 기반 자동 변환
  • 대상: MyBatis XML 파일 내 Oracle SQL
  • 결과: Target DBMS 호환 SQL

3. 지원 범위

  • Source: Oracle Database + Java Spring + MyBatis
  • Target: PostgreSQL/MySQL + Java Spring + MyBatis
  • 변환 대상: SQL 구문, 함수, 데이터 타입

OMA Structure

디렉토리 구조

sample-oracle-modernization-accelerator/          # OMA 루트 폴더
├── initOMA.sh                                    # 메인 실행 스크립트 (통합 진입점)
├── oma_env_[프로젝트명].sh                        # 프로젝트별 환경 변수 파일
├── config/                                       # 프로젝트 설정 파일 디렉토리
│   └── oma.properties                            # 환경 변수로 사용되는 설정 파일
├── [프로젝트명]/                                  # 분석 및 변환 단위 : 애플리케이션명으로 구분
│   ├── dbms/                                     # 데이터베이스 스키마 변환 결과
│   ├── logs/                                     # 전체 프로세스 로그 디렉토리
│   ├── application/                              # 애플리케이션 분석 및 변환 결과
│   │   ├── *.csv                                 # JNDI, Mapper 분석 결과 파일들
│   │   ├── Discovery-Report.html                 # 애플리케이션 분석 리포트
│   │   └── transform/                            # SQL 변환 결과 및 로그
│   └── test/                                     # Unit 테스트 수행 결과 및 도구
└── bin/                                          # OMA 실행 스크립트 및 템플릿
    ├── database/                                 # 데이터베이스 변환 템플릿
    ├── application/                              # 애플리케이션 변환 템플릿 및 도구
    ├── postTransform/                            # Post 변환 작업 스크립트 및 도구
    ├── test/                                     # 테스트 관련 스크립트 및 템플릿
    └── batch/                                    # 배치 처리 관련 스크립트

핵심 구성 요소

1. 통합 제어 계층

구성 요소 설명
initOMA.sh 메뉴 기반 통합 실행 스크립트
환경 설정 프로젝트별 환경 변수 관리

2. 분석 엔진

구성 요소 설명
애플리케이션 분석 Java 소스 코드 및 MyBatis XML 파일 분석
SQL 추출 변환 대상 SQL 식별 및 분류

3. 변환 엔진

구성 요소 설명
SQL 변환 Oracle SQL을 Target DBMS SQL로 자동 변환
XML 처리 MyBatis XML 파일 변환 및 병합

4. 검증 엔진

구성 요소 설명
Unit 테스트 변환된 SQL 동작 검증
보고서 생성 변환 결과 분석 및 HTML 보고서 생성

OMA.properties 설정 파일

개요

config/oma.properties 파일은 OMA 시스템의 모든 환경 변수와 설정을 정의하는 중앙 집중식 설정 파일입니다. setEnv.sh 스크립트에 의해 읽혀져서 프로젝트별 환경 변수 파일(oma_env_[프로젝트명].sh)로 변환됩니다.

설정 구조

[COMMON] 섹션 모든 프로젝트에서 공통으로 사용되는 기본 설정들을 정의합니다.

설정 카테고리 주요 설정 항목 설명
시스템 루트 OMA_BASE_DIR OMA 시스템 루트 디렉토리
데이터베이스 변환 DBMS_FOLDER
DBMS_LOGS_FOLDER
데이터베이스 변환 관련 폴더
데이터베이스 로그 폴더
애플리케이션 변환 APPLICATION_FOLDER
APP_TOOLS_FOLDER
APP_TRANSFORM_FOLDER
APP_LOGS_FOLDER
애플리케이션 변환 폴더
변환 도구 폴더
변환 결과 폴더
애플리케이션 로그 폴더
테스트 TEST_FOLDER
TEST_LOGS_FOLDER
테스트 관련 폴더
테스트 로그 폴더

[프로젝트명] 섹션 각 프로젝트마다 고유한 설정들을 정의합니다.

설정 카테고리 주요 설정 항목 설명 예시 값
애플리케이션 소스 JAVA_SOURCE_FOLDER
SOURCE_SQL_MAPPER_FOLDER
TARGET_SQL_MAPPER_FOLDER
Java 소스 경로
원본 MyBatis XML 위치
변환된 XML 저장 위치
/path/to/java/source
${JAVA_SOURCE_FOLDER}/main/resources/sqlmap
/path/to/target/sqlmap
프로젝트 정보 APPLICATION_NAME 프로젝트 이름 itsm-2nd
변환 필터링 TRANSFORM_JNDI
TRANSFORM_RELATED_CLASS
변환 대상 JNDI 필터
변환 대상 클래스 필터
jdbc
_ALL_
데이터베이스 타입 SOURCE_DBMS_TYPE
TARGET_DBMS_TYPE
원본 DB 타입
대상 DB 타입
orcl
postgres

Oracle 연결 정보 (Source DB)

ORACLE_HOST=hostname
ORACLE_PORT=1522
ORACLE_SVC_USER=username
ORACLE_SVC_PASSWORD=password

PostgreSQL 연결 정보 (Target DB)

PGHOST=hostname
PGPORT=5432
PGUSER=username
PGPASSWORD=password

주요 설정 항목

경로 설정

설정 항목 설명
JAVA_SOURCE_FOLDER Java 소스 코드 루트 디렉토리
SOURCE_SQL_MAPPER_FOLDER 원본 MyBatis XML 파일 위치
TARGET_SQL_MAPPER_FOLDER 변환된 XML 파일 저장 위치
APP_TOOLS_FOLDER 변환 도구 및 스크립트 위치

변환 대상 필터링 설정

설정 항목 설명 예시
TRANSFORM_JNDI 변환 대상 JNDI를 선별할 때 사용하는 필터 jdbc - jdbc라는 JNDI를 사용하는 SQL만 변환
jdbc,jdbc/primary,jdbc/secondary - 여러 JNDI 지정
TRANSFORM_RELATED_CLASS 변환 대상 클래스를 선별할 때 사용하는 필터 _ALL_ - 모든 클래스의 SQL을 변환 대상으로 설정
com.example.UserDao - UserDao 클래스 관련 SQL만 변환

변환 설정

설정 항목 설명
SOURCE_DBMS_TYPE 원본 데이터베이스 타입 orcl
TARGET_DBMS_TYPE 대상 데이터베이스 타입 postgres / mysql

데이터베이스 연결

데이터베이스 주요 설정 항목
Oracle ORACLE_HOST, ORACLE_PORT, ORACLE_SVC_USER
PostgreSQL PGHOST, PGPORT, PGUSER
MySQL MYSQL_HOST, MYSQL_PORT, MYSQL_USER 등 (필요시)

사용 방법

  1. 프로젝트 설정: [프로젝트명] 섹션에 해당 프로젝트 정보 입력
  2. 환경 변수 생성: setEnv.sh 실행으로 oma_env_[프로젝트명].sh 파일 생성
  3. 환경 변수 로딩: source oma_env_[프로젝트명].sh로 환경 변수 활성화
  4. OMA 실행: initOMA.sh 실행으로 변환 작업 수행

Back to top

Copyright © 2024 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.