

# Oracle Database@AWS でのゼロ ETL 統合の前提条件
<a name="zero-etl-prerequisites"></a>

ゼロ ETL 統合を設定する前に、次の前提条件を満たしていることを確認してください。

## 一般的な前提条件
<a name="zero-etl-general-prerequisites"></a>
+ **Oracle Database@AWS のセットアップ** – 少なくとも 1 つの VM クラスターがプロビジョニングされ、実行されていることを確認します。
+ **ゼロ ETL が有効になっている統合** – VM クラスターまたは Autonomous VM クラスターが、ゼロ ETL が有効になっている ODB ネットワークに関連付けられていることを確認します。
+ **サポートされている Oracle Database バージョン** – Oracle Database 19c (Oracle Exadata) または Oracle Database 19c/23ai (専用インフラストラクチャ上の Autonomous Database) を使用する必要があります。
+ **同じ AWS リージョン** – ソース Oracle データベースとターゲット Amazon Redshift クラスターは同じ AWS リージョンに存在する必要があります。

## Oracle データベースの前提条件
<a name="zero-etl-oracle-prerequisites"></a>

Oracle データベースを次の設定で構成する必要があります。

### レプリケーションユーザーのセットアップ
<a name="zero-etl-replication-user"></a>

レプリケートする各プラガブルデータベース (PDB) に専用のレプリケーションユーザーを作成します。
+ **Oracle Exadata の場合** – 安全なパスワードでユーザー `ODBZEROETLADMIN` を作成します。
+ **専用インフラストラクチャ上の Autonomous データベースの場合** – 既存の `GGADMIN` ユーザーを使用します。

レプリケーションユーザーに次のアクセス許可を付与します。

```
-- For Autonomous Database on Dedicated Infrastructure only
ALTER USER GGADMIN ACCOUNT UNLOCK; 
ALTER USER GGADMIN IDENTIFIED BY {{ggadmin-password}};

-- For Oracle Exadata only
GRANT SELECT ON {{any-replicated-table}} TO "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";
```

### サプリメンタルロギング
<a name="zero-etl-supplemental-logging"></a>

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` を使用したウォレットの設定
+ SSL 証明書の生成と設定 (My Oracle Support ドキュメントの [How To Configure SSL/TCPS For Exadata Cloud Database (ExaCC/ExaCS) (Doc ID 2947301.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/2947301_1.html) を参照)

**Autonomous データベースの場合**  
ポート 2484 の SSL はデフォルトで有効になっています。追加の設定は必要ありません。  
SSL ポートは 2484 に固定されています。

### AWS のサービスの前提条件
<a name="zero-etl-aws-prerequisites"></a>

ゼロ ETL 統合を設定する前に、AWS Secrets Manager をセットアップし、IAM アクセス許可を設定します。

#### AWS Secrets Manager のセットアップ
<a name="zero-etl-secrets-manager"></a>

次のように、Oracle データベース認証情報を AWS Secrets Manager に保存します。

1. AWS Key Management Service でカスタマーマネージドキー (CMK) を作成します。

1. CMK を使用して、AWS Secrets Manager にデータベース認証情報を保存します。

1. Oracle Database@AWS アクセスを許可するようにリソースポリシーを設定します。

TDE キー ID とパスワードを取得するには、「[AWS Database Migration Service のソースとして Oracle を使用するためにサポートされている暗号化方法](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Encryption)」で説明されている方法を使用します。次のコマンドは、base64 ウォレットを生成します。

```
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 許可を設定する
<a name="zero-etl-iam-permissions"></a>

ゼロ ETL 統合オペレーションを許可する IAM ポリシーを作成します。次のポリシー例では、Exadata VM クラスターの記述、作成、更新、削除オペレーションを許可します。Autonomous VM クラスターの場合、リソース ARN に `cloud-vm-cluster` ではなく、`cloud-autonomous-vm-cluster` の値を使用します。