변환 작업공간 사용

이 문서에서는 Database Migration Service에서 다양한 변환 작업공간을 사용하는 방법을 설명합니다.

내장 편집기로 변환 작업공간 사용하기

변환 작업공간은 소스 데이터베이스의 스키마 및 객체를 대상 데이터베이스와 호환되는 형식으로 변환하는 데 도움이 됩니다. 작업공간을 사용하면 전체 변환 구조를 검토, 수정, 적용할 수 있지만 소스 데이터베이스의 데이터는 변경되지 않습니다.

소스 스키마 및 코드 변환

워크스페이스를 설정하면 Database Migration Service에서 소스 데이터베이스 스키마 및 코드 객체의 초기 가져오기를 실행한 후 변환할 객체를 선택합니다 (나중에 객체를 추가할 수 있음). 이제 이러한 객체가 Oracle 탭에 표시됩니다. PostgreSQL용 AlloyDB 초안 패널에는 Database Migration Service에서 생성한 결과 PostgreSQL 스키마와 코드가 표시됩니다.

이 시점에서 Database Migration Service는 대상 인스턴스의 실제 객체가 아닌 예상되는 전환 후 객체를 표시합니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 사용 가능한 변환 작업공간 목록에서 작업할 변환 작업공간을 선택합니다.

    변환 작업공간 편집기가 열립니다.

  3. 선택사항: 생성된 SQL에 대한 추가 매핑을 제공하기 위해 Ora2Pg 구성 파일을 업로드합니다.

    1. 구성 편집 > 구성 파일로 매핑 맞춤설정을 클릭합니다.

    2. Ora2Pg 구성 파일 상자에서 찾아보기를 클릭하고 시스템 파일 선택 도구를 사용하여 구성 파일을 선택합니다.

    3. 파일 추가 > 생성을 클릭합니다.

  4. 선택사항: 이미 변환된 스키마와 코드가 있지만 변환을 다시 실행하기 전에 생성된 SQL을 수동으로 조정하려면 다음 단계를 따르세요.

    1. Oracle 패널에서 생성된 SQL을 조정할 객체를 선택합니다.

    2. SQL 탭으로 이동하여 문을 검사합니다.

    3. 시나리오에 맞게 스크립트를 조정하고 저장을 클릭합니다.

  5. 모든 조정을 완료한 후 소스 변환을 클릭합니다.

  6. 확인 대화상자에서 변환을 클릭합니다.

소스 스키마에서 객체 삭제

객체를 소스 스키마에서 삭제하여 변환에서 제외합니다. 필요한 경우 나중에 삭제된 객체를 추가할 수 있습니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 사용 가능한 변환 작업공간 목록에서 작업할 변환 작업공간을 선택합니다.

    변환 작업공간 편집기가 열립니다.

  3. Oracle 탭에서 삭제하려는 객체 옆에 있는 더보기 > 삭제를 선택합니다.

  4. 객체 삭제 확인 대화상자에서 삭제를 클릭합니다.

  5. PostgreSQL용 AlloyDB 초안 탭에 업데이트를 반영하도록 소스를 변환합니다.

소스 스키마에 객체 추가

이전에 소스 스키마에서 삭제된 객체를 추가하여 변환에 추가할 수 있습니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 사용 가능한 변환 작업공간 목록에서 작업할 변환 작업공간을 선택합니다.

    변환 작업공간 편집기가 열립니다.

  3. Oracle 탭에서 객체 추가를 클릭합니다.

  4. 객체 추가 섹션에서 소스 목록을 사용하여 소스 스키마에 추가할 모든 항목을 선택합니다.

    필터 필드를 사용하여 표시되는 객체 수를 줄일 수 있습니다. 소스 스키마 보기에서 객체 필터링을 참고하세요.

  5. 객체 추가를 클릭합니다.

  6. PostgreSQL용 AlloyDB 초안 탭에 업데이트를 반영하도록 소스를 변환합니다.

소스 스키마 및 코드 스냅샷 가져오기

