변환 작업공간

변환 작업공간을 사용하면 소스 데이터베이스의 스키마 및 객체를 대상 데이터베이스와 호환되는 SQL 문법으로 변환할 수 있습니다. 이 페이지에서는 Database Migration Service 변환 작업공간에 대한 개요를 제공합니다.

자동 스키마 변환을 사용하든 변환 매핑 파일을 추가로 만들든 관계없이 Oracle 이전에서 지원되지 않는 특정 데이터 유형이 있습니다. 자세한 내용은 알려진 데이터 유형 제한사항을 참고하세요.

자동화된 코드 및 스키마 변환

변환 작업공간을 만들면 Database Migration Service에서 자동으로 초기 스키마 변환을 실행합니다. 자동 스키마 변환은 사용 가능한 Oracle 데이터베이스 객체의 매우 구체적인 하위 집합을 지원합니다.

자동 코드 변환은 다음 Oracle 데이터베이스 객체를 지원합니다.

  • 제약조건
  • 색인 (테이블과 동일한 스키마에서 생성된 색인만 해당)
  • 구체화된 뷰
  • 객체 유형 (부분 지원)
  • 시퀀스
  • 동의어
  • 테이블
  • 조회수
  • 트리거 (테이블 수준만 해당)
  • 패키지
  • 함수
  • 저장 프로시저

대화형 SQL 편집기

대화형 SQL 편집기를 사용하면 Database Migration Service에서 변환된 PostgreSQL 문법을 직접 수정할 수 있습니다. 이를 사용하여 전환 문제를 해결하거나 필요에 맞게 스키마를 조정할 수 있습니다. 일부 객체는 내장 편집기에서 수정할 수 없습니다.

수정 가능한 Oracle 객체

소스 데이터베이스 코드와 스키마를 변환한 후 대화형 편집기를 사용하여 특정 유형의 객체에 대해 생성된 SQL을 수정할 수 있습니다. 편집기에서 지원하는 Oracle 객체는 다음과 같습니다.

  • 테이블 트리거 (권한 필요)
  • 구체화된 뷰
  • 패키지
  • 함수, 저장 프로시저
  • 동의어
  • 조회수
  • 제약조건
  • 색인
  • 시퀀스

또한 일부 객체는 변환되지만 Database Migration Service 내에서 직접 수정할 수는 없습니다. 이러한 객체를 수정하려면 변환된 스키마와 코드를 적용한 후 대상 데이터베이스에서 직접 업데이트를 실행해야 합니다.

수정이 지원되지 않는 객체:

  • 사용자 정의 객체 유형
  • 테이블
  • 스키마

Gemini 지원 전환 기능

Database Migration Service는 Google Cloud 용 Gemini를 변환 작업공간에 통합하여 다음 두 가지 영역에서 변환 프로세스를 가속화하고 개선할 수 있도록 지원합니다.

  • 변환 지원이 포함된 코드 설명 가능성 기능을 제공합니다. 변환 로직을 더 잘 이해하거나 변환 문제 해결을 제안하거나 변환된 코드를 최적화하는 데 도움이 되는 일련의 전용 프롬프트입니다.

  • Gemini 코드 변환 추천을 사용하여 변환 문제 해결을 신속하게 적용합니다. 변환 문제를 해결하고 작업공간의 다른 결함 있는 객체에 대한 변경사항을 제안하면서 Gemini 모델을 학습시킬 수 있는 메커니즘입니다.

Gemini 지원 변환에 관한 자세한 내용은 다음 페이지를 참고하세요.

전환 매핑 파일

전환 매핑 파일을 사용하여 전환 로직을 맞춤설정할 수 있습니다. 변환 매핑 파일은 Oracle 객체를 PostgreSQL 객체로 변환하는 방법에 관한 정확한 안내(변환 디렉티브라고 함)가 포함된 텍스트 파일입니다.

지원되는 전환 지시어

Database Migration Service는 변환 매핑 파일에 대해 다음과 같은 변환 지시어를 지원합니다.

