Oracle Database 연결과 CDC
Oracle 커넥터는 Oracle JDBC 21.x 드라이버를 사용합니다. Oracle Database가 12.1보다 이전 버전이면 일반 JDBC 소스에 해당 데이터베이스와 호환되는 드라이버를 직접 업로드합니다.
원천 탐색, 배치 동기화, 증분 수집, Iceberg 동기화, CDC 동기화와 테이블 내보내기를 일반 제공(GA)합니다.
연결과 인증
Data Connection의 +New Source에서 Oracle 소스를 선택합니다. 사용자 이름과 비밀번호로 인증하며 개인 계정보다 서비스 인증 정보가 권장됩니다.
대상 Oracle 호스트 또는 IP에 접근해야 합니다. 기본 포트는 1521이지만 실제 데이터베이스가 다른 포트를 사용할 수 있습니다. Foundry 워커에는 외부 통신 정책을 추가합니다. 사설망에서는 에이전트 프록시가 권장되며 에이전트와 대상 시스템 양쪽에서 연결을 허용해야 합니다. 기존 에이전트 워커는 Legacy 방식입니다.
| 항목 | 필수 여부 | 의미 |
|---|---|---|
Host type | 필수 | hostname 또는 ipv4입니다. |
Hostname | 필수 | Oracle 서버의 호스트 이름 또는 IP 주소입니다. |
Port | 필수 | 기본값은 1521입니다. |
Service identifier type | 필수 | SID 또는 Service name을 선택합니다. |
TLS | 선택 | 기본적으로 활성화되어 데이터베이스 통신을 암호화합니다. |
Username | 필수 | 인증할 사용자입니다. |
Password | 필수 | 인증 비밀번호입니다. |
Client certificates & private key | 선택 | 원천이 요구하면 클라이언트 인증서와 private key를 구성합니다. |
Server certificates | 선택 | 원천의 인증서 체인에 필요한 신뢰 인증서를 구성합니다. |
CDC 준비
CDC는 Debezium으로 행 단위 변경을 읽습니다. 데이터베이스의 일회성 설정, 권한 부여와 테이블별 추가 로깅(Supplemental logging)이 필요합니다.
다음은 사용자 PLTR, 테이블 MY_SCHEMA.MY_TABLE, 테이블스페이스 PALANTIR_DATA를 가정한 구성 예시입니다. 실제 사용자, 테이블과 존재하는 테이블스페이스로 바꾸고 DBA가 권한과 영향을 검토한 뒤 실행합니다. 명령은 데이터베이스 설정과 사용자 권한을 변경합니다.
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER USER PLTR QUOTA UNLIMITED ON PALANTIR_DATA;
GRANT CONNECT, RESOURCE TO PLTR;
GRANT SELECT_CATALOG_ROLE TO PLTR;
GRANT SELECT ON V_$DATABASE TO PLTR;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO PLTR;
GRANT SELECT ON V_$LOGMNR_LOGS TO PLTR;
GRANT SELECT ON V_$LOGMNR_PARAMETERS TO PLTR;
GRANT SELECT ON V_$LOGFILE TO PLTR;
GRANT SELECT ON V_$LOG TO PLTR;
GRANT SELECT ON V_$ARCHIVED_LOG TO PLTR;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO PLTR;
GRANT EXECUTE ON "SYS"."DBMS_FLASHBACK" TO PLTR;
GRANT EXECUTE ON "SYS"."DBMS_LOGMNR_D" TO PLTR;
GRANT EXECUTE ON "SYS"."DBMS_LOGMNR" TO PLTR;
GRANT EXECUTE ON DBMS_LOGMNR TO PLTR;
GRANT SELECT ANY DICTIONARY TO PLTR;
GRANT SELECT ANY TRANSACTION TO PLTR;
GRANT CREATE SESSION TO PLTR;
GRANT LOGMINING TO PLTR;
다음 테이블별 설정은 수집할 각 테이블에 반복합니다.
GRANT SELECT, FLASHBACK ON "MY_SCHEMA"."MY_TABLE" TO PLTR;
ALTER TABLE "MY_SCHEMA"."MY_TABLE" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
테이블을 잠그기 위한 별도 LOCK 객체 권한은 사용하지 않습니다. 다른 스키마의 테이블에 대한 객체 권한이 있으면 해당 테이블 잠금을 수행할 수 있으므로, 이 구성에 광범위한 LOCK ANY TABLE 권한을 추가하지 않습니다.
연결 및 로그 진단
리스너 로그에서는 CDC 커넥터의 연결 시도와 오류를 확인할 수 있습니다. 일반적인 경로 형식은 다음과 같습니다.
$ORACLE_BASE/diag/tnslsnr/<hostname>/<listener_name>/trace/listener.log
예시 사용자 PLTR의 활성 세션은 다음 질의로 확인합니다.
SELECT username, osuser, status, machine, program
FROM v$session
WHERE username = 'PLTR';
V_$ 뷰에 대한 권한 부여가 실패하면 SYS 스키마를 명시하는 구성을 확인합니다.
GRANT SELECT ON SYS.V_$DATABASE TO PLTR;
데이터베이스의 주요 동작과 오류는 alert log에서도 확인합니다. 경로는 버전과 구성에 따라 달라지며 일반적인 형식은 다음과 같습니다.
$ORACLE_BASE/diag/rdbms/<db_unique_name>/<instance_name>/trace/alert_<instance_name>.log
새 변경이 들어오지 않으면 로그 전환 빈도를 확인합니다.
SELECT * FROM v$log_history ORDER BY first_time DESC;
필요하면 ARCHIVE_LAG_TARGET으로 정기적인 로그 전환을 구성합니다.
ARCHIVELOG와 최소 추가 로깅
커넥터에는 ARCHIVELOG 모드가 필요합니다.
SELECT log_mode FROM v$database;
모드를 바꾸려면 데이터베이스를 중단하고 마운트 상태로 다시 시작해야 합니다. 운영 영향을 검토한 유지보수 시간에 DBA가 수행합니다. 아래는 로컬 운영체제의 SYSDBA 인증이 구성된 환경을 가정합니다. 올바른 ORACLE_SID를 설정한 터미널에서 sqlplus /nolog를 실행한 뒤 다음 명령을 사용합니다. 10G와 복구 디렉터리 경로는 예시이며 실제 용량과 경로로 바꿉니다.
CONNECT / AS SYSDBA
ALTER SYSTEM SET db_recovery_file_dest_size = 10G;
ALTER SYSTEM SET db_recovery_file_dest = '/opt/oracle/data/recovery_area' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
최소 추가 로깅의 활성화 여부도 확인합니다.
SELECT supplemental_log_data_min FROM v$database;
가상 테이블
Oracle 가상 테이블은 수동 등록을 일반 제공하며 자동 등록과 원천 시스템으로 연산 위임은 지원하지 않습니다. 일반 데이터셋 동기화와 별도의 경로입니다.
Foundry 워커 소스가 필요하며 에이전트 워커 연결은 지원하지 않습니다. 필요한 양방향 연결과 허용 목록을 구성하고, Code Repositories에서 사용할 경우 가상 테이블과 소스의 코드 사용 설정도 수행합니다. 인증 정보는 사용자 이름과 비밀번호를 사용합니다.