언제든지 소스 데이터베이스에서 스키마와 코드를 변환 작업공간으로 가져올 수 있습니다. 소스를 가져오면 전환에서 새 객체를 추가하거나 기존 객체를 업데이트할 수 있습니다.

업데이트된 데이터베이스 스키마와 코드를 가져오면 맞춤 매핑을 명시적으로 삭제하지 않는 한 변환 작업공간에 있는 추가 매핑이 Ora2Pg 구성 파일에서 재설정되지 않습니다.

또한 소스를 가져와도 코드 객체의 SQL 변경사항이 재정의되지 않습니다. 이러한 변경사항은 객체 수준에서 직접 재설정할 수 있습니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 구성 수정 > 소스 스키마 스냅샷 다시 가져오기를 클릭합니다.

  3. 대화상자에서 다음을 수행합니다.

    1. (선택사항) 커스텀 매핑 재설정을 선택하여 기존 커스텀 매핑 및 DDL 수정사항을 삭제합니다.
    2. 스키마 스냅샷 가져오기를 클릭합니다.

    Database Migration Service가 소스 데이터베이스에서 새 스냅샷을 가져옵니다. 작업이 완료되면 소스를 변환합니다.

변환 결과 검토

소스 변환을 실행한 후 워크스페이스 편집기 영역에서 변환 결과와 변환된 각 개별 객체의 발생 가능한 문제를 검토할 수 있습니다. Google Cloud CLI를 사용하여 모든 결과와 문제를 일괄적으로 텍스트 파일에 저장할 수도 있습니다.

콘솔

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 작업할 변환 작업공간의 표시 이름을 클릭합니다.

    변환 작업공간 편집기가 열립니다.

  3. Oracle 탭을 선택하고 트리 보기 표에서 전환 결과를 검토할 객체를 찾습니다.

  4. 객체를 선택합니다. SQL전환 문제 탭을 사용하여 전환을 검토합니다.

gcloud

Google Cloud CLI를 사용하면 모든 전환 결과 또는 문제를 터미널에 출력할 수 있습니다. 더 편리하게 일괄 객체를 검토할 수 있도록 출력을 파일로 리디렉션합니다.

전환 결과 목록 가져오기

gcloud CLI는 터미널에 데이터 정의 언어 (DDL) 문 형식으로 변환 결과를 표시합니다. 변환 결과를 파일에 저장하려면 다음 명령어를 실행합니다.

  gcloud database-migration conversion-workspaces describe-ddls \
  CONVERSION_WORKSPACE_ID \
  --region=REGION_ID \
  > OUTPUT_FILE_PATH

다음과 같이 바꿉니다.

  • CONVERSION_WORKSPACE_ID를 변환 작업공간 식별자로 바꿉니다. 변환 작업공간 식별자를 검색하는 방법에 관한 자세한 내용은 변환 작업공간 세부정보 보기를 참고하세요.
  • REGION_ID을 변환 워크스페이스가 있는 리전의 이름으로 바꿉니다.
  • OUTPUT_FILE_PATH를 출력을 저장할 텍스트 파일의 경로로 바꿉니다.

    예:

    gcloud database-migration conversion-workspaces describe-issues \
    my-conversion-workspace \
    --region=us-central1 \
    > ./my-conversion-issues.txt
    

    결과:

    스키마 변환 결과는 텍스트 형식으로 저장되며 첫 번째 줄에는 DDLs가 표시되고 후속 줄에는 SQL 문이 표시됩니다.

    DDLs
    CREATE SCHEMA IF NOT EXISTS "SCHEMA1";
    ALTER TABLE "SCHEMA1"."EMPLOYEES" ADD CONSTRAINT PK_ID PRIMARY KEY ("ID");
    CREATE OR REPLACE FUNCTION mockschema.func_test_datatype(str1 VARCHAR(65000))
      RETURNS DECIMAL
      LANGUAGE plpgsql
      AS $$
        DECLARE
          str2 VARCHAR(100);
        BEGIN
          SELECT
              employees.first_name
            INTO STRICT
              STR2
            FROM
              mockschema.employees
            WHERE employees.employee_id = CAST(FUNC_TEST_DATATYPE.str1 as DECIMAL)
          ;
          RAISE NOTICE '%', concat('Input : ', FUNC_TEST_DATATYPE.str1, ' Output : ', str2);
          RETURN 0;
        END;
      $$;
    CREATE OR REPLACE PROCEDURE greetings AS BEGIN dbms_output.put_line('Hello World!'); END;
    CREATE SYNONYM TABLE "SCHEMA1"."SYNONYM1" ON "SCHEMA1"."EMPLOYEES";
    CREATE OR REPLACE VIEW "SCHEMA1"."VIEW1" AS SELECT * FROM JOBS;
    