EXPORT_SCHEMA는 모든 변환 매핑 파일에 필수 지시문입니다. Database Migration Service에서는 소스 스키마가 올바른 대상 스키마로 변환되도록 하려면 이 안내가 필요합니다. 전환 매핑 파일에 다음 줄이 포함되어 있는지 확인합니다.

EXPORT_SCHEMA 1

Database Migration Service는 변환 지시어로 수정해야 하는 객체가 포함된 스키마를 결정할 수 있어야 합니다. SCHEMA 지시문을 사용하면 전환 흐름이 다음과 같이 조정됩니다.

  • Database Migration Service는 이 스키마 변환합니다. 단일 변환 워크스페이스에서 다른 스키마를 변환해야 하는 경우 스키마가 다른 여러 파일을 업로드해야 합니다.
  • 파일에 제공된 다른 모든 맞춤설정 지시는 이 특정 스키마의 객체에만 적용됩니다.

다음 형식을 사용합니다.

SCHEMA SCHEMA_NAME

여기서 SCHEMA_NAME은 소스 데이터베이스의 스키마 이름입니다.

  • 전환 매핑 파일에 이 지시어를 포함하면 모든 맞춤설정이 이 특정 스키마에 포함된 객체에만 적용됩니다. 다른 스키마의 객체를 맞춤설정하려면 여러 전환 매핑 파일을 만들어 전환 워크스페이스에 업로드해야 합니다.
  • 이 디렉티브를 건너뛰면 다른 전환 디렉티브에 의해 수정된 객체의 명시적 스키마 이름을 제공해야 합니다. 예를 들어 REPLACE_TABLES 디렉티브에 SOURCE_TABLE_NAME를 사용하는 대신 "SCHEMA_NAME.SOURCE_TABLE_NAME"를 사용해야 합니다.

이 디렉티브를 사용하여 Oracle과 PostgreSQL 구문 간에 지원되는 모든 데이터 유형을 명시적으로 매핑할 수 있습니다. 이 디렉티브는 쉼표로 구분된 매핑 목록을 예상합니다. 전체 정의를 한 줄에 제공해야 하지만 구성 파일에는 여러 개의 DATA_TYPE 디렉티브를 포함합니다. 다음 형식을 사용합니다.

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

여기서 ORACLE_DATA_TYPEPGSQL_DATA_TYPE는 마이그레이션에 사용하는 각 Oracle 및 PostgreSQL 버전에서 지원하는 데이터 유형입니다. 지원되는 버전에 관한 자세한 내용은 시나리오 개요를 참고하세요.

:

DATA_TYPE REAL:double precision,SMALLINT:integer

Oracle 및 PostgreSQL 데이터 유형에 관한 자세한 내용은 다음을 참고하세요.

MODIFY_TYPE 디렉티브를 사용하면 Database Migration Service가 소스 테이블의 특정 열을 어떤 데이터 유형으로 변환할지 제어할 수 있습니다. 이 디렉티브는 쉼표로 구분된 매핑 목록을 예상합니다. 전체 정의를 한 줄에 제공해야 하지만 구성 파일에 여러 개의 MODIFY_TYPE 디렉티브를 포함합니다. 다음 형식을 사용합니다.

MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE
MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...

각 항목의 의미는 다음과 같습니다.

  • SOURCE_TABLE_NAME은 데이터 유형을 변경하려는 열이 포함된 테이블의 이름입니다.
  • COLUMN_NAME은 전환 매핑을 맞춤설정하려는 열의 이름입니다.
  • EXPECTED_END_RESULT_DATA_TYPE는 변환된 열에서 사용할 PostgreSQL 데이터 유형입니다.

:

MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT

기본적으로 Database Migration Service는 NUMBER(p,s) 유형을 PostgreSQL DECIMAL(p,s) 유형으로 변환합니다.

PG_INTEGER_TYPE 디렉티브를 사용하여 이 동작을 수정할 수 있습니다. 값을 1로 설정하고 정밀도 및 척도 (NUMBER(p,s)) 유형이 있는 모든 NUMBER를 정밀도 자릿수에 따라 PostgreSQL smallint, integer 또는 bigint 유형으로 강제 변환합니다.

