Oracle에 대한 마이그레이션 사전 요구 사항 구성
Oracle 소스 데이터베이스에서 동기화 작업을 실행하려면 데이터베이스에 몇 가지 구성 변경이 필요할 수 있습니다. Relational Migrator가 데이터베이스 구성 변경이 필요하다고 판단하면 필요한 변경 사항이 포함된 SQL 스크립트를 자동으로 생성합니다. 데이터베이스 관리자(DBA)에게 이 스크립트의 명령을 검토하고 데이터베이스 서버에서 실행을 수행하도록 하는 것이 좋습니다. Oracle 구성은 동기화 작업 유형에 따라 다릅니다.
스냅샷 동기화 작업은 모든 데이터를 마이그레이션한 다음 중지됩니다.
연속 동기화 작업은 스냅샷을 실행한 다음 CDC 단계로 들어가 데이터 변경 사항을 지속적으로 복제합니다.
지원되는 Oracle 버전에 대한 자세한 내용은 지원되는 데이터베이스 및 버전을 참조하세요.
이 작업에 대하여
Oracle 12c 인스턴스에서 마이그레이션하는 경우 SYSDBA 역할로 명령을 실행해야 합니다.
Oracle 12c에서는 플러그형 데이터베이스 개념이 도입되었습니다. 이러한 명령 중 일부는 PDB(플러그형 데이터베이스)에서 실행할 수 있지만 활성화와 같은 명령은
ARCHIVELOG
CDB(컨테이너/마스터 데이터베이스)에서 실행해야 합니다. 각 아키텍처에 대한 자세한 내용은 컨테이너 데이터베이스 및 플러그형 데이터베이스 개요를 참조하세요.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 도움말 블로그 게시물을 참조하세요.