9.2.12 Apache Iceberg

Apache Icebergは、非常に大規模な分析表のための高パフォーマンスの表形式です。Apache Icebergは、Spark、Trino、Flink、Presto、Hive、Impalaなどのエンジンが同時に同じ表を安全に操作できるようにしながら、SQL表の信頼性およびシンプルさをGG for DAAにもたらします。

9.2.12.1 詳細な機能

Oracle GoldenGate Iceberg Replicatは、GoldenGate証跡レコードをIceberg表にレプリケートできます。

Icebergのオープン表形式ファイルは、ローカル・ファイル、AWS Simple Storage Service (S3)、Google Cloud Storage (GCS)またはAzure DataLake Storage (ADLS)に書き込むことができます。

9.2.12.1.1 SQLエンジンを使用しないレプリケーション

Oracle GoldenGate Iceberg Replicatプロセスでは、データをIceberg表にレプリケートするのにSQLエンジンは必要ありません。

Iceberg Java SDKとともにオブジェクト・ストレージ固有のJava SDKを使用して、データをIceberg表に書き込みます。

9.2.12.1.2 Icebergファイル形式

Icebergデータファイルおよび削除ファイルのデフォルトのファイル形式はParquetです。

Oracle GoldenGateは、次のIcebergでサポートされているファイル形式のいずれかでファイルを書き込むように構成できます:
  • Parquet (デフォルト)
  • Avro
  • ORC

9.2.12.1.3 Icebergカタログ

Oracle GoldenGateでは、次のIcebergカタログをサポートしています:

  • Hadoopカタログ
  • Nessieカタログ
  • AWS Glueカタログ
  • Polarisカタログ
  • RESTカタログ
  • JDBCカタログ

9.2.12.1.4 Iceberg仕様

Oracle GoldenGateでは、Iceberg仕様バージョン2に従ってデータファイルおよび削除ファイルを生成します。

https://iceberg.apache.org/spec/#version-2-row-level-deletesを参照してください

9.2.12.1.5 削除ファイルとMerge-On-Read (MoR)

Oracle GoldenGateでは、UPDATEおよびDELETE操作用にIceberg削除ファイルを生成します。

したがって、Iceberg表プロパティwrite.update.modeは常にmerge-on-readに設定されます。

SQLエンジンでは、Oracle GoldenGateによってレプリケートされた表を問い合せるためにmerge-on-readをサポートする必要があります。

Icebergでは、次の2つのタイプの削除ファイルをサポートしています:

  • 等価削除: 削除されたレコードは、削除ファイルに指定された列の値の等価性によって識別されます。
  • 位置削除: 削除されたレコードは、Icebergデータファイル内のレコードの位置によって識別されます。

    現在のリリースのOracle GoldenGateでは、Iceberg等価削除を使用してIceberg表からレコードを削除します。

    これにより、Icebergデータファイル内の行の位置を検索せずにレコードを削除できます。

    ノート:

    Iceberg位置削除を必要とするユースケースについては、Oracleサポートにお問い合せください。

9.2.12.1.6 操作のサポート

Icebergイベント・ハンドラでは、次の操作をサポートしています:

  • INSERT: 挿入操作用にIcebergデータファイルを生成します。
  • UPDATE: 更新操作用にIcebergデータファイルおよび削除ファイルを生成します。
  • DELETE: 削除操作用にIceberg削除ファイルを生成します。
  • TRUNCATE: ターゲット表を切り捨てるための条件を常にtrueとして、Iceberg削除ファイルを生成します。

    この操作では、データファイルなしで空のIcebergスナップショットが作成されます。

9.2.12.1.7 圧縮更新の処理

Oracle GoldenGate証跡ファイルの圧縮更新レコードには、キー列および変更された列の値が含まれています。

非圧縮更新レコードには、すべての列の値が含まれています。

Oracle GoldenGate証跡には、圧縮更新レコードまたは非圧縮更新レコードを含めることができます。デフォルトのExtract構成では、圧縮更新が証跡ファイルに書き込まれます。

更新操作で欠落している列値がある場合、Replicatは異常終了します。

この動作は、Replicatプロパティ・ファイルでパラメータgg.eventhandler.iceberg.abendOnMissingColumns=falseを設定することでオーバーライドできます。

パラメータがfalseに設定されている場合、Replicatは、Iceberg表の欠落している列の以前の値を問い合せて、圧縮更新を処理します。

9.2.12.1.7.1 スパース更新での欠落値の検索

欠落値の検索はコストの高い操作であり、Replicatプロセスのパフォーマンスに影響を与える可能性があります。

デフォルトでは、Oracle GoldenGateは10分ごとにレコードをマイクロ・バッチでIcebergに書き込みます。

表のいずれのマイクロバッチにも、何百万もの行が含まれている可能性があります。

マイクロ・バッチは、同時スレッド内のすべてのターゲット表に対して処理されます。

したがって、十分なJVMヒープ・メモリーをReplicatプロセスに割り当てることが重要です。

検索は、更新操作に1つ以上の欠落値が含まれる行に対してのみ実行されます。

Oracle GoldenGateでは、ターゲット表を自動的に作成します。Oracle GoldenGate Replicatでは、表の自動作成時にすべての識別子(キー)列に対してIcebergメトリック(最小/最大値)の作成を有効にします。

メトリックは、Icebergメタデータ・ファイルに格納されます。

Icebergメトリックは、UPDATE操作における欠落値の検索を高速化するのに役立ちます。

9.2.12.1.8 INSERTALLRECORDSのサポート

Icebergイベント・ハンドラでは、INSERTALLRECORDSパラメータをサポートしています。https://docs.oracle.com/en/middleware/goldengate/core/21.3/reference/insertallrecords.html#GUID-A1019C40-97BE-437B-9D80-7C99A9A6DB8Eを参照してください。Replicatパラメータ・ファイル(prm)でINSERTALLRECORDSパラメータを設定します。

このプロパティを設定すると、Replicatプロセスに、Icebergデータファイルを生成し、操作データをIcebergターゲット表の最後に追加するように指示されます。

9.2.12.1.9 操作集計

集計操作は、同じ行に対する複数の操作をしきい値に基づいて単一の出力操作に集計(マージ/圧縮)するプロセスです。

操作レコードは、インメモリーで集計されます。

gg.handler.iceberg.fileRollIntervalプロパティを使用して適用間隔の頻度をチューニングできます。デフォルト値は15m (15分)に設定されます。

Replicatプロセスでは、集計された操作用にIcebergデータファイルおよび削除ファイルを生成します。

9.2.12.1.10 自動表作成

ターゲット表が存在しない場合、Oracle GoldenGate Replicatではターゲット表を自動的に作成します。

9.2.12.1.11 Icebergメタデータ・プロバイダ

Icebergの新しいメタデータ・プロバイダが、Icebergターゲット表のメタデータを取得するために実装されています。

Icebergメタデータ・プロバイダは、Replicatプロセスによって自動構成および有効化されます。

9.2.12.1.12 Iceberg識別子フィールド

Iceberg表の識別子フィールドは、Iceberg表の行を一意に識別するために使用されます。