전환 매핑 파일에 다음 설정을 포함합니다.

PG_INTEGER_TYPE 1

정밀도 및 소수 자릿수 (NUMBER(p,s)) 유형이 있는 모든 NUMBER를 PostgreSQL real 또는 float 유형으로 변환하려면 이 디렉티브를 1로 설정하세요 (정밀도 자릿수에 따라 다름).

이 디렉티브를 0로 설정하면 NUMBER(p,s) 값이 정확한 원래 값을 유지하고 내부 PostgreSQL 데이터 유형을 사용합니다.

전환 매핑 파일에 다음 설정을 포함합니다.

PG_NUMERIC_TYPE 1

정밀도가 없는 NUMBER의 기본 변환은 PG_INTEGER_TYPE 지시문도 사용하는지에 따라 달라집니다.

  • PG_INTEGER 디렉티브를 사용하면 정밀도가 없는 NUMBERDECIMAL 값으로 변환됩니다.
  • PG_INTEGER 디렉티브를 사용하지 않으면 정밀도가 없는 NUMBERBIGINT 값으로 변환됩니다.

이 동작을 수정하고 DEFAULT_NUMERIC 디렉티브를 사용하여 지정된 정밀도 지점 없이 NUMBER 유형에 사용해야 하는 데이터 유형을 지정할 수 있습니다. 다음 형식을 사용합니다.

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

여기서 POSTGRESQL_NUMERIC_DATA_TYPEinteger, smallint, bigint 중 하나입니다.

:

DEFAULT_NUMERIC integer

REPLACE_COLS 지시어를 사용하여 변환된 스키마의 열 이름을 바꿀 수 있습니다. 이 디렉티브는 쉼표로 구분된 매핑 목록을 예상합니다. 다음 형식을 사용합니다.

REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...

각 항목의 의미는 다음과 같습니다.

  • SOURCE_TABLE_NAME은 이름을 바꾸려는 열이 포함된 테이블의 이름입니다.
  • SOURCE_COLUMN_NAME는 소스에서 이름을 변경하려는 열의 이름입니다.
  • DESTINATION_COLUMN_NAME은 변환된 스키마에서 사용할 열의 새 이름입니다.

:

REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)

REPLACE_TABLES 디렉티브를 사용하여 테이블의 이름을 바꾸거나 새 스키마로 이동할 수 있습니다. 이 디렉티브는 공백으로 구분된 매핑 목록을 예상합니다. 각 사용 사례의 문법에 관한 자세한 내용은 다음 섹션을 펼치세요.

변환된 스키마에서 테이블 이름을 바꾸려면 다음 형식을 사용하세요.

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

각 항목의 의미는 다음과 같습니다.

  • SOURCE_TABLE_NAME는 변환된 스키마에서 이름을 바꾸려는 소스 테이블의 이름입니다.
  • DESTINATION_TABLE_NAME은 변환된 스키마에서 사용할 테이블의 새 이름입니다.

:

REPLACE_TABLES "events:login_events" "users:platform_users"

이 디렉티브를 사용하여 새 테이블 이름에 스키마 접두사를 추가하여 스키마 간에 테이블을 이동할 수 있습니다. 이 메커니즘은 전체 변환 파일에 SCHEMA 지시어를 사용하는 방식과 관계없이 사용할 수 있습니다. 예를 들면 다음과 같습니다.

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

데이터 유형 맞춤설정을 위한 별칭

변환 디렉티브를 사용하여 Database Migration Service가 다양한 데이터 유형을 변환하는 방식을 수정할 때 (예: DATA_TYPE, MODIFY_TYPE 또는 PG_NUMERIC_TYPE 디렉티브 사용) 소스 SQL 데이터 유형 대신 별칭을 사용할 수 있습니다.

Database Migration Service에서 지원하는 데이터 유형 별칭 목록을 보려면 다음 섹션을 펼치세요.