전환 문제 목록 가져오기

변환 문제를 파일에 저장하려면 다음 명령어를 실행합니다.

  gcloud database-migration conversion-workspaces describe-issues \
  CONVERSION_WORKSPACE_ID \
  --region=REGION_ID \
  > OUTPUT_FILE_PATH

다음과 같이 바꿉니다.

  • CONVERSION_WORKSPACE_ID를 변환 작업공간 식별자로 바꿉니다. 변환 작업공간 식별자를 검색하는 방법에 관한 자세한 내용은 변환 작업공간 세부정보 보기를 참고하세요.
  • REGION_ID을 변환 워크스페이스가 있는 리전의 이름으로 바꿉니다.
  • OUTPUT_FILE_PATH를 출력을 저장할 텍스트 파일의 경로로 바꿉니다.

예:

  gcloud database-migration conversion-workspaces describe-issues \
  my-conversion-workspace \
  --region=us-central1 \
  > ./my-conversion-issues.txt

결과:

워크스페이스에 포함된 모든 전환 문제는 텍스트 형식으로 저장되며, 첫 번째 줄에는 열 헤더가 포함되고 이후 줄에는 별도의 전환 문제가 포함됩니다.

  PARENT   NAME               ENTITY_TYPE       ISSUE_TYPE  ISSUE_SEVERITY  ISSUE_CODE  ISSUE_MESSAGE
  SCHEMA1  EMPLOYEES          TABLE             DDL         ERROR           500         unable to parse DDL.
  SCHEMA1  EMPLOYEES          TABLE             CONVERT     WARNING         206         no conversion done.
  SCHEMA1  STORED_PROCEDURE1  STORED_PROCEDURE  DDL         ERROR           500         invalid DDL.
  SCHEMA1  SYNONYM1           SYNONYM           CONVERT     WARNING         206         synonym warning message.

변환 문제 해결

Database Migration Service에서 전체 소스를 자동으로 변환하지 못할 수도 있습니다.

대부분의 Oracle 객체의 경우 Database Migration Service에서 직접 변환 편집기를 사용하여 생성된 SQL을 조정할 수 있습니다. 다른 경우에는 소스 데이터베이스에서 직접 객체를 변경한 다음 소스 스냅샷을 다시 가져와야 할 수 있습니다.

Database Migration Service에서 변환 워크스페이스에서 직접 수정할 수 있는 객체의 전체 목록은 수정 가능한 Oracle 객체를 참고하세요.

실시간 편집을 지원하는 객체에서 발생한 변환 문제를 해결하려면 다음 단계를 따르세요.

  1. 전환 결과를 검토하고 발생할 수 있는 문제를 파악합니다.

    Google Cloud 콘솔을 사용하여 개별 객체를 검토하거나 gcloud CLI를 사용하여 모든 객체를 일괄적으로 검토할 수 있습니다.

  2. PostgreSQL용 AlloyDB 초안 탭에서 SQL 편집기를 사용하여 생성된 코드를 업데이트합니다.

  3. 애플리케이션 테스트: Database Migration Service가 코드를 대상 데이터베이스에 올바르게 적용할 수 있는지 확인합니다.

