변환 작업공간을 사용하면 소스 데이터베이스의 스키마 및 객체를 대상 데이터베이스와 호환되는 SQL 문법으로 변환할 수 있습니다. 이 페이지에서는 Database Migration Service 변환 작업공간에 대한 개요를 제공합니다.
자동 코드 및 스키마 변환에서 지원되는 객체에는 자동 스키마 변환에 지원되는 Oracle 객체가 나와 있습니다.
대화형 SQL 편집기에서는 변환 작업공간 편집기에서 직접 수정할 수 있는 객체를 설명합니다.
Gemini 지원 변환 기능에서는 생성형 AI 지원을 통합하여 스키마 변환 프로세스를 신속하게 처리하는 방법을 살펴봅니다.
전환 매핑 파일 섹션에서는 자동 스키마 변환의 규칙을 재정의하는 데 사용할 수 있는 맞춤설정 디렉티브에 관한 개요를 제공합니다.
기존 변환 워크스페이스에서는 대화형 SQL 편집기를 지원하지 않는 기존 워크스페이스를 설명합니다.
자동 스키마 변환을 사용하든 변환 매핑 파일을 추가로 만들든 관계없이 Oracle 이전에서 지원되지 않는 특정 데이터 유형이 있습니다. 자세한 내용은 알려진 데이터 유형 제한사항을 참고하세요.
자동화된 코드 및 스키마 변환
변환 작업공간을 만들면 Database Migration Service에서 자동으로 초기 스키마 변환을 실행합니다. 자동 스키마 변환은 사용 가능한 Oracle 데이터베이스 객체의 매우 구체적인 하위 집합을 지원합니다.
자동 코드 변환은 다음 Oracle 데이터베이스 객체를 지원합니다.
지원되는 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
EXPORT_SCHEMA
는 모든 변환 매핑 파일에 필수 지시문입니다. Database Migration Service에서는 소스 스키마가 올바른 대상 스키마로 변환되도록 하려면 이 안내가 필요합니다.
전환 매핑 파일에 다음 줄이 포함되어 있는지 확인합니다.
EXPORT_SCHEMA 1
SCHEMA
Database Migration Service는 변환 지시어로 수정해야 하는 객체가 포함된 스키마를 결정할 수 있어야 합니다.
SCHEMA
지시문을 사용하면 전환 흐름이 다음과 같이 조정됩니다.
- Database Migration Service는 이 스키마 만 변환합니다. 단일 변환 워크스페이스에서 다른 스키마를 변환해야 하는 경우 스키마가 다른 여러 파일을 업로드해야 합니다.
- 파일에 제공된 다른 모든 맞춤설정 지시는 이 특정 스키마의 객체에만 적용됩니다.
다음 형식을 사용합니다.
SCHEMASCHEMA_NAME
여기서 SCHEMA_NAME은 소스 데이터베이스의 스키마 이름입니다.
- 전환 매핑 파일에 이 지시어를 포함하면 모든 맞춤설정이 이 특정 스키마에 포함된 객체에만 적용됩니다. 다른 스키마의 객체를 맞춤설정하려면 여러 전환 매핑 파일을 만들어 전환 워크스페이스에 업로드해야 합니다.
- 이 디렉티브를 건너뛰면 다른 전환 디렉티브에 의해 수정된 객체의 명시적 스키마 이름을 제공해야 합니다.
예를 들어
REPLACE_TABLES
디렉티브에SOURCE_TABLE_NAME
를 사용하는 대신"SCHEMA_NAME.SOURCE_TABLE_NAME"
를 사용해야 합니다.
DATA_TYPE
이 디렉티브를 사용하여 Oracle과 PostgreSQL 구문 간에 지원되는 모든 데이터 유형을 명시적으로 매핑할 수 있습니다. 이 디렉티브는 쉼표로 구분된 매핑 목록을 예상합니다. 전체 정의를 한 줄에 제공해야 하지만 구성 파일에는 여러 개의 DATA_TYPE
디렉티브를 포함합니다. 다음 형식을 사용합니다.
DATA_TYPEORACLE_DATA_TYPE1 :PGSQL_DATA_TYPE1 DATA_TYPEORACLE_DATA_TYPE2 :PGSQL_DATA_TYPE2 ...
여기서 ORACLE_DATA_TYPE 및 PGSQL_DATA_TYPE는 마이그레이션에 사용하는 각 Oracle 및 PostgreSQL 버전에서 지원하는 데이터 유형입니다. 지원되는 버전에 관한 자세한 내용은 시나리오 개요를 참고하세요.
예:
DATA_TYPE REAL:double precision,SMALLINT:integer
Oracle 및 PostgreSQL 데이터 유형에 관한 자세한 내용은 다음을 참고하세요.
- Oracle 문서의 Oracle 데이터 유형
- PostgreSQL 문서의 PostgreSQL 데이터 유형
MODIFY_TYPE
MODIFY_TYPE
디렉티브를 사용하면 Database Migration Service가 소스 테이블의 특정 열을 어떤 데이터 유형으로 변환할지 제어할 수 있습니다.
이 디렉티브는 쉼표로 구분된 매핑 목록을 예상합니다.
전체 정의를 한 줄에 제공해야 하지만 구성 파일에 여러 개의 MODIFY_TYPE
디렉티브를 포함합니다.
다음 형식을 사용합니다.
MODIFY_TYPESOURCE_TABLE_NAME1 :COLUMN_NAME :EXPECTED_END_RESULT_DATA_TYPE MODIFY_TYPESOURCE_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
PG_INTEGER_TYPE
기본적으로 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
PG_NUMERIC_TYPE
정밀도 및 소수 자릿수 (NUMBER(p,s)
) 유형이 있는 모든 NUMBER
를 PostgreSQL real
또는 float
유형으로 변환하려면 이 디렉티브를 1
로 설정하세요 (정밀도 자릿수에 따라 다름).
이 디렉티브를 0
로 설정하면 NUMBER(p,s)
값이 정확한 원래 값을 유지하고 내부 PostgreSQL 데이터 유형을 사용합니다.
전환 매핑 파일에 다음 설정을 포함합니다.
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
정밀도가 없는 NUMBER
의 기본 변환은
PG_INTEGER_TYPE
지시문도 사용하는지에 따라 달라집니다.
PG_INTEGER
디렉티브를 사용하면 정밀도가 없는NUMBER
가DECIMAL
값으로 변환됩니다.PG_INTEGER
디렉티브를 사용하지 않으면 정밀도가 없는NUMBER
가BIGINT
값으로 변환됩니다.
이 동작을 수정하고 DEFAULT_NUMERIC
디렉티브를 사용하여 지정된 정밀도 지점 없이 NUMBER
유형에 사용해야 하는 데이터 유형을 지정할 수 있습니다.
다음 형식을 사용합니다.
DEFAULT_NUMERICPOSTGRESQL_NUMERIC_DATA_TYPE
여기서 POSTGRESQL_NUMERIC_DATA_TYPE은 integer
, smallint
, bigint
중 하나입니다.
예:
DEFAULT_NUMERIC integer
REPLACE_COLS
REPLACE_COLS
지시어를 사용하여 변환된 스키마의 열 이름을 바꿀 수 있습니다. 이 디렉티브는 쉼표로 구분된 매핑 목록을 예상합니다.
다음 형식을 사용합니다.
REPLACE_COLSSOURCE_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
디렉티브를 사용하여 테이블의 이름을 바꾸거나 새 스키마로 이동할 수 있습니다. 이 디렉티브는 공백으로 구분된 매핑 목록을 예상합니다. 각 사용 사례의 문법에 관한 자세한 내용은 다음 섹션을 펼치세요.
테이블 이름 바꾸기
변환된 스키마에서 테이블 이름을 바꾸려면 다음 형식을 사용하세요.
REPLACE_TABLESSOURCE_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
스키마에 정의된 열과 데이터 유형에만 적용됩니다.
- Database Migration Service는
PG_INTEGER_TYPE 1
를 사용하면 Database Migration Service가root
스키마의 테이블에 있는 모든 Oracle 숫자 데이터 유형을 ANSI 휴대용 숫자 유형 대신 PostgreSQL용 유형으로 변환합니다.DEFAULT_NUMERIC
를 사용하면 Database Migration Service에서 지정된 정밀도 지점이 없는NUMBER
값을 PostgreSQLINTEGER
유형으로 변환합니다. 이는root
스키마의 테이블에 있는NUMBER
값에만 적용됩니다.DATA_TYPE NUMBER(4\,0):integer
: Database Migration Service가 특정NUMBER(4,0)
값을 PostgreSQLINTEGER
로 변환합니다.MODIFY_TYPE
디렉티브를 사용하면 Database Migration Service가 실제 소스 열 형식과 관계없이events
소스 테이블의dates_and_times
열 데이터를 특히 PostgreSQLDATETIME
유형으로 변환합니다.REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
는 Database Migration Service가 변환된 스키마에서 다음 열의 이름을 바꾸도록 합니다.- 소스
events
테이블의dates_and_times
열이 변환된 스키마의 동일한 테이블에서event_dates
로 이름이 바뀝습니다. - 소스
users
테이블의pseudonym
열이 변환된 스키마의 동일한 테이블에서nickname
로 이름이 바뀝습니다.
root
스키마의events
및users
테이블에만 적용됩니다.- 소스
REPLACE_TABLES events:login_events users:platform_users
는 변환된 스키마에서 다음 테이블의 이름을 바꿉니다.events
테이블의 이름이login_events
로 변경됩니다.users
테이블의 이름이platform_users
로 변경됩니다.
root
스키마의events
및users
테이블에만 적용됩니다.
기존 변환 작업공간
기존 변환 작업공간은 더 오래되고 제한적인 유형의 변환 작업공간입니다. 기존 변환 워크스페이스는 Gemini로 향상된 변환 기능이나 대화형 SQL 편집기를 지원하지 않습니다. Ora2Pg 마이그레이션 도구로 소스 스키마를 변환하는 데만 사용할 수 있습니다.
이전에는 기존 유형의 전환 워크스페이스를 사용했지만, 이제는 이전 유형의 전환 워크스페이스를 사용하지 않는 것이 좋습니다. 시나리오에서 기존 전환 작업공간을 사용해야 하는 경우 기존 전환 작업공간 사용을 참고하세요.
다음 단계
- 대화형 변환 작업공간 사용에 대해 알아보려면 대화형 변환 작업공간 만들기를 참고하세요.