별칭 PostgreSQL 유형으로 변환됨
bigint, int8 BIGINT
bool, boolean BOOLEAN
bytea BYTEA
char, character CHAR
character varying, varchar VARCHAR
date DATE
decimal, numeric DECIMAL
double precision, float8 DOUBLE PRECISION
real float4 REAL
int, integer, int4 INTEGER
int2 SMALLINT
interval INTERVAL
json JSON
smallint SMALLINT
text TEXT
time TIME
timestamp TIMESTAMP
timestamptz TIMESTAMPTZ
timetz TIMETZ
uuid UUID
XML XML

샘플 전환 매핑 파일

지원되는 모든 스키마 변환 지시어를 사용하는 다음 샘플 변환 매핑 파일을 참고하세요.

EXPORT_SCHEMA 1
SCHEMA root

PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC integer
DATA_TYPE NUMBER(4\,0):integer
MODIFY_TYPE events:dates_and_times:TIMESTAMP
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES events:login_events users:platform_users

이 파일을 사용하면 다음과 같은 결과가 표시됩니다.

  • EXPORT_SCHEMA 1는 필수 지시어입니다.
  • SCHEMA root를 사용하면 전환 흐름이 다음과 같이 조정됩니다.
    • Database Migration Service는 root 스키마의 항목에 대해서만 변환을 실행합니다. 다른 스키마는 변환되지 않습니다.
    • 이 파일의 다른 모든 맞춤설정 지시는 root 스키마에 정의된 열과 데이터 유형에만 적용됩니다.
  • PG_INTEGER_TYPE 1를 사용하면 Database Migration Service가 root 스키마의 테이블에 있는 모든 Oracle 숫자 데이터 유형을 ANSI 휴대용 숫자 유형 대신 PostgreSQL용 유형으로 변환합니다.
  • DEFAULT_NUMERIC를 사용하면 Database Migration Service에서 지정된 정밀도 지점이 없는 NUMBER 값을 PostgreSQL INTEGER 유형으로 변환합니다. 이는 root 스키마의 테이블에 있는 NUMBER 값에만 적용됩니다.
  • DATA_TYPE NUMBER(4\,0):integer: Database Migration Service가 특정 NUMBER(4,0) 값을 PostgreSQL INTEGER로 변환합니다.
  • MODIFY_TYPE 디렉티브를 사용하면 Database Migration Service가 실제 소스 열 형식과 관계없이 events 소스 테이블의 dates_and_times 열 데이터를 특히 PostgreSQL DATETIME 유형으로 변환합니다.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)는 Database Migration Service가 변환된 스키마에서 다음 열의 이름을 바꾸도록 합니다.
    • 소스 events 테이블의 dates_and_times 열이 변환된 스키마의 동일한 테이블에서 event_dates로 이름이 바뀝습니다.
    • 소스 users 테이블의 pseudonym 열이 변환된 스키마의 동일한 테이블에서 nickname로 이름이 바뀝습니다.
    이름 변경 작업은 root 스키마의 eventsusers 테이블에만 적용됩니다.
  • REPLACE_TABLES events:login_events users:platform_users는 변환된 스키마에서 다음 테이블의 이름을 바꿉니다.
    • events 테이블의 이름이 login_events로 변경됩니다.
    • users 테이블의 이름이 platform_users로 변경됩니다.
    이름 변경 작업은 root 스키마의 eventsusers 테이블에만 적용됩니다.

기존 변환 작업공간

기존 변환 작업공간은 더 오래되고 제한적인 유형의 변환 작업공간입니다. 기존 변환 워크스페이스는 Gemini로 향상된 변환 기능이나 대화형 SQL 편집기를 지원하지 않습니다. Ora2Pg 마이그레이션 도구로 소스 스키마를 변환하는 데만 사용할 수 있습니다.

이전에는 기존 유형의 전환 워크스페이스를 사용했지만, 이제는 이전 유형의 전환 워크스페이스를 사용하지 않는 것이 좋습니다. 시나리오에서 기존 전환 작업공간을 사용해야 하는 경우 기존 전환 작업공간 사용을 참고하세요.

다음 단계