Oracle GoldenGateでは、自動表作成時にキー列をIceberg識別子フィールドにマップします。

ノート:

現在のリリースでは、識別子フィールドのないIceberg表はサポートされていません。

9.2.12.1.13 主キーの更新と切捨て

  • 列値が欠落している主キーの更新により、フラッシュ間隔の前にファイルがIceberg表にフラッシュされます。

    これにより、主キーの更新操作用のデータファイルおよび削除ファイルが小規模になる可能性があります。

    頻繁に主キーを更新するワークロードまたは表の場合、非圧縮更新レコードを使用した証跡ファイルの生成をお薦めします。

    また、Oracleソースから生成された証跡に対してgg.validate.keyupdate=trueを設定することをお薦めします。

    キー列が変更されていない場合でも、主キー更新操作を生成するという既知の問題がOracle Extractにあります。

  • 切捨て操作により、フラッシュ間隔の前にファイルがIceberg表にフラッシュされます。

9.2.12.2 構成

Icebergレプリケーション・プロパティの構成は、Replicatプロパティ・ファイルに格納されます。

9.2.12.2.1 自動構成

Icebergレプリケーションでは、ファイル・ライター・ハンドラやターゲットIcebergイベント・ハンドラなどの複数のコンポーネントを構成します。

自動構成機能を使用すると、手動構成が最小限になるように、これらのコンポーネントを自動構成できます。

自動構成によって変更されたプロパティも、ハンドラのログ・ファイルに記録されます。

自動構成でIcebergターゲットにレプリケートできるようにするには、パラメータgg.target=icebergを設定します。

9.2.12.2.1.1 ファイル・ライター構成

ファイル・ライター・ハンドラ名はicebergという値に事前設定されており、そのプロパティはIcebergに必要な値に自動的に設定されます。

9.2.12.2.1.2 Icebergイベント・ハンドラ構成

Icebergイベント・ハンドラ名は、値icebergに事前設定されています。

このトピックでは、Icebergイベント・ハンドラで使用可能な構成プロパティの詳細を示します。必須プロパティは、使用しているIceberg構成に一致するように変更する必要があります。

9.2.12.2.1.2.1 共通のIcebergプロパティ

Icebergは、複数のカタログおよびオブジェクト・ストアと連携するように構成できます。

共通プロパティは次のとおりです:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.warehouseLocation オプション 文字列値。 なし オブジェクト・ストレージ・スキームを除いたIcebergウェアハウスの場所へのディレクトリ・パス。例: /path/to/warehouse。これは、hadoopカタログを使用する場合、必須プロパティです。他のIcebergカタログの場合、ウェアハウスの場所にはカタログ固有の要件があります。
gg.eventhandler.iceberg.fileRollInterval オプション デフォルトの測定単位はミリ秒です。ms、s、m、hを、それぞれミリ秒、秒、分または時間を表すように指定できます。有効な値は、10000、10000ms、10s、10m、1.5hなどです。0以下の値を指定すると、ファイルのローリング・オン時間がオフになります。 15m このパラメータにより、データがIcebergウェアハウスにプッシュされる頻度を決めます。この値が大きいほど、Replicatプロセスのメモリーに格納する必要があるデータが多くなるため、注意して使用してください。

ノート:

このパラメータは慎重に使用してください。そのデフォルト値(15m)を増やすと、Replicatの内部メモリーに格納されるデータの量が増えます。これにより、メモリー不足エラーが発生し、メモリー不足になるとReplicatが停止する可能性があります。
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// Icebergオブジェクト・ストレージの場所を示すウェアハウス・スキーム。有効な値: file://gs://, s3://s3a://abfss://。詳細は、「ファイル・システム・スキーム」を参照してください。
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop Icebergカタログ・タイプ。有効な値: hadoopjdbcnessierestgluepolaris
gg.eventhandler.iceberg.fileFormat オプション parquet、orcまたはavro。 parquet ターゲット表で使用されるIceberg表のファイル形式。サポートされているファイル形式: Parquet、AvroおよびORC。
gg.eventhandler.iceberg.icebergTableProperties オプション 文字列値。 なし ターゲット表に設定する追加のIceberg表プロパティを指定する表プロパティ・ファイルへのパス。
gg.eventhandler.iceberg.abendOnMissingColumns オプション trueまたはfalse true trueに設定し、UPDATE操作に欠落値が含まれる場合、Replicatは異常終了します。falseに設定すると、UPDATE操作で列値が欠落している場合でも、Replicatは異常終了しません。欠落している列値は、ターゲット表の問合せによって読み取られます。この検索は、Replicatプロセスのパフォーマンスに影響を与える可能性があります。
gg.eventhandler.iceberg.abendOnSchemaChanges オプション trueまたはfalse true trueに設定し、スキーマの変更が検出される場合、Replicatプロセスは異常終了します。ユーザーは、ターゲット・スキーマを手動で更新し、構成をfalseに設定して続行できます。falseに設定すると、スキーマの変更に関する警告メッセージがログに記録されます。
gg.validate.keyupdate オプション trueまたはfalse false trueに設定した場合は、Replicatによってキー更新操作(optype 115)が検証され、キー値が変更されていない場合は通常の更新に訂正されます。
9.2.12.2.1.2.1.1 ファイル・システム・スキーム

gg.eventhandler.iceberg.fileSystemSchemeプロパティは、オブジェクト・ストレージ・スキームを指定するために使用されます。

サポートされているオブジェクト・ストレージ・スキームは次のとおりです:

  • file://: ローカル・ファイル・システム
  • gs://: Google Cloud Storage
  • s3://: AWS S3
  • s3a://: AWS S3
  • abfss://: Azure Data Lake Storage
9.2.12.2.1.2.2 Icebergの共通依存性

共通のIceberg依存性は次のとおりです:

<dependencies>
       <!-- Common Iceberg dependencies START -->
       <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-arrow</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-core</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-data</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-parquet</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-gcp</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-aws</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iceberg</groupId>
            <artifactId>iceberg-orc</artifactId>
            <version>1.6.1</version>
        </dependency>
    <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-nessie</artifactId>
        <version>1.6.1</version>
    </dependency>
    <!-- Common Iceberg dependencies END -->
</dependencies>

依存性は、DependencyDownloaderディレクトリのスクリプトdownload_dependencies.shを使用してMaven Centralからダウンロードできます。

