Oracle에 대한 마이그레이션 사전 요구 사항 구성
Oracle 소스 데이터베이스 에서 마이그레이션 작업을 실행 하려면 데이터베이스 에 일부 구성 변경이 필요할 수 있습니다. Relational Migrator 가 데이터베이스 구성 변경이 필요하다고 판단하면 필요한 변경 사항이 포함된 SQL 스크립트 를 자동으로 생성합니다. 데이터베이스 관리자(DBA )가 이 스크립트 의 명령을 검토 하고 데이터베이스 서버 에서 실행을 수행하도록 하는 것이 좋습니다. Oracle 구성은 마이그레이션 작업 유형에 따라 달라집니다.
스냅샷 마이그레이션 작업은 모든 데이터를 마이그레이션 한 다음 중지합니다.
연속 마이그레이션 작업 은 스냅샷 을 실행 한 다음 CDC 단계로 들어가 데이터 변경 사항을 지속적으로 복제합니다.
지원되는 Oracle 버전에 대한 자세한 내용은 지원되는 데이터베이스 및 버전을 참조하세요.
이 작업에 대하여
Oracle 12c 인스턴스에서 마이그레이션하는 경우 SYSDBA 역할로 명령을 실행해야 합니다.
Oracle 12c에서는 플러그형 데이터베이스 개념이 도입되었습니다. 이러한 명령 중 일부는 PDB(plugable 데이터베이스 )에서 실행 수 있지만
ARCHIVELOG
활성화와 같은 명령은 CDB( 컨테이너/master 데이터베이스 )에서 실행 해야 합니다. 각 아키텍처에 대한 자세한 내용은 컨테이너 데이터베이스 및 플러그형 데이터베이스 개요를 참조하세요.Oracle Express 에디션에서는 추가 로깅이 허용되지 않습니다.
단계
사용자 권한 설정
다음 코드는 Relational Migrator가 Oracle 인스턴스에 연결할 수 있도록 새 Oracle 서비스 계정을 생성합니다. 또는 기존 Oracle 서비스 계정을 사용하여 적절한 권한으로 Relational Migrator에 연결할 수 있습니다.
서비스 계정을 만듭니다:
CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>'; 서비스 계정에 선택 권한을 부여합니다.
서비스 계정에 필요한 권한은 마이그레이션 작업 을 실행 하는 데 사용되는 서비스 계정이 테이블을 소유하고 있는지 여부에 따라 달라집니다. 테이블 소유권을 확인하려면 다음 쿼리 를 실행 합니다.
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>;
사용자 권한 설정
다음 코드는 Relational Migrator가 Oracle 인스턴스에 연결할 수 있도록 새 Oracle 서비스 계정을 생성합니다. 또는 기존 Oracle 서비스 계정을 사용하여 적절한 권한으로 Relational Migrator에 연결할 수 있습니다.
서비스 계정을 만듭니다:
CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>'; 서비스 계정에 선택 권한을 부여합니다.
서비스 계정에 필요한 권한은 마이그레이션 작업 을 실행 하는 데 사용되는 서비스 계정이 테이블을 소유하고 있는지 여부에 따라 달라집니다. 테이블 소유권을 확인하려면 다음 쿼리 를 실행 합니다.
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>;
지속적인 마이그레이션 작업을 실행 수 있도록 서비스 계정에 추가 권한을 부여합니다.
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>;
데이터베이스 수준에서켜기 LogMiner
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;
자세히 알아보기
Relational Migrator 는 오픈 소스 Debezium connector 를 사용하여 행 수준 변경 사항을 캡처합니다. 자세한 내용은 Debezium Oracle 을 참조하세요.
아카이브 로깅 활성화에 대한 자세한 내용은 아카이브 된 리두 로그 관리를 참조하세요.
추가 문제 해결 및 디버깅 정보는 Debezium Oracle 도움말 블로그 포스트 을 참조하세요.