Oracle Database@AWS에서 제로 ETL 통합을 위한 사전 조건
제로 ETL 통합을 설정하기 전에 다음 사전 조건을 충족하는지 확인합니다.
일반적인 사전 요구 사항
Oracle Database@AWS 설정 - 프로비저닝되고 실행 중인 VM 클러스터가 하나 이상 있는지 확인합니다.
-
제로 ETL이 활성화된 통합 - VM 클러스터 또는 Autonomous VM 클러스터가 제로 ETL이 활성화된 ODB 네트워크와 연결되어 있는지 확인합니다.
지원되는 Oracle 데이터베이스 버전 - Oracle Database 19c(Oracle Exadata) 또는 Oracle Database 19c/23ai(전용 인프라의 Autonomous 데이터베이스)를 사용해야 합니다.
동일한 AWS 리전 - 소스 Oracle 데이터베이스와 대상 Amazon Redshift 클러스터가 동일한 AWS 리전에 있어야 합니다.
Oracle 데이터베이스 사전 조건
다음 설정으로 Oracle 데이터베이스를 구성할 수 있습니다.
복제 사용자 설정
복제하려는 각 플러그형 데이터베이스(PDB)에 전용 복제 사용자를 생성합니다.
Oracle Exadata의 경우 - 보안 암호로
ODBZEROETLADMIN사용자를 생성합니다.전용 인프라의 Autonomous 데이터베이스의 경우 - 기존
GGADMIN사용자를 사용합니다.
복제 사용자에게 다음 권한을 부여합니다.
-- For Autonomous Database on Dedicated Infrastructure only ALTER USER GGADMIN ACCOUNT UNLOCK; ALTER USER GGADMIN IDENTIFIED BYggadmin-password; -- For Oracle Exadata only GRANT SELECT ONany-replicated-tableTO "ODBZEROETLADMIN"; GRANT LOGMINING to "ODBZEROETLADMIN"; -- Grant the following permissions to all services. -- For Oracle Exadata, use the ODBZEROETLADMIN user. For Autonomous Database on Dedicated Infrastructure, -- use the GGADMIN user. GRANT CREATE SESSION TO "ODBZEROETLADMIN"; GRANT SELECT ANY TRANSACTION TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$ARCHIVED_LOG TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$LOG TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$LOGFILE TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$LOGMNR_LOGS TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$LOGMNR_CONTENTS TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$DATABASE TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$THREAD TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$PARAMETER TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$NLS_PARAMETERS TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$TIMEZONE_NAMES TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$TRANSACTION TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$CONTAINERS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_INDEXES TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_OBJECTS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_TABLES TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_USERS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_CATALOG TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_CONSTRAINTS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_CONS_COLUMNS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_TAB_COLS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_IND_COLUMNS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_LOG_GROUPS TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_TAB_PARTITIONS TO "ODBZEROETLADMIN"; GRANT SELECT ON SYS.DBA_REGISTRY TO "ODBZEROETLADMIN"; GRANT SELECT ON SYS.OBJ$ TO "ODBZEROETLADMIN"; GRANT SELECT ON DBA_TABLESPACES TO "ODBZEROETLADMIN"; GRANT SELECT ON DBA_OBJECTS TO "ODBZEROETLADMIN"; GRANT SELECT ON SYS.ENC$ TO "ODBZEROETLADMIN"; GRANT SELECT ON GV_$TRANSACTION TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$DATAGUARD_STATS TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$DATABASE_INCARNATION TO "ODBZEROETLADMIN"; GRANT EXECUTE ON SYS.DBMS_CRYPTO TO "ODBZEROETLADMIN"; GRANT SELECT ON SYS.DBA_DIRECTORIES TO "ODBZEROETLADMIN"; GRANT SELECT ON ALL_VIEWS TO "ODBZEROETLADMIN"; GRANT SELECT ON DBA_SEGMENTS TO "ODBZEROETLADMIN"; GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO "ODBZEROETLADMIN"; GRANT CREATE ANY DIRECTORY TO "ODBZEROETLADMIN"; GRANT EXECUTE ON DBMS_FILE_TRANSFER TO "ODBZEROETLADMIN"; GRANT EXECUTE ON DBMS_FILE_GROUP TO "ODBZEROETLADMIN"; GRANT EXECUTE on DBMSLOGMNR to "ODBZEROETLADMIN"; GRANT SELECT on V_$LOGMNRLOGS to "ODBZEROETLADMIN"; GRANT SELECT on V_$LOGMNRCONTENTS to "ODBZEROETLADMIN"; GRANT LOGMINING to "ODBZEROETLADMIN"; GRANT SELECT ON GV_$CELL_STATE TO "ODBZEROETLADMIN";
보충 로깅
Oracle 데이터베이스에서 보충 로깅을 활성화하여 변경 데이터를 캡처합니다.
-- Check if supplemental logging is enabled SELECT supplemental_log_data_min FROM v$database; -- Enable supplemental logging if not already enabled. -- For Oracle Exadata, enable supplemental logging on both the CDB and PDB. -- For Autonomous Database on Dedicated Infrastructure, enable supplemental logging on the PDB only. ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -- For Autonomous Database on Dedicated Infrastructure only ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; -- Archive current online redo log ALTER SYSTEM ARCHIVE LOG CURRENT;
Oracle Database@AWS와 Amazon Redshift 간에 제로 ETL 통합을 설정하려면 SSL을 구성해야 합니다.
- Oracle Exadata 데이터베이스의 경우
-
포트 2484에서 SSL을 수동으로 구성해야 합니다. 이 작업에는 다음이 포함됩니다.
-
listener.ora에서(PROTOCOL=tcps)(PORT=2484)구성 -
sqlnet.ora를 사용하여 Wallet 설정 -
SSL 인증서 생성 및 구성(My Oracle Support 설명서의 Exadata Cloud Database(ExaCC/ExaCS)용 SSL/TCPS 구성 방법(문서 ID 2947301.1)
참조)
-
- Autonomous 데이터베이스의 경우
-
포트 2484의 SSL은 기본적으로 활성화됩니다. 추가 구성은 필요하지 않습니다.
중요
SSL 포트는 2484로 고정됩니다.
AWS 서비스 사전 조건
제로 ETL 통합을 설정하기 전에 AWS Secrets Manager를 설정하고 IAM 권한을 구성합니다.
AWS Secrets Manager 설정
다음과 같이 AWS Secrets Manager에 Oracle 데이터베이스 자격 증명을 저장합니다.
AWS Key Management Service에서 고객 관리형 키(CMK)를 생성합니다.
CMK를 사용하여 AWS Secrets Manager에 데이터터베이스 자격 증명을 저장합니다.
Oracle Database@AWS 액세스를 허용하도록 리소스 정책을 구성합니다.
TDE 키 ID와 암호를 가져오려면 Oracle을 AWS Database Migration Service의 소스로 사용하기 위해 지원되는 암호화 방법에 설명된 기술을 사용합니다. 다음 명령은 base64 wallet을 생성합니다.
base64 -i cwallet.sso > wallet.b64
다음 예제에서는 Oracle Exadata의 보안 암호를 보여줍니다. asm_service_name의 경우 111.11.11.11은 VM 노드의 가상 IP를 나타냅니다. ASM 리스너를 SCAN에 등록할 수도 있습니다.
{ "database_info": [ { "name": "ODBDB_ZETLPDB", "service_name": "ODBDB_ZETLPDB.paas.oracle.com", "username": "ODBZEROETLADMIN", "password": "secure_password", "tde_key_id": "ORACLE.SECURITY.DB.ENCRYPTION.key_id", "tde_password": "tde_password", "certificateWallet": "base64_encoded_wallet_content" } ], "asm_info": { "asm_user": "odbzeroetlasm", "asm_password": "secure_password", "asm_service_name": "111.11.11.11:2484/+ASM" } }
다음 예제에서는 전용 인프라의 Autonomous 데이터베이스에 대한 보안 암호를 보여줍니다.
{ "database_info": [ { "database_name": "ZETLACD_ZETLADBMORECPU", "service_name": "ZETLADBMORECPU_high.adw.oraclecloud.com", "username": "ggadmin", "password": "secure_password", "certificateWallet": "base64_encoded_wallet_content" } ] }
IAM 권한 구성
제로 ETL 통합 작업을 허용하는 IAM 정책을 생성합니다. 다음 예제 정책은 Exadata VM 클러스터에 대한 설명, 생성, 업데이트 및 삭제 작업을 허용합니다. Autonomous VM 클러스터의 경우 리소스 ARN에 대해 cloud-vm-cluster 대신 cloud-autonomous-vm-cluster 값을 사용합니다.