워크스페이스 편집기에서 지원되지 않는 객체와 관련하여 발생한 변환 문제를 해결하려면 다음 중 하나를 실행합니다.

  • 소스를 업데이트합니다.

    1. 소스 데이터베이스에서 직접 스키마와 코드를 업데이트합니다.
    2. Database Migration Service로 업데이트된 소스를 가져옵니다.
    3. 소스를 다시 변환하고 문제가 지속되는지 확인합니다.
  • Ora2Pg 구성 도구를 사용하여 추가 매핑을 제공합니다.

    1. Ora2Pg를 구성하고 결함이 있는 객체의 매핑 파일을 만듭니다.
    2. 구성 파일을 작업공간에 추가합니다. 변환 작업공간 수정을 참고하세요.
  • 소스 탭에서 객체를 삭제하고 스키마를 다시 변환해 보세요.

  • 대상 인스턴스에서 직접 코드를 수정합니다. 매핑에 영향을 줄 수 있는 객체는 업데이트하지 마세요.

대상에 애플리케이션 테스트

대상 데이터베이스에 스키마를 적용하기 전에 먼저 대상 Cloud SQL 인스턴스에 영향을 미치지 않는 테스트 애플리케이션을 실행할 수 있습니다. 스키마 애플리케이션을 테스트하면 발생할 수 있는 문제를 사전에 확인하는 데 도움이 됩니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 작업할 변환 작업공간의 표시 이름을 클릭합니다.

    변환 작업공간 편집기가 열립니다.

  3. 대상에 적용 > 테스트 (권장)를 클릭합니다.

    대상 데이터베이스에 스키마를 적용하는 마법사가 표시됩니다.

  4. 대상 정의 섹션에서 대상 데이터베이스를 가리키는 연결 프로필을 선택합니다.

  5. 정의하고 계속하기를 클릭합니다.

  6. 객체 선택 및 애플리케이션 테스트 섹션에서 대상 데이터베이스에 대해 테스트할 데이터베이스 항목의 스키마를 선택합니다.

    필터 필드를 사용하여 표시되는 객체 수를 줄일 수 있습니다. 소스 스키마 보기에서 객체 필터링을 참고하세요.

  7. 애플리케이션 테스트를 클릭합니다.

    PostgreSQL용 AlloyDB 초안 탭에서 애플리케이션 상태를 검토할 수 있습니다.

대상에 스키마 적용

대상 데이터베이스에서 사용할 스키마가 요구사항 및 매핑에 따라 변환되면 결과를 대상 데이터베이스에 적용할 수 있습니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 작업할 변환 작업공간의 표시 이름을 클릭합니다.

    변환 작업공간 편집기가 열립니다.

  3. 대상에 적용 > 적용을 클릭합니다.

    대상 데이터베이스에 스키마를 적용하는 마법사가 표시됩니다.

  4. 대상 정의 섹션에서 대상 데이터베이스를 가리키는 연결 프로필을 선택합니다.

  5. 정의하고 계속하기를 클릭합니다.

  6. 객체 검토 및 대상에 변환 적용 섹션에서 대상 데이터베이스에 만들 데이터베이스 항목의 스키마를 선택합니다.

    필터 필드를 사용하여 표시되는 객체 수를 줄일 수 있습니다. 소스 스키마 보기에서 객체 필터링을 참고하세요.

  7. 배송지에 적용을 클릭합니다.

    PostgreSQL용 AlloyDB 초안 탭에서 애플리케이션 상태를 검토할 수 있습니다.

변환 편집기에서 마이그레이션 작업 만들기

변환 편집기 인터페이스에서 직접 변환 작업공간을 사용하는 마이그레이션 작업을 만들 수 있습니다.

  1. Google Cloud 콘솔에서 변환 작업공간으로 이동합니다.

    전환 작업공간으로 이동

  2. 작업할 변환 작업공간의 표시 이름을 클릭합니다.

    변환 작업공간 편집기가 열립니다.

  3. 마이그레이션 작업 만들기를 클릭합니다.

  4. 마이그레이션 작업 만들기에 설명된 표준 마이그레이션 작업 단계를 진행합니다.

소스 스키마 뷰에서 객체 필터링

데이터베이스 스키마에는 종종 수천 개의 객체가 포함되어 있어 변환 작업을 분할하기가 어렵습니다. 스키마 스냅샷의 객체를 소스 스키마 뷰에 추가할 때 필터를 사용하여 표시되는 객체 수를 제한할 수 있습니다. 필터를 사용하면 더 세부적으로 객체를 추가하고 스키마의 일부 하위 집합을 변환하는 데 집중할 수 있습니다.

