Docs Menu
Docs Home
/
Relational Migrator
/ /

Oracle에 대한 마이그레이션 사전 요구 사항 구성

이 페이지의 내용

  • 이 작업에 대하여
  • 단계
  • 자세히 알아보기

Oracle 소스 데이터베이스에서 동기화 작업을 실행하려면 데이터베이스에 몇 가지 구성 변경이 필요할 수 있습니다. Relational Migrator가 데이터베이스 구성 변경이 필요하다고 판단하면 필요한 변경 사항이 포함된 SQL 스크립트를 자동으로 생성합니다. 데이터베이스 관리자(DBA)에게 이 스크립트의 명령을 검토하고 데이터베이스 서버에서 실행을 수행하도록 하는 것이 좋습니다. Oracle 구성은 동기화 작업 유형에 따라 다릅니다.

  • 스냅샷 동기화 작업은 모든 데이터를 마이그레이션한 다음 중지됩니다.

  • 연속 동기화 작업은 스냅샷을 실행한 다음 CDC 단계로 들어가 데이터 변경 사항을 지속적으로 복제합니다.

지원되는 Oracle 버전에 대한 자세한 내용은 지원되는 데이터베이스 및 버전을 참조하세요.

  • Oracle 12c 인스턴스에서 마이그레이션하는 경우 SYSDBA 역할로 명령을 실행해야 합니다.

  • Oracle 12c에서는 플러그형 데이터베이스 개념이 도입되었습니다. 이러한 명령 중 일부는 PDB(플러그형 데이터베이스)에서 실행할 수 있지만 활성화와 같은 명령은 ARCHIVELOG CDB(컨테이너/마스터 데이터베이스)에서 실행해야 합니다. 각 아키텍처에 대한 자세한 내용은 컨테이너 데이터베이스 및 플러그형 데이터베이스 개요를 참조하세요.

  • Oracle Express 에디션에서는 추가 로깅이 허용되지 않습니다.

1

다음 코드는 Relational Migrator가 Oracle 인스턴스에 연결할 수 있도록 새 Oracle 서비스 계정을 생성합니다. 또는 기존 Oracle 서비스 계정을 사용하여 적절한 권한으로 Relational Migrator에 연결할 수 있습니다.

  1. 서비스 계정을 만듭니다:

    CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
  2. 서비스 계정에 선택 권한을 부여합니다.

    서비스 계정에 필요한 권한은 동기화 작업을 실행하는 데 사용되는 서비스 계정이 테이블을 소유하고 있는지 여부에 따라 달라집니다. 테이블 소유권을 확인하려면 다음 쿼리를 실행합니다.

    SELECT TABLE_NAME, OWNER
    FROM ALL_TABLES
    WHERE TABLE_NAME ='<table_name>'
    ORDER BY OWNER, TABLE_NAME;

    서비스 계정 테이블 소유자인 경우:

    GRANT CREATE SESSION TO <user>;
    GRANT SELECT ON V$DATABASE TO <user>;

    서비스 계정이 테이블 소유자 가 아닌 경우:

    GRANT CREATE SESSION TO <user>;
    GRANT SELECT_CATALOG_ROLE TO <user>;
    GRANT SELECT ANY TABLE TO <user>;
    GRANT SELECT ON V$DATABASE TO <user>;
    GRANT FLASHBACK ANY TABLE TO <user>;
1

다음 코드는 Relational Migrator가 Oracle 인스턴스에 연결할 수 있도록 새 Oracle 서비스 계정을 생성합니다. 또는 기존 Oracle 서비스 계정을 사용하여 적절한 권한으로 Relational Migrator에 연결할 수 있습니다.

  1. 서비스 계정을 만듭니다:

    CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
  2. 서비스 계정에 선택 권한을 부여합니다.

    서비스 계정에 필요한 권한은 동기화 작업을 실행하는 데 사용되는 서비스 계정이 테이블을 소유하고 있는지 여부에 따라 달라집니다. 테이블 소유권을 확인하려면 다음 쿼리를 실행합니다.

    SELECT TABLE_NAME, OWNER
    FROM ALL_TABLES
    WHERE TABLE_NAME ='<table_name>'
    ORDER BY OWNER, TABLE_NAME;

    서비스 계정 테이블 소유자인 경우:

    GRANT CREATE SESSION TO <user>;
    GRANT SELECT ON V$DATABASE TO <user>;

    서비스 계정이 테이블 소유자 가 아닌 경우:

    GRANT CREATE SESSION TO <user>;
    GRANT SELECT_CATALOG_ROLE TO <user>;
    GRANT SELECT ANY TABLE TO <user>;
    GRANT SELECT ON V$DATABASE TO <user>;
    GRANT FLASHBACK ANY TABLE TO <user>;
  1. 지속적인 동기화 작업을 실행할 수 있도록 서비스 계정에 추가 권한을 부여합니다.

    GRANT SET CONTAINER TO <user>;
    GRANT EXECUTE_CATALOG_ROLE TO <user>;
    GRANT SELECT ANY TRANSACTION TO <user>;
    GRANT LOGMINING TO <user>;
    GRANT CREATE TABLE TO <user>;
    GRANT LOCK ANY TABLE TO <user>;
    GRANT CREATE SEQUENCE TO <user>;
    GRANT SELECT ON DBA_TABLESPACES TO <user>;
    GRANT EXECUTE ON DBMS_LOGMNR TO <user>;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO <user>;
    GRANT SELECT ON V$LOG TO <user>;
    GRANT SELECT ON V$LOG_HISTORY TO <user>;
    GRANT SELECT ON V$LOGMNR_LOGS TO <user>;
    GRANT SELECT ON V$LOGMNR_CONTENTS TO <user>;
    GRANT SELECT ON V$LOGMNR_PARAMETERS TO <user>;
    GRANT SELECT ON V$LOGFILE TO <user>;
    GRANT SELECT ON V$ARCHIVED_LOG TO <user>;
    GRANT SELECT ON V$ARCHIVE_DEST_STATUS TO <user>;
    GRANT SELECT ON V$TRANSACTION TO <user>;
2

Oracle에 대해 지속적인 작업을 실행하려면 데이터베이스 수준에서 LogMiner 를 활성화해야 합니다. 다음 코드 블록은 데이터베이스 이름을 대체하여 수동으로 실행할 수 있는 자동 생성 코드의 예입니다.

ALTER SYSTEM SET db_recovery_file_dest_size = 10G;
ALTER SYSTEM SET db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' SCOPE=spfile;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

LogMiner 이(가) 이미 활성화되어 있는지 확인하려면 다음 쿼리를 실행합니다.

SELECT LOG_MODE FROM V$DATABASE;
3
  1. Oracle에 대해 지속적인 동기화 작업을 실행하려면 데이터베이스 수준에서 보완 로깅을 활성화해야 합니다.

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  2. 또한 마이그레이션의 모든 테이블에 대해 보완 로깅을 활성화해야 합니다.

    ALTER TABLE schemaName.tableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    /* Additional ALTER TABLE STATEMENTS... */

돌아가기

MySQL