9.2.29 Oracle AI Data Platform

概要

Oracle AI Data Platformは、データ・レイク、分析、オーケストレーション・サービスを1つの統合プラットフォームにまとめる新製品です。一元化されたガバナンス、組込みのコラボレーション、および内部と外部のデータソース間のシームレスな統合により、企業はデータ主導型の意思決定を加速し、より高速で効率性の高い大規模なデータ分析を実行できます。

9.2.29.1 詳細な機能

概要

Oracle AI Data Platformへのレプリケーションでは、ステージおよびマージ・データ・フローが使用されます。Oracle GoldenGateの証跡からの変更データは、OCIオブジェクト・ストレージの一時的なステージング場所(外部ステージ)にマイクロバッチでステージングされます。ステージングされたレコードは、マージSQL文を使用してOracle AI Data Platformのターゲット表にマージします。デフォルトでは、ステージングされたレコードは3分ごとにマージされます。

9.2.29.1.1 ステージングの場所

Oracle GoldenGate証跡ファイルからの変更データ・レコードは、Avro OCF (オブジェクト・コンテナ・フォーマット)にフォーマットされ、ステージングの場所にアップロードされます。

変更データは、次のオブジェクト・ストア上にステージングできます:
  • OCIオブジェクト・ストレージ

9.2.29.1.2 データベース・ユーザー権限

Oracle AI Data Platformに複製する場合、データベース・ユーザーには次の権限が必要です:
  • ターゲット表に対するSELECTCREATEINSERTUPDATE、および DELETE権限。
  • 外部表に対するSELECT権限、CREATE権限、ALTER権限およびDROP権限。

9.2.29.1.3 前提条件

  • Oracle AI Data Platform用にOracle Cloud Infrastructureアカウントを設定する必要があります。
  • Apache Spark用のSimba JDBCドライバ。Simba JDBCドライバは、Oracle AI Data Platformコンソールのクラスタ詳細ページからダウンロードできます。詳細は、「Apache Spark用のSimba JDBCドライバ」を参照してください。

9.2.29.2 構成

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

9.2.29.2.1 自動構成

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

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

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

パラメータgg.stageにより、ステージングの場所が決まります。

Oracle AI Data Platformターゲットに複製する自動構成を有効にするには、パラメータgg.target=aidpを設定します。

gg.stageが設定されていない場合、OCIオブジェクト・ストレージがステージングの場所として使用されます。

また、JDBCメタデータ・プロバイダは、Oracle AI Data Platformからターゲット表のメタデータを取得するように自動的に有効化されます。

ターゲット表がない場合は、自動的に作成されます。

9.2.29.2.1.1 ファイル・ライター・ハンドラの構成

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

9.2.29.2.1.2 OCIイベント・ハンドラの構成

OCIイベント・ハンドラ名は、値ociに事前設定されています。OCI構成と一致するように構成する必要があります。

次に、OCIイベント・プロパティの編集例を示します:
gg.eventhandler.oci.bucketMappingTemplate=container1
9.2.29.2.1.3 Oracle AI Data Platformイベント・ハンドラの構成

Oracle AI Data Platformイベント・ハンドラ名は、値aidpに事前に設定されています。

次に、Oracle AI Data Platformイベント・ハンドラで使用可能な構成プロパティを示します。必要なプロパティは、Oracle AI Data Platform構成と一致するように変更する必要があります。

表9-36 Oracle AI Data Platformイベント・ハンドラの構成プロパティ

プロパティ 必須/オプション 有効な値 デフォルト 説明
gg.eventhandler.aidp.connectionURL 必須

jdbc:spark://<server-hostname>;SparkServerType=AIDP;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]`

なし Oracle AI Data Platformに接続するためのJDBC URLを指定します。
gg.eventhandler.aidp.maxConnections

オプション

整数値

10

このパラメータは、ターゲット・データベースへの同時JDBCデータベース接続の数を制御するために使用できます。

gg.eventhandler.aidp.connectionRetries

オプション

整数値

3

ターゲット・データ・ウェアハウスへの接続が再試行される回数を指定します。

gg.eventhandler.aidp.connectionRetryIntervalSeconds

オプション

整数値

30

接続再試行間の遅延(秒単位)を指定します。

gg.eventhandler.aidp.createTable

オプション

TrueまたはFalse

True

パラメータ値がtrueに設定されている場合。欠落しているターゲット表が自動的に作成されます。

gg.eventhandler.aidp.detectMissingBaseRow

オプション

TrueまたはFalse

False

ベース行のないUPDATE操作を見つけるための診断パラメータ。trueに設定すると、ベース行のない機密情報のOracle内部のUPDATE操作がある場合、Replicatは異常終了します。これらの行は、調査可能な別の表に収集されます。

gg.eventhandler.aidp.dropStagingTablesOnShutdown

オプション

TrueまたはFalse

False

パラメータ値をtrueに設定すると、Oracle GoldenGateによって作成された一時ステージング表が、Replicatの正常な停止時に削除されます。

gg.handler.aidp.fileRollInterval

オプション

デフォルトの測定単位はミリ秒です。mssmh,がそれぞれ、ミリ秒、秒、分、時間を表すように指定できます。有効な値は、10000、10000ms、10s、10m、1.5hなどです。0以下の値は、ファイル・ロールアウト操作が無効であることを示します。

3m

このパラメータによって、データがAIDPにマージされる頻度が決まります。

注意: デフォルト値を3mから大きい値に増やすと、Replicat内部メモリーに格納されるデータの量が増加します。これにより、メモリー不足エラーが発生し、Replicatプロセスが停止する可能性があります。

9.2.29.2.2 Oracle AI Data Platformへの認証

Oracle AI Data Platform JDBC接続URLは、認証に次の形式を使用します:
jdbc:spark://<Host>;SparkServerType=AIDP;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
9.2.29.2.2.1 Oracle AI Data Platform JDBCドライバのコンピュート設定

Oracle AI Data Platform JDBCドライバには、次のコンピュート・リソース構成設定が必要です。

表9-37 Oracle AI Data Platform JDBCドライバのコンピュート・リソースの構成設定

設定 説明

ホスト

Oracle AI Data Platformコンピュート・リソースのサーバー・ホスト名値を指定します。

SparkServerType

Oracle AI Data Platformコンピュート・リソースのsparkサーバー・タイプ(AIDP)を指定します。

HTTPパス

Oracle AI Data Platformコンピュート・リソースのHTTPパス値を指定します。

9.2.29.2.2.2 Oracle AI Data Platformコンピュート・クラスタの接続詳細

Oracle AI Data Platformコンピュート・クラスタの接続詳細を取得するには:
  1. Oracle AI Data Platformインスタンスにログインします。
  2. サイドバーで、必要なワークスペースを選択し、「コンピュート」をクリックします。
  3. 使用可能なクラスタのリストで、ターゲット・クラスタの名前をクリックします。
  4. 「接続詳細」タブをクリックすると、JDBC URLの詳細と、そのクラスタに関連付けられているドライバの詳細が表示されます。
  5. 「JDBC」タブでは、JDBC URLを使用できます。
9.2.29.2.2.3 Apache Spark用のSimba JDBCドライバ

次のステップを使用して、Oracle AI Data Platformコンピュート・クラスタのSimba JBDCドライバを取得します:
  1. Oracle AI Data Platformインスタンスにログインします。
  2. 必要なワークスペースを選択します。
  3. 「コンピュート」をクリックします。
  4. 使用可能なクラスタのリストから、ターゲット・クラスタの名前を選択します。
  5. 「接続詳細」タブをクリックすると、JDBC URLの詳細と、そのクラスタに関連付けられているドライバの詳細が表示されます。
  6. 「JDBC」タブで、「JDBCドライバのダウンロード」オプションを選択してJDBCドライバjarを取得します。

ノート:

Oracleでは、Oracle AI Data PlatformコンソールからダウンロードしたZIPパッケージに含まれるSimba JDBC jarのリーン・バージョンを使用することをお薦めします。Simba JDBC jarのリーン・バージョンは依存性が小さくなっています。小さくなったこれらの依存性により、Oracle GoldenGateとSimba JDBCドライバ間の依存性の解決の競合が防止され、よりスムーズな統合および互換性を確保するのに役立ちます。リーンSimba JDBCドライバjarは、ダウンロードしたZIPアーカイブのlibsディレクトリにあります。
9.2.29.2.2.4 Oracle AI Data Platformの認証方法

OCI APIキー

Oracle AI Data Platform JDBCドライバでは、次の認証方法がサポートされています:

OCI APIキーおよび対応するプロファイルを生成するには、次のステップを使用します:
  1. AI Data Platformインスタンスが存在するOCIテナンシで、右上隅にある「ユーザー」アイコンに移動します。
  2. 「ユーザー設定」「トークンおよびキー」「APIキーの追加」の順にクリックします。
  3. 「APIキー・ペアの生成」をクリックします。
  4. 公開キーと秘密キーをダウンロードします。
  5. 「追加」をクリックして、公開キーと秘密キーを追加します。
  6. 表示されたウィンドウから、構成ファイルのプレビューをコピーし、~/.oci/configファイルにコンテンツを追加します。

    OCI構成ファイルの例

    [DEFAULT]
    user=ocid1.user.oc1..mockValue
    fingerprint=mockFingerPrintValue
    tenancy=ocid1.compartment.oc1..mockValue
    region=us-phoenix-1
    key_file=<path to your private keyfile>

    ノート:

    • Simba JDBCドライバでは、プロファイル名がDEFAULT~/.oci/configファイルにOCI構成のデフォルト構成があります。
    • プロパティを変更する場合は、新しい構成ファイル・パスとOCIプロファイルの新しい名前を示すOCIConfigFileおよびOCIProfileキーを使用して、JDBC URLに同様の詳細を指定します。次に例を示します:
      jdbc:spark://sample.url.com/default;SparkServerType=AIDP;httpPath=cliservice/mockPath;OCIConfigFile=/tmp/config;OCIProfile=MY_PROFILE

9.2.29.2.3 クラスパス構成

Oracle AI Data Platformイベント・ハンドラは、Apache SparkのSimba JDBCドライバを使用します。

Simba JDBCドライバのクラスパス構成については、次のことを確認してください:

  • クラスパスにJDBCドライバへのパスが含まれている。
  • OCIオブジェクト・ストア・イベント・ハンドラの依存性を含めている。

  • gg.classpath configurationパラメータを編集して、オブジェクト・ストア・イベント・ハンドラの依存性とApache Spark用のSimba JDBCドライバへのパスを含めている。

9.2.29.2.4 INSERTALLRECORDSのサポート

Replicatの一括挿入操作を有効にするには、Replicatパラメータ・ファイル(.prm)でINSERTALLRECORDSパラメータを設定します。これにより、ターゲット表へのデータ・ロードが最適化されます。

次のファイル・ライター・プロパティを使用して、一括挿入のバッチ・サイズと頻度を調整できます:
  • gg.handler.aidp.maxFileSize (バッチ・サイズのデフォルト値が1GB)。
  • gg.handler.aidp.fileRollInterval (バルク挿入頻度のデフォルト値が3分)

9.2.29.2.5 操作集計

操作集計では、同じ行に対する複数の操作が、しきい値に基づいて単一の出力操作に結合されます。

9.2.29.2.5.1 インメモリー操作の集計

デフォルトでは、操作レコードはインメモリーで集計されます。マージ間隔は、gg.handler.aidp.fileRollIntervalプロパティを使用して調整できます。gg.handler.aidp.fileRollIntervalプロパティのデフォルト値は3分です。

ノート:

インメモリー操作集計には、追加のJVMメモリー構成が必要です。
9.2.29.2.5.2 SQLベースの操作集計

現在、Oracle AI Data Platformでは、SQLを使用した操作集計はサポートされていません。

9.2.29.2.6 エンドツーエンド構成

自動構成を使用するエンドツーエンド構成の例を次に示します。

OCIオブジェクト・ストレージを使用したOracle AI Data Platform

# Properties file for Replicat
# Configuration to load GoldenGate trail operation records into AI Data Platform using OCI object store staging location.
# Note: Recommended to only edit the configuration marked as TODO
gg.target=aidp

# OCI Event handler.
#TODO: Edit the OCI region
gg.eventhandler.oci.region=<oci-region>
#TODO: Edit the OCI compartment OCID
gg.eventhandler.oci.compartmentID=<oci-compartment-ocid>
#TODO: Edit the OCI bucket name
gg.eventhandler.oci.bucketMappingTemplate=<oci-bucket-name>
#TODO: Edit the OCI Config Profile name
gg.eventhandler.oci.profile=<oci-profile-name>
#TODO: Edit the OCI Config file path
gg.eventhandler.oci.configFilePath=./oci/config

# AI Data Platform Event Handler.
#TODO: Edit JDBC ConnectionUrl
gg.eventhandler.aidp.connectionURL=<connection-url>

#TODO: Edit the classpath to include OCI Event handler dependencies and Simba JDBC driver.
gg.classpath=/path/to/oci-dep/*:/path/to/simba-jdbc-driver/*

9.2.29.2.7 表マッピング

MAP文でターゲット・カタログが指定されていない場合、Oracle AI Data Platformワークスペースではhiveがデフォルト・カタログとして使用されます。イベント・ハンドラは、初期化時にこれをデフォルト・カタログとして使用し、ログ・メッセージを接続カタログは[hive]に設定されていますのように表示します。

表9-38 マッピング表

Replicatパラメータ・ファイルのMAP文 AIDPカタログ AIDPスキーマ AIDP表
MAP SCHEMA_1.TABLE_1, TARGET "schema_1"."table_1"; デフォルト・カタログ(hive) schema_1 table_1
MAP DB_1.SCHEMA_1.TABLE_1, TARGET "db_1"."schema_1"."table_1" db_1 schema_1 table_1

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

  • サポートされていないOracle AI Data Platformデータ型:
    1. ARRAY
    2. MAP
    3. STRUCT
  • 動的値を使用したバケット・マッピング・テンプレートの作成の回避:

    動的値を使用するOCIイベント・ハンドラのバケット・マッピング・テンプレートを作成しないようにします。これは、1つの表に対して複数のバケットが生成される可能性があるためです。アプリケーションがREFRESH SQL文を使用して新しい利用可能なステージングされたファイルで外部テーブルを更新するので、結果に一貫性がなくなる可能性があります。そのため、特定の表のすべてのステージング・ファイルの場所は一貫している必要があります。
    1. 無効なバケット・マッピング・テンプレートの例:
      • test_run1_${tableName}_${currentTimestamp}を使用します。ここで、currentTimestampは動的タイムスタンプ値に置き換えられます。

        たとえば、2025-09-02_05-54-26.166の場合、test_run1_HISTORY_2025-09-02_05-54-26.166、test_run1_HISTORY_2025-09-02_06-21-46.006、test_run1_NEW_ORDER_2025-09-02_05-54-28.005などの複数のバケットが生成されます。

    2. 有効なバケット・マッピング・テンプレートの例:
      • 定数バケット・マッピング・テンプレート(testrun1など)を使用すると、Replicatの実行全体に対して、同じ単一バケット内の表ごとに一意の単一パスが確保されます。
      • test_run1_${tableName}などのテンプレートを使用すると、test_run1_HISTORY, test_run1_NEW_ORDERなどのソース表ごとに一意の単一バケットが生成されます。
  • コンポーネントの共存:

    外部ステージの場所を使用する場合、Replicatプロセスが実行されているマシンの場所/リージョン、およびオブジェクト・ストアのリージョンは、適用プロセスの全体的なスループットに影響します。最大限のスループットを得るには、理想的にはコンポーネントを同じリージョンまたはできるかぎり近くに配置する必要があります。

  • ターゲット表に適用されないDDL:

    Oracle GoldenGate for Distributed Applications and AnalyticsはDDLレプリケーションをサポートしていません

  • 1900-01-01より前のタイムスタンプ値の処理:

    Oracle AI Data Platformは現在、内部日付表現のため、デフォルトで1900-01-01より前のタイムスタンプのデータ型の値をサポートしていません。

    1900-01-01より前のタイムスタンプ値の書込みを有効にするには、クラスタ構成で次のプロパティを設定します:
    spark.sql.parquet.int96RebaseModeInWrite=CORRECTED
    クラスタを再起動して、変更を適用します。