소스 스키마 뷰에 객체를 추가할 때는 필터링된 뷰를 사용하세요.

  1. 필터 필드에서 다음 필터링 방법 중 하나를 사용합니다.

    • 속성 목록에서 다음 자동 추천 옵션 중 하나를 선택합니다.

      • 객체 이름: 이름(예: ADMIN)으로 객체를 필터링합니다.
      • 객체 유형: 함수 또는 테이블과 같은 여러 유형으로 객체를 필터링합니다.
      • 전환 상태: 조치 필요 또는 문제 없음과 같은 전환 상태를 기준으로 객체를 필터링합니다.

      필터 속성을 논리 연산자와 결합할 수 있습니다.

    • 쿼리를 입력합니다. 예를 들면 type=table입니다.

      필터링 구문에 관한 자세한 내용은 지원되는 필터링 구문을 참고하세요.

  2. 소스 스키마 뷰에 추가할 객체를 선택합니다.

지원되는 필터링 문법

기본 텍스트 검색을 사용하여 이름으로 객체를 필터링하거나 전용 type 속성을 사용할 수 있습니다. 두 접근 방식 모두 필터링을 위한 Google API 공식 사양을 지원하므로 와일드 카드와 함께 리터럴을 사용할 수 있으며 논리 및 비교 연산자도 사용할 수 있습니다.

텍스트를 사용하여 이름으로 객체를 필터링합니다. 이 접근 방식은 대소문자를 구분하며 와일드 카드를 지원합니다.

:

*JOB* 쿼리는 와일드 카드를 사용하여 JOB 하위 문자열이 포함된 항목을 검색합니다. 필터링된 보기는 일부 테이블과 하나의 저장 프로시저를 반환합니다.

이름으로 객체를 필터링한 결과의 예시 스크린샷
type 속성을 사용하여 필터링

Database Migration Service에서 지원되는 모든 표준 유형을 기준으로 객체를 필터링할 수 있습니다.

type 속성은 등호 (=) 및 부등호 (!=) 연산자를 사용하여 다음 리터럴을 지원합니다. database, schema, table, column, index, sequence, stored_procedure, function, view, synonym, materialized_view, udt, constraint, database_package, trigger, event_trigger

:

type=table 필터는 스키마에 있는 테이블만 반환합니다.

유형 속성별로 객체를 필터링한 결과의 예시 스크린샷
필터링 조건 결합

논리 연산자와 결합하여 여러 조건을 지정할 수 있습니다.

예를 들어 이름에 JOB 또는 EMPLOYEE 하위 문자열이 포함된 테이블만 검색하려면 다음 쿼리를 사용하세요.

  type=table AND (*JOB* OR *EMPLOYEE*)

따라서 필터에 일치하는 모든 테이블이 표시됩니다.

유형 및 이름 속성 조합으로 객체를 필터링하는 예시 결과의 스크린샷

기존 변환 작업공간 사용

기존 변환 작업공간은 Ora2Pg 구성 파일을 연결 프로필과 페어링하는 데 사용되는 읽기 전용 작업공간입니다.

소스 스키마 변환

기존 작업공간의 경우 소스 데이터베이스에서 직접 Ora2Pg 마이그레이션 도구를 사용하여 스키마를 변환합니다. 스키마 변환은 Database Migration Service 외부에서 관리됩니다. 스키마 변환 준비를 참고하세요.

기존 변환 작업공간을 만들면 Database Migration Service에서 소스 스키마 변환을 실행합니다. 매핑을 업데이트하려면 업데이트된 구성 파일로 기존 워크스페이스를 다시 만듭니다.

대상에 적용

Ora2Pg 구성 파일을 만들고 작업공간을 만든 후에는 생성된 코드를 대상 데이터베이스에 직접 적용해야 합니다. 변환을 변경해야 하는 경우 Ora2Pg 구성 파일을 조정하고 새 설정으로 기존 작업공간을 다시 만듭니다.