次のステップを実行します:

  1. ディレクトリをDependencyDownloaderに変更します。
  2. プロキシ構成が必要な場合は、config_proxy.shを編集します。
  3. スクリプトを実行します:
    ./download_dependencies.sh xmls/iceberg-common.xml
    このスクリプトにより、依存性がダウンロードされ、iceberg-commonディレクトリに格納されます。gg.classpathは、次のようにiceberg-commonディレクトリからの依存性が含まれるように構成できます: gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-common/*
9.2.12.2.1.2.3 AWS S3 (s3://スキーム)に書き込むためのAWS Java SDK依存性

s3://スキームを使用してAWS S3に書き込むためのIceberg依存性を次に示します:

<dependencies>
    <!-- s3:// scheme dependencies START -->
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
        <version>2.28.6</version>
    </dependency>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>sts</artifactId>
        <version>2.28.6</version>
    </dependency>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>glue</artifactId>
        <version>2.28.6</version>
    </dependency>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>url-connection-client</artifactId>
        <version>2.28.6</version>
    </dependency>
    <!-- s3:// scheme dependencies END -->
</dependencies>

依存性は、DependencyDownloaderディレクトリのスクリプトdownload_dependencies.shを使用してMaven Centralからダウンロードできます。

次のステップを実行します:

  • ディレクトリをDependencyDownloaderに変更します。
  • プロキシ構成が必要な場合は、config_proxy.shを編集します。
  • スクリプト: ./download_dependencies.sh xmls/iceberg-aws-java-sdk.xmlを実行します

このスクリプトにより、依存性がダウンロードされ、iceberg-aws-java-sdkディレクトリに格納されます。

gg.classpath: 次のように依存性が含まれるように構成できます。

gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
9.2.12.2.1.2.4 AWS S3 (s3a://スキーム)に書き込むためのHadoop AWS SDK依存性
s3a:// schemeスキームを使用してAWS S3に書き込むためのIceberg依存性を次に示します:
<dependencies>
    <!-- s3a:// scheme dependencies START -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-aws</artifactId>
        <version>3.4.0</version>
    </dependency>
    <!-- s3a:// scheme dependencies END -->
</dependencies>

依存性は、DependencyDownloaderディレクトリのスクリプトdownload_dependencies.shを使用してMaven Centralからダウンロードできます。

次のステップを実行します:

  • ディレクトリをDependencyDownloaderに変更します。
  • プロキシ構成が必要な場合は、config_proxy.shを編集します。
  • スクリプトを実行します:
    ./download_dependencies.sh xmls/iceberg-hadoop-aws.xml

このスクリプトにより、依存性がダウンロードされ、iceberg-hadoop-awsディレクトリに格納されます。

gg.classpathは、次のように依存性が含まれるように構成できます。

gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-aws/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
9.2.12.2.1.2.5 Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
Hadoop GCS SDKを使用してGCSに書き込むためのIceberg依存性を次に示します:
<dependencies>
    <!-- gs:// scheme dependencies START -->
    <dependency>
        <groupId>com.google.cloud.bigdataoss</groupId>
        <artifactId>gcs-connector</artifactId>
        <version>hadoop3-2.2.22</version>
    </dependency>
    <!-- gs:// scheme dependencies END -->
</dependencies>

依存性は、DependencyDownloaderディレクトリのスクリプトdownload_dependencies.shを使用してMaven Centralからダウンロードできます。

次のステップを実行します:

  • ディレクトリをDependencyDownloaderに変更します。
  • プロキシ構成が必要な場合は、config_proxy.shを編集します。
  • スクリプト: ./download_dependencies.sh xmls/iceberg-hadoop-gcs.xmlを実行します

このスクリプトにより、依存性がダウンロードされ、iceberg-hadoop-gcsディレクトリに格納されます。

gg.classpathは、次のように依存性が含まれるように構成できます。
g.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
9.2.12.2.1.2.6 Google Cloud Storage (GCS)に書き込むためのGoogle Cloud Storage SDK依存性
Google Cloud Storage Java SDKを使用してGCSに書き込むためのIceberg依存性を次に示します:
<dependencies>
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-storage</artifactId>
        <version>2.37.0</version>
    </dependency>
</dependencies>

依存性は、DependencyDownloaderディレクトリのスクリプトdownload_dependencies.shを使用してMaven Centralからダウンロードできます。

次のステップを実行します:

  • ディレクトリをDependencyDownloaderに変更します。
  • プロキシ構成が必要な場合は、config_proxy.shを編集します。
  • スクリプトを実行します:
    ./download_dependencies.sh xmls/iceberg-gcs-java-sdk.xml

このスクリプトにより、依存性がダウンロードされ、iceberg-gcs-java-sdkディレクトリに格納されます。

gg.classpathは、次のように依存性が含まれるように構成できます。
gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
9.2.12.2.1.2.7 Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
Hadoop Azure Java SDKを使用してADLSに書き込むためのIceberg依存性を次に示します:
<dependencies>
    <!-- abfss:// scheme dependencies START -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-azure</artifactId>
        <version>3.4.0</version>
    </dependency>
    <!-- abfss:// scheme dependencies END -->
</dependencies>

依存性は、DependencyDownloaderディレクトリのスクリプトdownload_dependencies.shを使用してMaven Centralからダウンロードできます。

次のステップを実行します:

  • ディレクトリをDependencyDownloaderに変更します。
  • プロキシ構成が必要な場合は、config_proxy.shを編集します。
  • スクリプトを実行します:
    ./download_dependencies.sh xmls/iceberg-hadoop-azure.xml

このスクリプトにより、依存性がダウンロードされ、iceberg-hadoop-azureディレクトリに格納されます。

gg.classpath: 次のように依存性が含まれるように構成できます。

gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-azure/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*

9.2.12.2.2 Iceberg Nessieカタログの構成

9.2.12.2.2.1 Nessieカタログの構成とAWS S3 s3://スキーム

Nessieカタログとs3://スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop nessie
gg.eventhandler.iceberg.nessieBranch オプション 文字列値。 main Iceberg表メタデータが存在するNessieカタログのブランチ名。
gg.eventhandler.iceberg.nessieUri 必須 文字列値。 なし Nessieカタログ・エンドポイントURI。例:
http://<nessie-server>.com:10001/api/v2
.
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3://
gg.eventhandler.iceberg.awsS3Region 必須 文字列値。 なし AWS S3バケット・リージョン。例: us-east-2
gg.eventhandler.iceberg.awsS3Bucket 必須 文字列値。 なし Icebergウェアハウスを格納するAWS S3バケット名。
gg.eventhandler.iceberg.awsAccessKeyId オプション 文字列値。 なし 認証用のAWSアクセス・キーID。
gg.eventhandler.iceberg.awsSecretKey オプション 文字列値。 なし 認証用のAWSシークレット・アクセス・キー。
gg.eventhandler.iceberg.awsSessionToken オプション 文字列値。 なし 認証用のAWSセッション・トークン。
gg.eventhandler.iceberg.awsRoleArn オプション 文字列値。 なし 認証用のAWSロールARN。
gg.eventhandler.iceberg.awsS3Endpoint オプション 文字列値。 なし AWS S3エンドポイント。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.2.1.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • AWS S3 (s3://スキーム)に書き込むためのAWS SDK依存性
9.2.12.2.2.1.2 Nessieカタログのサンプル構成とAWS S3 s3://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=nessie
gg.eventhandler.iceberg.nessieBranch=main
gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme=s3://
gg.eventhandler.iceberg.awsS3Region=us-east-2
gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket>
gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id>
gg.eventhandler.iceberg.awsSecretKey=<secret-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.2 Nessieカタログの構成とAWS S3 s3a://スキーム

Nessieカタログとs3a://スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop nessie
gg.eventhandler.iceberg.nessieBranch オプション 文字列値。 main Iceberg表メタデータが存在するNessieカタログのブランチ名。
gg.eventhandler.iceberg.nessieUri 必須 文字列値。 なし Nessieカタログ・エンドポイントURI。例: http://<nessie-server>.com:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3a://
gg.eventhandler.iceberg.awsS3Bucket 必須 文字列値。 なし Icebergウェアハウスを格納するAWS S3バケット名。
gg.eventhandler.iceberg.awsAccessKeyId 必須 文字列値。 なし 認証用のAWSアクセス・キーID。
gg.eventhandler.iceberg.awsSecretKey 必須 文字列値。 なし 認証用のAWSシークレット・アクセス・キー。
gg.eventhandler.iceberg.awsSessionToken オプション 文字列値。 なし 認証用のAWSセッション・トークン。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.2.2.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • AWS S3 (s3a://スキーム)に書き込むためのHadoop AWS SDK依存性
9.2.12.2.2.2.2 Nessieカタログのサンプル構成とAWS S3 s3a://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-aws/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=nessie
gg.eventhandler.iceberg.nessieBranch=main
gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme=s3a://
gg.eventhandler.iceberg.awsS3Region=us-east-2
gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket>
gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id>
gg.eventhandler.iceberg.awsSecretKey=<secret-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.3 Nessieカタログの構成とGCS gs://スキーム

Nessieカタログとgs://スキームを使用したGCSオブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop nessie
gg.eventhandler.iceberg.nessieBranch オプション 文字列値。 main Iceberg表メタデータが存在するNessieカタログのブランチ名。
gg.eventhandler.iceberg.nessieUri 必須 文字列値。 なし Nessieカタログ・エンドポイントURI。例: http://<nessie-server>.com:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// GCSオブジェクト・ストレージの場所を示すファイル・システム・スキーム: gs://
gg.eventhandler.iceberg.gcpStorageBucket 必須 文字列値。 なし Icebergウェアハウスを格納するGoogle Cloud Storageバケット名。
gg.eventhandler.iceberg.gcpProjectId 必須 文字列値。 なし GCSバケットを格納するGoogle Cloudプロジェクトのproject-idを設定します。
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile 必須 文字列値。 なし Googleサービス・アカウント・キー・ファイルへのパスを設定します。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.2.3.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
9.2.12.2.2.3.2 Nessieカタログのサンプル構成とGCS gs://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=nessie
gg.eventhandler.iceberg.nessieBranch=main
gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme=gs://
gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket>
gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id>
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.4 Nessieカタログの構成とAzure Data Lake Storage abfss://スキーム

Nessieカタログとabfss://スキームを使用したAzure Data Lake Storageの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop nessie
gg.eventhandler.iceberg.nessieBranch オプション 文字列値。 main Iceberg表メタデータが存在するNessieカタログのブランチ名。
gg.eventhandler.iceberg.nessieUri 必須 文字列値。 なし Nessieカタログ・エンドポイントURI。例: http://<nessie-server>.com:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// Azure Data Lake Storageの場所を示すファイル・システム・スキーム: abfss://
gg.eventhandler.iceberg.azureAccountName 必須 文字列値。 なし Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。
gg.eventhandler.iceberg.azureContainer 必須 文字列値。 なし Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。
gg.eventhandler.iceberg.azureAccountKey 必須 文字列値。 なし Azureストレージ・アカウント・キー。
gg.eventhandler.iceberg.azureBlobEndpoint オプション 文字列値。 <azureContainer>@<azureAccountName>.dfs.core.windows.net Azure Storageサービス・エンドポイント。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.2.4.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
9.2.12.2.2.4.2 Nessieカタログのサンプル構成とADLS abfss://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=nessie
gg.eventhandler.iceberg.nessieBranch=main
gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2
gg.eventhandler.iceberg.fileSystemScheme=abfss://
gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name>
gg.eventhandler.iceberg.azureContainer=<azure-storage-container>
gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.4.3 Nessieネームスペース

Nessieネームスペースは、Nessieカタログ内のすべての表に対する最上位コンテナです。

Replicatプロセスを開始する前に、表を作成したり表に書き込む前に、既存のネームスペースが必要です。

Nessieネームスペースは、次のようにNessieコマンドライン・プログラム(nessie-cli-<version>.jar)を使用して作成できます: create namespace QASOURCE;

Nessieネームスペースは、MAP文のGoldenGateスキーマにマップされます。

例: MAP QASOURCE.TCUSTMER, TARGET QASOURCE.TCUSTMER;

9.2.12.2.3 Iceberg AWS Glueカタログの構成

9.2.12.2.3.1 Iceberg AWS Glueカタログの構成とAWS S3 s3://またはs3a://スキーム

AWS Glueカタログとs3://またはs3a://スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop glue。
gg.eventhandler.iceberg.awsGlueId 必須 文字列値。 なし GlueカタログIDは、数値のAWSアカウントIDです。
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3://またはs3a://
gg.eventhandler.iceberg.awsS3Region 必須 文字列値。 なし AWS S3バケット・リージョン。例: us-east-2。
gg.eventhandler.iceberg.awsS3Bucket 必須 文字列値。 なし Icebergウェアハウスを格納するAWS S3バケット名。
gg.eventhandler.iceberg.awsAccessKeyId オプション 文字列値。 なし 認証用のAWSアクセス・キーID。
gg.eventhandler.iceberg.awsSecretKey オプション 文字列値。 なし 認証用のAWSシークレット・アクセス・キー。
gg.eventhandler.iceberg.awsSessionToken オプション 文字列値。 なし 認証用のAWSセッション・トークン。
gg.eventhandler.iceberg.awsRoleArn オプション 文字列値。 なし 認証用のAWSロールARN。
gg.eventhandler.iceberg.awsS3Endpoint オプション 文字列値。 なし AWS S3エンドポイント。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.3.2 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • AWS S3 (s3://)に書き込むためのAWS SDK依存性
9.2.12.2.3.3 Iceberg AWS Glueカタログのサンプル構成とAWS S3 s3://またはs3a://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=glue
gg.eventhandler.iceberg.awsGlueId=<aws-acccount-id>
gg.eventhandler.iceberg.fileSystemScheme=s3://
#gg.eventhandler.iceberg.fileSystemScheme=s3a://
gg.eventhandler.iceberg.awsS3Region=us-east-2
gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket>
gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id>
gg.eventhandler.iceberg.awsSecretKey=<secret-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.3.4 表名と大/小文字の区別

AWS Glueカタログでは、小文字の名前のみがサポートされています。

AWS Glueカタログでは、2部構成の表名のみがサポートされています。

GGDAA ReplicatのMAP文のターゲット表は、Glueデータベース名および表名にマップする必要があります。

例: MAP QASOURCE.TCUSTMER, TARGET "glue_database"."tcustmer";

この例では、glue_databaseがGlueデータベース名、tcustmerがGlue表名です。

9.2.12.2.4 Iceberg Polarisカタログの構成

Apache Polarisは、Apache Iceberg用のオープンソースでフル機能のカタログです。

Polarisを設定するための選択肢がいくつかあります:

この項の内容は次のとおりです。

9.2.12.2.4.1 Polarisの共通構成

Polarisカタログの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType 必須 文字列値。 hadoop polaris
gg.eventhandler.iceberg.polarisCatalogUri 必須 文字列値。 なし Polarisカタログ・エンドポイントURI。例: https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog
gg.eventhandler.iceberg.polarisCatalogName 必須 文字列値。 なし Polarisカタログ名。カタログ名は、Polarisカタログ・ネームスペースおよび表のエントリ・ポイントです。
gg.eventhandler.iceberg.polarisClientId 必須 文字列値。 なし 各Polarisカタログに対する認証および認可に使用されるPolarisプリンシパルのクライアントID。
gg.eventhandler.iceberg.polarisClientSecret 必須 文字列値。 なし 各Polarisカタログに対する認証および認可に使用されるPolarisプリンシパルのクライアント・シークレット。
gg.eventhandler.iceberg.polarisPrincipalRole オプション 文字列値。 ALL Polarisプリンシパルが担うロール。
9.2.12.2.4.2 Google Cloud Storage (GCS)が設定されたPolarisカタログ
環境変数GOOGLE_APPLICATION_CREDENTIALSは、Google Serviceアカウント・キー・ファイルへのパスに設定する必要があります。Replicatパラメータ・ファイル(.prm)に次を追加します:
SETENV (GOOGLE_APPLICATION_CREDENTIALS = "/path/to/the/gcp-service-account-json-key.json")
9.2.12.2.4.3 AWS S3ストレージが設定されたPolarisカタログ
プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.awsS3Region 必須 文字列値。 なし PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。AWS S3バケット・リージョン。例: us-east-2
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3://
gg.eventhandler.iceberg.awsAccessKeyId オプション 文字列値。 なし PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。認証用のAWSアクセス・キーID。
gg.eventhandler.iceberg.awsSecretKey オプション 文字列値。 なし PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。認証用のAWSシークレット・アクセス・キー。
gg.eventhandler.iceberg.awsSessionToken オプション 文字列値。 なし PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。認証用のAWSセッション・トークン。
gg.eventhandler.iceberg.awsS3Endpoint オプション 文字列値。 なし PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。AWS S3エンドポイント。
9.2.12.2.4.4 Azure Data Lake Storage (ADLS)が設定されたPolarisカタログ
プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Azure Data Lake Storageの場所を示すウェアハウス・スキーム: abfss://
gg.eventhandler.iceberg.azureAccountName 必須 文字列値。 なし PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。
gg.eventhandler.iceberg.azureContainer 必須 文字列値。 なし PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。
gg.eventhandler.iceberg.azureAccountKey 必須 文字列値。 なし PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Azureストレージ・アカウント・キー。
gg.eventhandler.iceberg.azureBlobEndpoint オプション 文字列値。 <azureContainer>@<azureAccountName>.dfs.core.windows.net PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Azure Storageサービス・エンドポイント。
9.2.12.2.4.5 PolarisカタログとGCSストレージ・クラスパスおよび依存性

PolarisカタログがGCSに書き込むように設定されている場合は、Javaクラスパス(gg.classpath)に次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Google Cloud Storage (GCS)に書き込むためのGoogle Cloud Storage SDK依存性
9.2.12.2.4.6 PolarisカタログとAWS S3ストレージ・クラスパスおよび依存性

PolarisカタログがAWS S3に書き込むように設定されている場合は、Javaクラスパス(gg.classpath)に次の依存性を含める必要があります:

  • Icebergの共通依存性
  • AWS S3 (s3://)に書き込むためのAWS SDK依存性
9.2.12.2.4.7 PolarisカタログとADLSストレージ・クラスパスおよび依存性

PolarisカタログがADLSに書き込むように設定されている場合は、Javaクラスパス(gg.classpath)に次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Azure Data Lake Storage (abfss://)に書き込むためのHadoop Azure SDKの依存性。
9.2.12.2.4.8 Polarisカタログのサンプル構成
gg.target=iceberg
#For catalog using GCS
gg.classpath=DependencyDownloader/dependencies/iceberg-gcs-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/*
#For catalog using S3
#gg.classpath=DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/*
#For catalog using ADLS
#gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=polaris
gg.eventhandler.iceberg.polarisCatalogUri=https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog
gg.eventhandler.iceberg.polarisCatalogName=<polaris_gcs_catalog>
gg.eventhandler.iceberg.polarisClientId=<clientId>
gg.eventhandler.iceberg.polarisClientSecret=<clientSecret>
gg.eventhandler.iceberg.polarisPrincipalRole=ALL
9.2.12.2.4.9 Polarisネームスペース

Polarisネームスペースは、Polarisカタログ内のすべての表に対する最上位コンテナです。

Replicatプロセスを開始する前に、PolarisネームスペースをそれぞれのPolarisカタログに作成する必要があります。

Polarisネームスペースは、MAP文のGoldenGateスキーマにマップされます。

例: MAP QASOURCE.TCUSTMER, TARGET "polaris_namespace"."tcustmer";

9.2.12.2.5 Iceberg RESTカタログの構成

Icebergでは、カタログ実装用のREST仕様(https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml)を定義します。

Iceberg REST APIを実装するRESTサーバーはいずれもIcebergカタログとして使用できます。

たとえば、PolarisはIceberg REST APIの実装です。

9.2.12.2.5.1 Iceberg RESTカタログの構成

Polarisカタログの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType 必須 文字列値。 hadoop rest
gg.eventhandler.iceberg.restCatalogUri 必須 文字列値。 なし RESTカタログ・エンドポイントURI。例: https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog
gg.eventhandler.iceberg.restCatalogProperties オプション 文字列値。 なし RESTカタログの追加構成を含むプロパティ・ファイル。
9.2.12.2.5.2 Polarisに基づいたRESTカタログのサンプル構成
gg.target=iceberg
#For catalog using GCS
gg.classpath=DependencyDownloader/dependencies/iceberg-gcs-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/*
#For catalog using S3
#gg.classpath=DependencyDownloader/dependencies/iceberg-s3/*:DependencyDownloader/dependencies/iceberg-common/*
#For catalog using ADLS
#gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=rest
gg.eventhandler.iceberg.restCatalogUri=https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog
gg.eventhandler.iceberg.restCatalogProperties=/path/to/rest/catalog.properties
# Optional configuration for authentication to the object storage. 
# Some REST implementations do not require a separate authentication to the storage layer. 
#gg.eventhandler.iceberg.fileSystemScheme=s3://
#gg.eventhandler.iceberg.awsS3Region=<s3-region>
#gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket>
#gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id>
#gg.eventhandler.iceberg.awsSecretKey=<secret-key>
#gg.eventhandler.iceberg.fileSystemScheme=abfss://
#gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name>
#gg.eventhandler.iceberg.azureContainer=<azure-storage-container>
#gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key>
#gg.eventhandler.iceberg.fileSystemScheme=gs://
#gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket>
#gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id>
#gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file>
9.2.12.2.5.3 RESTカタログのサンプル・プロパティ・ファイル(Polarisの場合)
warehouse=polaris_s3_catalog
credential=<ClientId>:<ClientSecret>
scope=PRINCIPAL_ROLE:ALL
token-refresh-enabled=true

9.2.12.2.6 Iceberg JDBCカタログの構成

一部のJDBC互換データベースを使用して、Icebergカタログ情報を格納できます。

すべてのJDBC互換データベースがIceberg JDBCカタログAPIでサポートされているわけではありません。

ノート:

Databricks JDBCドライバを使用するDatabricksターゲットは、内部的にテストされています。
9.2.12.2.6.1 Iceberg JDBCカタログの構成とfile://スキーム

JDBCカタログとfile://スキームを使用したIcebergストレージとしてのローカル・ファイル・システムの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop jdbc
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// ローカル・ファイル・システムをストレージとして示すファイル・システム・スキーム: file://
gg.eventhandler.iceberg.warehouseLocation 必須 文字列値。 なし Icebergウェアハウスへのローカル・ディレクトリ・パス。
gg.eventhandler.iceberg.jdbcUrl 必須 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。
gg.eventhandler.iceberg.jdbcUser オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。
gg.eventhandler.iceberg.jdbcPassword オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。
9.2.12.2.6.1.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.1.2 Iceberg JDBCカタログのサンプル構成とローカル・ファイル・ストレージfile://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=/path/to/the/jdbc/driver/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=jdbc
gg.eventhandler.iceberg.jdbcUrl=<jdbc-url>
gg.eventhandler.iceberg.jdbcUser=<jdbc-user>
gg.eventhandler.iceberg.jdbcPassword=<jdbc-password>
9.2.12.2.6.2 Iceberg JDBCカタログの構成とs3a://スキーム

JDBCカタログとs3a://スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop jdbc
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3a://
gg.eventhandler.iceberg.warehouseLocation 必須 文字列値。 なし Icebergウェアハウスへのローカル・ディレクトリ・パス。
gg.eventhandler.iceberg.jdbcUrl 必須 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。
gg.eventhandler.iceberg.jdbcUser オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。
gg.eventhandler.iceberg.jdbcPassword オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。
gg.eventhandler.iceberg.awsS3Bucket 必須 文字列値。 なし Icebergウェアハウスを格納するAWS S3バケット名。
gg.eventhandler.iceberg.awsAccessKeyId 必須 文字列値。 なし 認証用のAWSアクセス・キーID。
gg.eventhandler.iceberg.awsSecretKey 必須 文字列値。 なし 認証用のAWSシークレット・アクセス・キー。
gg.eventhandler.iceberg.awsSessionToken オプション 文字列値。 なし 認証用のAWSセッション・トークン。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.6.2.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • AWS S3 (s3a://スキーム)に書き込むためのHadoop AWS SDK依存性
  • Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.2.2 JDBCカタログのサンプル構成とAWS S3 s3a://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-aws/*:DependencyDownloader/dependencies/iceberg-common/*:/path/to/the/jdbc/driver/*
gg.eventhandler.iceberg.catalogType=jdbc
gg.eventhandler.iceberg.jdbcUrl=<jdbc-url>
gg.eventhandler.iceberg.jdbcUser=<jdbc-user>
gg.eventhandler.iceberg.jdbcPassword=<jdbc-password>
gg.eventhandler.iceberg.fileSystemScheme=s3a://
gg.eventhandler.iceberg.awsS3Region=us-east-2
gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket>
gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id>
gg.eventhandler.iceberg.awsSecretKey=<secret-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.6.3 Iceberg JDBCカタログの構成とgs://スキーム

JDBCカタログとgs://スキームを使用したGCSオブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop jdbc
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// GCSオブジェクト・ストレージの場所を示すファイル・システム・スキーム: gs://
gg.eventhandler.iceberg.warehouseLocation 必須 文字列値。 なし Icebergウェアハウスへのローカル・ディレクトリ・パス。
gg.eventhandler.iceberg.jdbcUrl 必須 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。
gg.eventhandler.iceberg.jdbcUser オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。
gg.eventhandler.iceberg.jdbcPassword オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。
gg.eventhandler.iceberg.gcpStorageBucket 必須 文字列値。 なし Icebergウェアハウスを格納するGoogle Cloud Storageバケット名。
gg.eventhandler.iceberg.gcpProjectId 必須 文字列値。 なし GCSバケットを格納するGoogle Cloudプロジェクトのproject-idを設定します。
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile 必須 文字列値。 なし Googleサービス・アカウント・キー・ファイルへのパスを設定します。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.6.3.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
  • Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.3.2 JDBCカタログのサンプル構成とGCS gs://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:DependencyDownloader/dependencies/iceberg-common/*:/path/to/the/jdbc/driver/*
gg.eventhandler.iceberg.catalogType=jdbc
gg.eventhandler.iceberg.jdbcUrl=<jdbc-url>
gg.eventhandler.iceberg.jdbcUser=<jdbc-user>
gg.eventhandler.iceberg.jdbcPassword=<jdbc-password>
gg.eventhandler.iceberg.fileSystemScheme=gs://
gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket>
gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id>
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.6.4 Iceberg JDBCカタログの構成とabfss://スキーム

JDBCカタログとabfss://スキームを使用したAzure Data Lake Storageの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop jdbc
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// Azure Data Lake Storageの場所を示すファイル・システム・スキーム: abfss://
gg.eventhandler.iceberg.warehouseLocation 必須 文字列値。 なし Icebergウェアハウスへのローカル・ディレクトリ・パス。
gg.eventhandler.iceberg.jdbcUrl 必須 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。
gg.eventhandler.iceberg.jdbcUser オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。
gg.eventhandler.iceberg.jdbcPassword オプション 文字列値。 なし Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。
gg.eventhandler.iceberg.azureAccountName 必須 文字列値。 なし Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。
gg.eventhandler.iceberg.azureContainer 必須 文字列値。 なし Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。
gg.eventhandler.iceberg.azureAccountKey 必須 文字列値。 なし Azureストレージ・アカウント・キー。
gg.eventhandler.iceberg.azureBlobEndpoint オプション 文字列値。 <azureContainer>@<azureAccountName>.dfs.core.windows.net Azure Storageサービス・エンドポイント。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.6.4.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
  • Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.4.2 JDBCカタログのサンプル構成とADLS abfss://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/*:/path/to/the/jdbc/driver/*
gg.eventhandler.iceberg.catalogType=jdbc
gg.eventhandler.iceberg.jdbcUrl=<jdbc-url>
gg.eventhandler.iceberg.jdbcUser=<jdbc-user>
gg.eventhandler.iceberg.jdbcPassword=<jdbc-password>
gg.eventhandler.iceberg.fileSystemScheme=abfss://
gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name>
gg.eventhandler.iceberg.azureContainer=<azure-storage-container>
gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>

9.2.12.2.7 Iceberg Hadoopカタログの構成

Hadoopカタログは、信頼性の高いロック・メカニズムがなく、同時読取り/書込みに影響するため、本番環境での使用はお薦めしません。

Hadoopカタログは、テスト目的でのみ使用されます。

9.2.12.2.7.1 Iceberg Hadoopカタログの構成とfile://スキーム

Hadoopカタログとfile://スキームを使用したIcebergストレージとしてのローカル・ファイル・システムの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop hadoop
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// ローカル・ファイル・システムをストレージとして示すファイル・システム・スキーム: file://
gg.eventhandler.iceberg.warehouseLocation 必須 文字列値。 なし Icebergウェアハウスへのローカル・ディレクトリ・パス。

ノート:

この構成は通常、ローカル・ファイル・システムにIceberg表を格納するためのテスト目的で使用されます。
9.2.12.2.7.1.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
9.2.12.2.7.1.2 Iceberg Hadoopカタログのサンプル構成とローカル・ファイル・ストレージfile://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-common/*
9.2.12.2.7.2 Iceberg Hadoopカタログの構成とs3a://スキーム

Hadoopカタログとs3a://スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop hadoop
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3a://
gg.eventhandler.iceberg.awsS3Bucket 必須 文字列値。 なし Icebergウェアハウスを格納するAWS S3バケット名。
gg.eventhandler.iceberg.awsAccessKeyId 必須 文字列値。 なし 認証用のAWSアクセス・キーID。
gg.eventhandler.iceberg.awsSecretKey 必須 文字列値。 なし 認証用のAWSシークレット・アクセス・キー。
gg.eventhandler.iceberg.awsSessionToken オプション 文字列値。 なし 認証用のAWSセッション・トークン。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.7.2.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • AWS S3 (s3a://スキーム)に書き込むためのHadoop AWS SDK依存性
9.2.12.2.7.2.2 Hadoopカタログのサンプル構成とAWS S3 s3a://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-aws/*:DependencyDownloader/dependencies/iceberg-common/
gg.eventhandler.iceberg.catalogType=hadoop
gg.eventhandler.iceberg.fileSystemScheme=s3a://
gg.eventhandler.iceberg.awsS3Region=us-east-2
gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket>
gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id>
gg.eventhandler.iceberg.awsSecretKey=<secret-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.7.3 Iceberg Hadoopカタログの構成とgs://スキーム

Hadoopカタログとgs://スキームを使用したGCSオブジェクト・ストアの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値。 hadoop hadoop
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値。 file:// GCSオブジェクト・ストレージの場所を示すファイル・システム・スキーム: gs://
gg.eventhandler.iceberg.gcpStorageBucket 必須 文字列値。 なし Icebergウェアハウスを格納するGoogle Cloud Storageバケット名。
gg.eventhandler.iceberg.gcpProjectId 必須 文字列値。 なし GCSバケットを格納するGoogle Cloudプロジェクトのproject-idを設定します。
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile 必須 文字列値。 なし Googleサービス・アカウント・キー・ファイルへのパスを設定します。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.7.3.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
9.2.12.2.7.3.2 Hadoopカタログのサンプル構成とGCS gs://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=hadoop
gg.eventhandler.iceberg.fileSystemScheme=gs://
gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket>
gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id>
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.7.4 Iceberg Hadoopカタログの構成とabfss://スキーム

Hadoopカタログとabfss://スキームを使用したAzure Data Lake Storageの構成プロパティを次に示します:

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.iceberg.catalogType オプション 文字列値 hadoop hadoop
gg.eventhandler.iceberg.fileSystemScheme オプション 文字列値 file:// Azure Data Lake Storageの場所を示すファイル・システム・スキーム: abfss://
gg.eventhandler.iceberg.azureAccountName 必須 文字列値 なし Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。
gg.eventhandler.iceberg.azureContainer 必須 文字列値 なし Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。
gg.eventhandler.iceberg.azureAccountKey 必須 文字列値。 なし Azureストレージ・アカウント・キー。
gg.eventhandler.iceberg.azureBlobEndpoint オプション 文字列値。 \ Azure Storageサービス・エンドポイント。
gg.eventhandler.iceberg.proxyServer オプション 文字列値。 なし Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー。
gg.eventhandler.iceberg.proxyPort オプション 文字列値。 80 Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。
9.2.12.2.7.4.1 クラスパスと依存性

Javaクラスパス(gg.classpath)には、次の依存性を含める必要があります:

  • Icebergの共通依存性
  • Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
9.2.12.2.7.4.2 Hadoopカタログのサンプル構成とADLS abfss://スキーム
gg.target=iceberg
gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables
gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/*
gg.eventhandler.iceberg.catalogType=hadoop
gg.eventhandler.iceberg.fileSystemScheme=abfss://
gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name>
gg.eventhandler.iceberg.azureContainer=<azure-storage-container>
gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key>
gg.eventhandler.iceberg.proxyServer=<proxy-server>
gg.eventhandler.iceberg.proxyPort=<proxy-port>

9.2.12.3 構成テンプレート

Iceberg構成テンプレートは、/path/to/AdapterExamples/bigdata/icebergディレクトリにあります。

Oracle GoldenGateでは、次のテンプレート・プロパティ・ファイルがパッケージ化されています:

  • iceberg-glue-s3.properties
  • iceberg-hadoop-adls.properties
  • iceberg-hadoop-gcs.properties
  • iceberg-hadoop-localfile.properties
  • iceberg-hadoop-s3.properties
  • iceberg-jdbc-localfile.properties
  • iceberg-jdbc-s3.properties
  • iceberg-jdbc-adls.properties
  • iceberg-jdbc-gcs.properties
  • iceberg-nessie-adls.properties
  • iceberg-nessie-gcs.properties
  • iceberg-nessie-s3.properties
  • iceberg-nessie-s3a.properties
  • iceberg-polaris-adls.properties
  • iceberg-polaris-gcs.properties
  • iceberg-polaris-s3.properties
  • iceberg-rest.properties

9.2.12.4 制限事項

  • Oracle GoldenGateでは、自動表作成時のパーティション列の構成をサポートしていません。

    パーティション表が必要な場合は、必要なパーティション列を使用してIceberg表を手動で作成する必要があります。

  • レプリケーション・プロセスを開始した後の、表のパーティション化スキーマの変更はサポートされていません。

    表のパーティション化スキーマを変更する必要がある場合は、ターゲット・データベースで表を手動で削除して再作成する必要があります。

    表内のデータを再ロードする必要があります。

    ノート:

    このプロセスについては、Oracleサポートにお問い合せください。
  • 既存のIcebergターゲット表には、スキーマ内に識別子列(キー列)が必要です。

    ターゲット表に識別子列がない場合、Replicatプロセスは異常終了します。

  • 次のIcebergデータ型は、キー列(Iceberg識別子フィールド)として使用できません:
    • binary
    • fixed
    • uuid

9.2.12.5 初期ロードによるOracle GoldenGateのインスタンス化

インスタンス化の標準ステップの詳細は、https://docs.oracle.com/en/middleware/goldengate/core/21.3/admin/instantiating-oracle-goldengate-initial-load.html#GUID-7D3BD34D-490B-4E76-A48B-63572D93881Aを参照してください

9.2.12.5.1 Iceberg固有のインスタンス化のステップ

  1. ExtractおよびReplicatの初期ロード・グループを開始します。
  2. Extractの変更同期グループを開始し、操作を証跡ファイルに書き込みます。

    ノート:

    Replicatの変更同期グループは、まだ開始しないでください。
  3. 初期ロードReplicatグループが初期ロード証跡ファイルの適用を完了するまで待機します。
  4. Extractの変更同期グループを停止します。
  5. 変更同期Replicatグループを構成します。
  6. 変更同期ReplicatグループにパラメータUPDATEINSERTSを追加します。
  7. 変更同期Replicatグループを開始します。
  8. 変更同期Replicatグループが、変更同期Extractグループによって生成されたすべての証跡を処理するまで待機します。

    最後の証跡ファイルの最後のレコードの終了オフセットは、変更同期ReplicatグループのJSONチェックポイント・ファイルのtargetCheckpoint値と一致する必要があります。

    例:
    • 最後の証跡ファイルに対してls -lを実行します。
      -rw-r--r-- 1 username dba 5660 Feb 22 2024 /path/to/trail/tr000000003
    • ここでの最後のレコードの終了オフセットは5660、証跡順序番号は3です。
    • 変更同期ReplicatグループのJSONチェックポイント・ファイルを開きます
      これには、次の属性が必要です:
       "targetCheckpoint" : {
           "trailSequence" : 3,
           "trailOffset" : 5660
        }
      このtargetCheckpointは、最後のレコードの終了オフセットと一致する必要があります。
  9. 変更同期Replicatグループを停止し、パラメータUPDATEINSERTSを削除します。
  10. これで、初期ロードが完了しました。変更同期ExtractグループおよびReplicatグループを開始します。

9.2.12.5.2 インスタンス化時におけるIceberg変更同期のReplicatの動作

  • ベース行がターゲットに存在するかどうかに関係なく、すべてのINSERT操作に対して[DELETE+INSERT]を実行します。
  • ベース行がターゲットに存在するかどうかに関係なく、すべてのUPDATE操作に対して[DELETE+INSERT]を実行します。
  • ベース行がターゲットに存在するかどうかに関係なく、すべてのDELETE操作に対してDELETEを実行します。

    ノート:

    競合は、Iceberg Replicatレポート・ファイルに記録されません。

9.2.12.6 トラブルシューティングと診断

  • Oracle GoldenGate Replicatでは、バージョン2仕様に従ってIcebergデータ型をサポートしています。
  • Iceberg識別子(キー)フィールドは、nullにできません。したがって、キー列の値がnullの場合、Replicatプロセスは異常終了します。
  • ADD/ALTER/DROP列などの表に対するスキーマ変更は、Replicatプロセスの実行中はサポートされません。

    レプリケーション・プロセスを停止し、スキーマ変更を適用してレプリケーション・プロセスを再開するステップがあります。

    ノート:

    このプロセスについては、Oracleサポートにお問い合せください。

    ターゲット表にマップされていない列がある場合、Replicatプロセスは異常終了します。

  • 次のメッセージによるReplicatの異常終了:
    ICEBERGEH-00060 Operation record at position  '00000000030000003318' for the table 'hadoop.oggdb1.types_tab' has  missing column values in an UPDATE. Replicat will
    ABEND. To override  this behavior set 'gg.eventhandler.iceberg.abendOnMissingColumns=false'and restart the Replicat process. Setting this property to false will  instruct Replicat to
    lookup missing columns from the target table and therefore may impact performance.
    デフォルトでは、Iceberg Replicatプロセスでは、UPDATE操作で列値が欠落していない証跡ファイルを想定しています。Replicatは、プロパティgg.eventhandler.iceberg.abendOnMissingColumns=falseを設定することで、UPDATE操作で列値が欠落している圧縮証跡ファイルを処理するように構成できます。
  • 次のメッセージによるReplicatの異常終了:
    ICEBERGEH-00057 Detected changes in the partition columns for the table 'hadoop.oggdb1.types_tab'. 
    Partition columns in the previous run: '<column list>', partition columns in this run: '<column list>'. 
    GoldenGate does not support changing partition columns. 
    Alter the table manually to match the partition columns in the previous run and restart the replicat process.
    Iceberg Replicatプロセスでは、パーティション列の変更をサポートしていません。
  • 次のメッセージによるReplicatの異常終了:
    ICEBERGEH-00067 Invalid state. The column '<column_name>' in the target table '<table_name>' is not mapped. 
    The following are the mapped columns: '<column list>'. Iceberg Replicat requires all the columns in the target table to be mapped. 
    Please map the column ''<unmapped column>' and restart the Replicat process.
    Iceberg Replicatプロセスでは、ターゲット表のすべての列をマップする必要があります。
  • 次のメッセージによるReplicatの異常終了:
    ICEBERGEH-00068 Key column '<column name>' in the table '<table name>' is of type float or double. 
    Iceberg does not support float or double type as identifier (key) fields. Initiating Replicat process shutdown. 
    Please modify the table schema to exclude double/float types as key columns and restart the Replicat process.
    現在のIceberg仕様(バージョン2)に従って、列の型doubleおよびfloatは識別子(キー)列として使用できません。
  • 次のメッセージによるReplicatの異常終了:
    ICEBERGEH-00070 Table '<table_name>' contains a key column '<column_name>' of '<binary/fixed/uuid>' type that is not supported by GoldenGate. 
    The following column types are not supported as key: 'binary, fixed, uuid'. To proceed, either use a supported Iceberg key column type by altering the 'KEYCOLS' clause in the Replicat 'MAP' statement as per the following example: 'MAP <sourceSchema>.<sourceTable>, TARGET <targetSchema>.<targetTable>, KEYCOLS("key1", "key2");' or alter the Iceberg target tables's identifier fields to exclude the key column types that are not supported by GoldenGate. 
    You can use the following Iceberg SQL statement to alter the table schema: 'ALTER TABLE prod.db.sample SET IDENTIFIER FIELDS key1, key2'.
    Icebergの型binaryfixedおよびuuidは、識別子(キー)列として使用できません。
  • 次のメッセージによるReplicatの異常終了:
    ICEBERGEH-00071=Table '<table_name>' does not define an  Iceberg identifier column. 
    Identifier columns are used as key columns by  GoldenGate. Initiating Replicat process shutdown. 
    Please alter the  Iceberg target tables's schema to add identifier columns. 
    You can use  the following Iceberg SQL statement to alter the table schema: 'ALTER TABLE prod.db.sample SET IDENTIFIER FIELDS key1, key2'.
    Icebergターゲット表には、スキーマ内に識別子列(キー列)が必要です。
  • Replicatハンドラのログ・ファイルの例外:
    • com.google.cloud.storage.StorageException: 401 Unauthorized
    • org.apache.iceberg.exceptions.RuntimeIOException: Failed to get file system for path
    • org.apache.iceberg.exceptions.RuntimeIOException: Failed to create file
    • org.apache.iceberg.exceptions.ForbiddenException: Forbidden

      これらは、オブジェクト・ストレージ認証プロパティの構成が正しくないことが原因で発生する一般的な例外です。

      次のプロパティが設定されていることを確認してください:

      • gg.eventhandler.iceberg.fileSystemSchemegg.eventhandler.iceberg.proxyServergg.eventhandler.iceberg.proxyPort
      • gg.eventhandler.iceberg.awsAccessKeyIdgg.eventhandler.iceberg.awsSecretKeygg.eventhandler.iceberg.awsS3Region
      • gg.eventhandler.iceberg.azureAccountKey
      • gg.eventhandler.iceberg.gcpProjectIdgg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile