8.2.28 Oracle Cloud Infrastructureオブジェクト・ストレージ

Oracle Cloud Infrastructureイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをOracle Cloud Infrastructureオブジェクト・ストアにロードします。

Oracle Cloud Infrastructureイベント・ハンドラを使用して、フラット・ファイルによって生成されたファイルをOracle Cloud Infrastructureオブジェクト・ストアにロードします。このトピックでは、OCIイベント・ハンドラの使用方法について説明します。

8.2.28.1 概要

Oracle Cloud Infrastructure Object Storageサービスは、信頼性およびコスト効率が高いデータ耐久性を実現するインターネット規模の高パフォーマンス・ストレージ・プラットフォームです。Object Storageサービスは、分析データやリッチ・コンテンツ(イメージやビデオなど)を含め、あらゆるコンテンツ・タイプの非構造化データを無制限に格納できます。https://cloud.oracle.com/en_US/cloud-infrastructureを参照してください。

ファイル・ライター・ハンドラでサポートされるフォーマット・ハンドラはすべて使用できます。

8.2.28.2 機能の詳細

Oracle Cloud Infrastructureイベント・ハンドラには、Oracle Cloud Infrastructure Object Storageにファイルを転送するためのOracle Cloud Infrastructure Javaソフトウェア開発キット(SDK)が必要です。Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)には、Oracle Cloud Infrastructure Java SDKが付属していません。https://docs.cloud.oracle.com/iaas/Content/API/Concepts/sdkconfig.htmを参照してください。

Oracle Cloud Infrastructure Java SDKは、次の場所でダウンロードする必要があります。

https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm

JARファイルを永続ディレクトリに解凍します。ハンドラには、Oracle Cloud Infrastructure SDK JARがあるJARライブラリ・ディレクトリとサード・パーティのJARライブラリの2つのディレクトリが必要です。両方のディレクトリは、gg.classpathにある必要があります。

環境変数gg.classpathを指定し、Oracle Cloud Infrastructure Java SDKのJARファイルを含めます。

gg.classpath=/usr/var/oci/lib/*:/usr/var/oci/third-party/lib/*

プロキシ・サーバー設定を設定するには、次のMaven座標で識別される追加の依存性ライブラリが必要です。

グループID: com.oracle.oci.sdk

アーティファクトID: oci-java-sdk-addons-apache

すべての依存関係を取得する最善の方法は、依存関係のダウンロード・ユーティリティ・スクリプトを使用することです。OCIスクリプトは、OCI Java SDKおよびApache Addonsライブラリの両方をダウンロードします。

この依存性の詳細は、OCIドキュメント- READMEを参照してください。

8.2.28.3 構成

Oracle Cloud Infrastructureイベント・ハンドラの操作は、プロパティ・ファイルを使用して構成します。これらのプロパティは、Java Adapterプロパティ・ファイルにあり、Replicatプロパティ・ファイルにはありません。

Oracle Cloud Infrastructureイベント・ハンドラは、ファイル・ライター・ハンドラとの組合せでのみ機能します。

Oracle Cloud Infrastructureイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=ociおよびその他のOracle Cloud Infrastructureプロパティを次のように指定してハンドラ・タイプを構成する必要があります。

表8-33 Oracle Cloud Infrastructureイベント・ハンドラの構成プロパティ

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

gg.eventhandler.name.type

必須

oci

なし

Oracle Cloud Infrastructureイベント・ハンドラを選択します。

gg.eventhandler.name.contentType オプション リソースのメディア・タイプを示すために使用される有効なコンテンツ・タイプ値。 application/octet-stream オブジェクトのコンテンツ・タイプ。
gg.eventhandler.name.contentEncoding オプション 有効な値は、適用されるエンコーディングを示します。 utf-8 オブジェクトのコンテンツ・エンコーディング。
gg.eventhandler.name.contentLanguage オプション 利用者のための有効な言語。 en オブジェクトのコンテンツ言語。

gg.eventhandler.name.configFilePath

オプション

イベント・ハンドラのconfigファイルへのパス。

なし

構成ファイルの名前および場所。

gg.eventhandler.name.configFilePathが設定されていない場合は、次の認証パラメータが必要です。
  • gg.eventhandler.name.userId
  • gg.eventhandler.name.tenancyID
  • gg.eventhandler.name.region
  • gg.eventhandler.name.privateKeyFile
  • gg.eventhandler.name.publicKeyFingerprint
これらのパラメータは、gg.eventhandler.name.configFilePathより優先されます。
gg.eventhandler.name.userId オプション 有効なユーザーID なし APIをコールするユーザーのOCID。値を取得するには、(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。: ocid1.user.oc1..<unique_ID> (簡潔にするために短縮)
gg.eventhandler.name.tenancyId オプション 有効なテナンシID なし テナンシのOCID。値を取得するには、Oracle Cloud Infrastructureドキュメントの(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。: ocid1.tenancy.oc1..<unique_ID>
gg.eventhandler.name.privateKeyFile オプション ファイルへの有効なパス なし 秘密キーのフルパスとファイル名。

ノート:

キー・ペアはPEM形式である必要があります。PEM形式でのキー・ペアの生成の詳細は、Oracle Cloud Infrastructureドキュメントの(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。: /home/opc/.oci/oci_api_key.pem
gg.eventhandler.name.publicKeyFingerprint オプション 文字列 なし このユーザーに追加された公開キーのフィンガープリント。値を取得するには、Oracle Cloud Infrastructureドキュメントの(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。

gg.eventhandler.name.profile

必須

プロファイル名を表す有効な文字列。

DEFAULT

Oracle Cloud Infrastructureのconfigファイルでは、エントリがプロファイル名で識別されます。デフォルトのプロファイルはDEFAULTです。ADMIN_USERなどのプロファイルを追加できます。ADMIN_USERプロファイル(またはconfigファイルに追加する他のプロファイル)に明示的に定義されていない値は、DEFAULTプロファイルから継承されます。

gg.eventhandler.name.region

必須

Oracle Cloud Infrastructureのリージョン。

なし

Oracle Cloud Infrastructureのサーバーおよびデータはリージョンでホストされ、ローカライズされた地理的領域です。

有効なリージョン識別子は、「Oracle Cloud Infrastructure Documentation - Regions and Availability Domains」に一覧表示されています。

gg.eventhandler.name.compartmentID

必須

有効なコンパートメントID。

なし

コンパートメントは、Oracle Cloud Infrastructureのリソースを編成するための論理コンテナです。compartmentIDは、Oracle Cloud Infrastructureコンソールの使用中に「バケットの詳細」に示されます。

gg.eventhandler.name.pathMappingTemplate

必須

ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

定数とともにインタレースされるキーワードを使用して、実行時に一意のOracle Cloud Infrastructureパス名を動的に生成します。テンプレート・キーワードを参照してください。

gg.eventhandler.name.fileNameMappingTemplate

オプション

実行時にOracle Cloud Infrastructureファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureデータ・ファイル名を動的に生成します。設定しない場合、アップストリームのファイル名が使用されます。テンプレート・キーワードを参照してください。

gg.eventhandler.name.bucketMappingTemplate

必須

ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。

なし

解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureバケット名を動的に生成します。Oracle Cloud Infrastructureバケットが存在しない場合、イベント・ハンドラはOracle Cloud Infrastructureバケットを作成しようとします。テンプレート・キーワードを参照してください。

gg.eventhandler.name.finalizeAction

オプション

none | delete

なし

ファイナライズ・アクションでOracle Cloud Infrastructureデータ・ファイルを残す場合は、noneに設定します。ファイナライズ・アクションでOracle Cloud Infrastructureデータ・ファイルを削除する場合は、deleteに設定します。

gg.eventhandler.name.eventHandler

オプション

子イベント・ハンドラを相互参照する一意の文字列識別子。

イベント・ハンドラは構成されません。

ファイル・ロール・イベントで呼び出されるイベント・ハンドラを設定します。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORCフォーマットへの変換、HDFSへのファイルのロード、Oracle Cloud Infrastructure Storage Classicへのファイルのロード、Oracle Cloud Infrastructureへのファイルのロードなどのファイル・ロール・イベント・アクションを実行できます。

gg.eventhandler.name.proxyServer オプション プロキシ・サーバーのホスト名。 なし OCI接続でプロキシ・サーバーを介したルーティングが必要な場合は、プロキシ・サーバーのホスト名に設定します。
gg.eventhandler.name.proxyPort オプション プロキシ・サーバーのポート番号。 なし OCI接続でプロキシ・サーバーを介したルーティングが必要な場合は、プロキシ・サーバーのポート番号に設定します。
gg.eventhandler.name.proxyProtocol オプション HTTP | HTTPS HTTP セキュリティ・レベルの追加のためにプロキシ・サーバーへのプロキシ・プロトコル接続を設定します。プロキシ・サーバーの大部分はHTTPをサポートしています。プロキシ・サーバーがHTTPSをサポートし、HTTPSが必要な場合にのみこれを設定します。
gg.eventhandler.name.proxyUsername オプション プロキシ・サーバーのユーザー名。 なし 資格証明が必要な場合、プロキシ・サーバーに接続するためのユーザー名を設定します。ほとんどのプロキシ・サーバーでは、資格証明は必要ありません。
gg.eventhandler.name.proxyPassword オプション プロキシ・サーバーのパスワード。 なし 資格証明が必要な場合、プロキシ・サーバーに接続するためのパスワードを設定します。ほとんどのプロキシ・サーバーでは、資格証明は必要ありません。
gg.handler.name.SSEKey オプション 有効なBase64でエンコードされたOCIサーバー側の暗号化キー。 なし OCIにロードされたデータ・ファイルの暗号化を制御できます。OCIはデフォルトで暗号化を行います。このプロパティを使用すると、特定のキーによる暗号化がサポートされ、より詳細な制御が可能になります。このキーはデータ・ファイルの復号化にも使用する必要があります。

サンプル構成

gg.eventhandler.oci.type=oci
gg.eventhandler.oci.configFilePath=~/.oci/config
gg.eventhandler.oci.profile=DEFAULT
gg.eventhandler.oci.namespace=dwcsdemo
gg.eventhandler.oci.region=us-ashburn-1
gg.eventhandler.oci.compartmentID=ocid1.compartment.oc1..aaaaaaaajdg6iblwgqlyqpegf6kwdais2gyx3guspboa7fsi72tfihz2wrba
gg.eventhandler.oci.pathMappingTemplate=${schemaName}
gg.eventhandler.oci.bucketMappingTemplate=${schemaName}
gg.eventhandler.oci.fileNameMappingTemplate=${tableName}_${currentTimestamp}.txt
gg.eventhandler.oci.finalizeAction=NONE
goldengate.userexit.writers=javawriter

8.2.28.3.1 自動構成

OCIオブジェクト・ストレージ・レプリケーションでは、ファイル・ライター・ハンドラ、フォーマッタ、ターゲットのOCIオブジェクト・ストレージ・イベント・ハンドラなど、複数のコンポーネントの構成が含まれます。

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

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

自動構成でOCIオブジェクト・ストレージ・ターゲットにレプリケートできるようにするには、パラメータgg.target=ociを設定します。

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

ファイル・ライター・ハンドラ名は、値ociに事前設定されています。

ファイル・ライター・ハンドラのプロパティを追加または編集できます。例: gg.handler.oci.pathMappingTemplate=./dirout

8.2.28.3.1.2 フォーマッタ構成

json行フォーマッタはデフォルトで設定されています。

フォーマッタのプロパティを追加または編集できます。例: gg.handler.oci.format=json_row

8.2.28.4 Oracle Cloud Infrastructureの資格証明の構成

Java SDKが機能するには、ユーザー資格証明などの基本構成情報およびOracle Cloud InfrastructureのテナントOracle Cloud ID (OCID)が必要です。https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htmを参照してください。

理想的な構成ファイルには、userfingerprintkey_filetenancyおよびregionの各キーとそれぞれの値が含まれます。デフォルトの構成ファイルの名前と場所は、~/.oci/configです。

次のように、configファイルを作成します。

  1. Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)ホーム・ディレクトリに.ociというディレクトリを作成します。
  2. テキスト・ファイルを作成し、configと名前を付けます。
  3. 次のプロパティの値を取得します。
    user
    1. Oracle Cloud Infrastructureコンソール(https://console.us-ashburn-1.oraclecloud.com)にログインします。
    2. 「ユーザー名」をクリックします。
    3. 「ユーザー設定」をクリックします。

      ユーザーのOCIDが表示され、これがキー・ユーザーの値です。

    tenancy

    テナントIDがコンソール・ページの下部に表示されます。

    region

    コンソールのヘッダー・セッション・ドロップダウン・メニューでリージョンが表示されます。

    fingerprint

    フィンガープリントを生成するには、次のキーのフィンガープリントの取得方法の手順に従います。

    https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm

    key_file

    Oracle Cloud Infrastructureとの接続を確立するには、公開キーと秘密キーを共有する必要があります。キーを生成するには、次のAPI署名キーの生成方法に従います。

    https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm

    pass_phrase
    これは、オプションのプロパティです。pemファイル内の秘密キーがパスフェーズで保護されている場合、パスフレーズを構成するために使用されます。次のopensslコマンドを使用して、保護されていない秘密キーのpemファイルを取得し、パスフレーズを追加できます。
    次のコマンドは、ユーザーにパスフレーズを要求します:
    openssl rsa -aes256 -in in.pem -out out.pem

サンプル構成ファイル

user=ocid1.user.oc1..aaaaaaaat5nvwcna5j6aqzqedqw3rynjq
fingerprint=20:3b:97:13::4e:c5:3a:34
key_file=~/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr44h25vqstifs

8.2.28.5 トラブルシューティング

接続の問題

オンプレミスで実行していて、OCIイベント・ハンドラがOCIオブジェクト・ストレージに接続できない場合は、プロキシ・サーバーによってパブリック・インターネットへの接続が保護されている可能性が高くなります。プロキシ・サーバーは、企業のプライベート・ネットワークとパブリック・インターネットとの間のゲートウェイとして機能します。プロキシ・サーバーのURLを取得するには、ネットワーク管理者に問い合せてください。

OCIへのOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)の接続は、次の構成プロパティを設定することで、プロキシ・サーバーを介してルーティングできます。

gg.eventhandler.name.proxyServer={insert your proxy server name}
gg.eventhandler.name.proxyPort={insert your proxy server port number}

ClassNotFoundExceptionエラー

最も一般的な初期エラーは、必要なすべてのクライアント・ライブラリが含まれていない正しくないクラスパスで、これによりClassNotFoundExceptionエラーが発生します。Oracle Cloud Infrastructure Java SDKの必要なJARファイルをすべて含めるためにgg.classpath変数を指定します。機能の詳細を参照してください。

8.2.28.6 OCI依存性

OCIのMaven座標は次のとおりです。

Maven groupId: com.oracle.oci.sdk

Maven artifactId: oci-java-sdk-full

バージョン: 1.34.0

次に、プロキシサーバーを介したルーティングをサポートするApacheアドオンを示します。

Maven groupId: com.oracle.oci.sdk

Maven artifactId: oci-java-sdk-addons-apache

バージョン: 1.34.0

8.2.28.6.1 OCI 1.34.0

accessors-smart-1.2.jar
aopalliance-repackaged-2.6.1.jar
asm-5.0.4.jar
bcpkix-jdk15on-1.68.jar
bcprov-jdk15on-1.68.jar
checker-qual-3.5.0.jar
commons-codec-1.15.jar
commons-io-2.8.0.jar
commons-lang3-3.8.1.jar
commons-logging-1.2.jar
error_prone_annotations-2.3.4.jar
failureaccess-1.0.1.jar
guava-30.1-jre.jar
hk2-api-2.6.1.jar
hk2-locator-2.6.1.jar
hk2-utils-2.6.1.jar
httpclient-4.5.13.jar
httpcore-4.4.13.jar
j2objc-annotations-1.3.jar
jackson-annotations-2.12.0.jar
jackson-core-2.12.0.jar
jackson-databind-2.12.0.jar
jackson-datatype-jdk8-2.12.0.jar
jackson-datatype-jsr310-2.12.0.jar
jackson-module-jaxb-annotations-2.10.1.jar
jakarta.activation-api-1.2.1.jar
jakarta.annotation-api-1.3.5.jar
jakarta.inject-2.6.1.jar
jakarta.ws.rs-api-2.1.6.jar
jakarta.xml.bind-api-2.3.2.jar
javassist-3.25.0-GA.jar
jcip-annotations-1.0-1.jar
jersey-apache-connector-2.32.jar
jersey-client-2.32.jar
jersey-common-2.32.jar
jersey-entity-filtering-2.32.jar
jersey-hk2-2.32.jar
jersey-media-json-jackson-2.32.jar
json-smart-2.3.jar
jsr305-3.0.2.jar
listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
nimbus-jose-jwt-8.5.jar
oci-java-sdk-addons-apache-1.34.0.jar
oci-java-sdk-analytics-1.34.0.jar
oci-java-sdk-announcementsservice-1.34.0.jar
oci-java-sdk-apigateway-1.34.0.jar
oci-java-sdk-apmcontrolplane-1.34.0.jar
oci-java-sdk-apmsynthetics-1.34.0.jar
oci-java-sdk-apmtraces-1.34.0.jar
oci-java-sdk-applicationmigration-1.34.0.jar
oci-java-sdk-artifacts-1.34.0.jar
oci-java-sdk-audit-1.34.0.jar
oci-java-sdk-autoscaling-1.34.0.jar
oci-java-sdk-bds-1.34.0.jar
oci-java-sdk-blockchain-1.34.0.jar
oci-java-sdk-budget-1.34.0.jar
oci-java-sdk-cims-1.34.0.jar
oci-java-sdk-circuitbreaker-1.34.0.jar
oci-java-sdk-cloudguard-1.34.0.jar
oci-java-sdk-common-1.34.0.jar
oci-java-sdk-computeinstanceagent-1.34.0.jar
oci-java-sdk-containerengine-1.34.0.jar
oci-java-sdk-core-1.34.0.jar
oci-java-sdk-database-1.34.0.jar
oci-java-sdk-databasemanagement-1.34.0.jar
oci-java-sdk-datacatalog-1.34.0.jar
oci-java-sdk-dataflow-1.34.0.jar
oci-java-sdk-dataintegration-1.34.0.jar
oci-java-sdk-datasafe-1.34.0.jar
oci-java-sdk-datascience-1.34.0.jar
oci-java-sdk-dns-1.34.0.jar
oci-java-sdk-dts-1.34.0.jar
oci-java-sdk-email-1.34.0.jar
oci-java-sdk-events-1.34.0.jar
oci-java-sdk-filestorage-1.34.0.jar
oci-java-sdk-full-1.34.0.jar
oci-java-sdk-functions-1.34.0.jar
oci-java-sdk-goldengate-1.34.0.jar
oci-java-sdk-healthchecks-1.34.0.jar
oci-java-sdk-identity-1.34.0.jar
oci-java-sdk-integration-1.34.0.jar
oci-java-sdk-keymanagement-1.34.0.jar
oci-java-sdk-limits-1.34.0.jar
oci-java-sdk-loadbalancer-1.34.0.jar
oci-java-sdk-loganalytics-1.34.0.jar
oci-java-sdk-logging-1.34.0.jar
oci-java-sdk-loggingingestion-1.34.0.jar
oci-java-sdk-loggingsearch-1.34.0.jar
oci-java-sdk-managementagent-1.34.0.jar
oci-java-sdk-managementdashboard-1.34.0.jar
oci-java-sdk-marketplace-1.34.0.jar
oci-java-sdk-monitoring-1.34.0.jar
oci-java-sdk-mysql-1.34.0.jar
oci-java-sdk-networkloadbalancer-1.34.0.jar
oci-java-sdk-nosql-1.34.0.jar
oci-java-sdk-objectstorage-1.34.0.jar
oci-java-sdk-objectstorage-extensions-1.34.0.jar
oci-java-sdk-objectstorage-generated-1.34.0.jar
oci-java-sdk-oce-1.34.0.jar
tbcampbe: oci-java-sdk-ocvp-1.34.0.jar
oci-java-sdk-oda-1.34.0.jar
oci-java-sdk-ons-1.34.0.jar
oci-java-sdk-opsi-1.34.0.jar
oci-java-sdk-optimizer-1.34.0.jar
oci-java-sdk-osmanagement-1.34.0.jar
oci-java-sdk-resourcemanager-1.34.0.jar
oci-java-sdk-resourcesearch-1.34.0.jar
oci-java-sdk-rover-1.34.0.jar
oci-java-sdk-sch-1.34.0.jar
oci-java-sdk-secrets-1.34.0.jar
oci-java-sdk-streaming-1.34.0.jar
oci-java-sdk-tenantmanagercontrolplane-1.34.0.jar
oci-java-sdk-usageapi-1.34.0.jar
oci-java-sdk-vault-1.34.0.jar
oci-java-sdk-waas-1.34.0.jar
oci-java-sdk-workrequests-1.34.0.jar
osgi-resource-locator-1.0.3.jar
resilience4j-circuitbreaker-1.2.0.jar
resilience4j-core-1.2.0.jar
slf4j-api-1.7.29.jar
vavr-0.10.0.jar
vavr-match-0.10.0.jar