14 Autonomous Data Warehouseイベント・ハンドラの使用
Oracle Autonomous Data Warehouse (ADW)は、市場をリードするOracle Databaseのパフォーマンスを備え、データ・ウェアハウスのワークロード用にチューニングおよび最適化された完全に管理されたデータベースです。
- 詳細な機能
ADWイベント・ハンドラは、OCI Object Storageイベント・ハンドラの出力に接続されたダウンストリーム・イベント・ハンドラとして使用されます。OCIイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたファイルをOracle OCI Object Storageにロードします。すべてのSQL操作は、スループットを改善するためにバッチで実行されます。 - OCI ObjectStoreファイルにアクセスするためのADWデータベース資格証明
- ADWデータベース・ユーザーの権限
ADWデータベースには、DWROLE
という名前の事前定義済データベース・ロールが付属しています。ADWのadminユーザーが使用されていない場合は、データベース・ユーザーにロールDWROLE
を付与する必要があります。 - サポートされていない操作/制限事項
- トラブルシューティングと診断
- クラスパス
ADW適用は、アップストリームのファイル・ライター・ハンドラとOCIイベント・ハンドラに依存します。OCIイベント・ハンドラを実行するために必要なjarをgg.classpath
に含めます。 - 構成
14.1 詳細な機能
ADWイベント・ハンドラは、OCI Object Storageイベント・ハンドラの出力に接続されたダウンストリーム・イベント・ハンドラとして使用されます。OCIイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたファイルをOracle OCI Object Storageにロードします。すべてのSQL操作は、スループットを改善するためにバッチで実行されます。
14.2 OCI ObjectStoreファイルにアクセスするためのADWデータベース資格証明
OCI ObjectStoreファイルにアクセスするには、次の手順を実行します。
- Oracle Cloud Infrastructure (OCI) Object Storeファイルにアクセスするための資格証明を作成するために、PL/SQLプロシージャを実行する必要があります。
- OCI認証トークンは、OCIコンソールの「ユーザー設定」で生成する必要があります。Oracle Autonomous Data Warehouse on Shared Exadata Infrastructureの使用の
CREATE_CREDENITAL
を参照してください。たとえば:BEGIN DBMS_CLOUD.create_credential ( credential_name => ‘OGGBD-CREDENTIAL', username => 'oci-user', password => ‘oci-auth-token'); END; /
- 資格証明名は、
gg.eventhandler.adw.objectStoreCredential
プロパティを使用して構成できます。たとえば、gg.eventhandler.adw.objectStoreCredential=OGGBD-CREDENTIAL
です。
14.3 ADWデータベース・ユーザーの権限
ADWデータベースには、DWROLE
という名前の事前定義済データベース・ロールが付属しています。ADWのadminユーザーが使用されていない場合は、データベース・ユーザーにロールDWROLE
を付与する必要があります。
このロールにより、データ・ウェアハウス操作に必要な権限が付与されます。たとえば、次のコマンドはユーザーdbuser-1
にDWROLE
を付与します。
GRANT DWROLE TO dbuser-1;
ノート:
ADWのレプリケーションにはOracleが作成したデータベース・ユーザーggadmin
を使用しないでください。このユーザーにはINHERIT
権限がないためです。
14.4 サポートされていない操作/制限事項
- DDLの変更はサポートされません。
- Oracleオブジェクト・データ型のレプリケーションはサポートされていません。
- GoldenGate証跡がOracle統合取得によって生成される場合、ソースLOB列に対するUPDATE操作については、LOBの変更部分のみが証跡ファイルに書き込まれます。Oracle GoldenGate for Big Data Autonomous Data Warehouse (ADW)適用では、証跡ファイル内の一部のLOB列のレプリケーションがサポートされません。
14.5 トラブルシューティングと診断
- ADWへの接続の問題
- JDBC接続URL、ユーザー名およびパスワードを検証してください。
- http/httpsプロキシが有効かどうか確認します。ADWのプロキシ構成を参照してください(Oracle Autonomous Data Warehouse on Shared Exadata Infrastructureの使用のOracle Call Interface (OCI)、ODBCおよびJDBC OCI接続の準備)。
- DDLがターゲット表に適用されていません: ADWハンドラはDDLを無視します。
- ターゲット表の存在: 適用プロセスを開始する前に、ADWターゲット表が存在している必要があります。ターゲット表は、適切な主キー、索引およびパーティションを使用して設計する必要があります。証跡ファイルの列メタデータに基づいた近似処理が常に正確であるとはかぎりません。したがって、ターゲット表が欠落している場合、Replicatが異常終了(ABEND)します。
- 適用プロセスに関する診断スループット情報は、ハンドラのログ・ファイルに記録されます。
たとえば:
File Writer finalized 29525834 records (rate: 31714) (start time: 2020-02-10 01:25:32.000579) (end time: 2020-02-10 01:41:03.000606).
このサンプル・ログ・メッセージの内容は次のとおりです。
- このメッセージは、ファイル・ライター・ハンドラおよびダウンストリーム・イベント・ハンドラ(OCIイベント・ハンドラおよびADWイベント・ハンドラ)のエンド-エンド・スループットの詳細を示しています。
- スループット率では、ファイルをロールオーバーする前に発生した待機時間も考慮されます。
- スループット率では、OCIイベント・ハンドラおよびADWイベント・ハンドラの操作の処理にかかった時間も考慮されます。
- 前述の例は、29525834個の操作が開始時間
[2020-02-10 01:25:32.000579]
と終了時間[2020-02-10 01:41:03.000606]
の間に31714個の操作/秒の速度でファイナライズされたことを示しています。
INFO 2019-10-01 00:36:49.000490 [pool-8-thread-1] – Begin DWH Apply stage and load statistics ********START********************************* INFO 2019-10-01 00:36:49.000490 [pool-8-thread-1] - Time spent for staging process [2074 ms] INFO 2019-10-01 00:36:49.000490 [pool-8-thread-1] - Time spent for merge process [992550 ms] INFO 2019-10-01 00:36:49.000490 [pool-8-thread-1] - [31195516] operations processed, rate[31,364]operations/sec. INFO 2019-10-01 00:36:49.000490 [pool-8-thread-1] – End DWH Apply stage and load statistics ********END*********************************** INFO 2019-10-01 00:37:18.000230 [pool-6-thread-1] – Begin OCI Event handler upload statistics ********START********************************* INFO 2019-10-01 00:37:18.000230 [pool-6-thread-1] - Time spent loading files into ObjectStore [71789 ms] INFO 2019-10-01 00:37:18.000230 [pool-6-thread-1] - [31195516] operations processed, rate[434,545] operations/sec. INFO 2019-10-01 00:37:18.000230 [pool-6-thread-1] – End OCI Event handler upload statistics ********END***********************************
この例の詳細は次のとおりです。
ADWイベント・ハンドラのスループット:
- 前述のログ・メッセージでは、ADWイベント・ハンドラの統計はDWH Apply stage and load statisticsとして報告されています。ADWはデータ・ウェアハウス(DWH)として分類されるため、この名前になります。
- ここでは、ソース証跡ファイルの31195516個の操作が、31364個の操作/秒の速度でADWデータベースに適用されました。
- ADWでは、ステージおよびマージが使用されます。ステージングに要した時間は2074ミリ秒で、SQLのマージの実行に要した時間は992550ミリ秒です。
- 前述のログ・メッセージでは、OCIイベント・ハンドラの統計はOCI Event handler upload statisticsとして報告されています。
- ここでは、ソース証跡ファイルの31195516個の操作が、434545個の操作/秒の速度でOCIオブジェクト・ストアにアップロードされました。
- ADW資格証明にOCIオブジェクト・ストア・ファイルの読取り権限の付与が欠落しているために発生するエラー:
- 認可失敗を示すSQL例外がハンドラのログ・ファイルに記録されます。たとえば:
java.sql.SQLException: ORA-20401: Authorization failed for URI - https://objectstorage.us-ashburn-1.oraclecloud.com/n/some_namespace/b/some_bucket/o/ADMIN.NLS_AllTypes/ADMIN.NLS_AllTypes_2019-12-16_11-44-01.237.avro
- 認可失敗を示すSQL例外がハンドラのログ・ファイルに記録されます。たとえば:
- ファイル形式/列データのエラー:
ADWイベント・ハンドラが列データ・エラーのために外部ステージング表からデータを読み取ることができない場合、Oracle GoldenGate for Big Dataハンドラのログ・ファイルは問題をデバッグするための診断情報を提供します。
ログ・ファイルでは次の詳細を入手できます。
JOB ID
SID
SERIAL #
ROWS_LOADED
START_TIME
UPDATE_TIME
STATUS
TABLE_NAME
OWNER_NAME
FILE_URI_LIST
LOGFILE_TABLE
BADFILE_TABLE
LOGFILE_TABLE
およびBADFILE_TABLE
の内容は、特定のレコードと、エラーが発生したレコード内の列およびエラーの原因を示します。また、この情報はADWイベント・ハンドラによって自動的に問い合せられ、OGGBD FW
ハンドラのログ・ファイルに記録されます。エラーの根本原因に基づいて、顧客はアクションを実行できます。多くの場合、顧客は、ソース列のデータ型に基づいてターゲット表の定義を変更し、Replicatを再起動する必要があります。それ以外の場合は、Replicat prmファイルのマッピングを変更することもできます。この場合、Replicatを再配置して最初から開始することをお薦めします。 - その他のSQLエラー:
SQLの実行中にエラーが発生した場合は、バインド・パラメータ値に加えてSQL文全体がOGGBDハンドラのログ・ファイルに記録されます。
- コンポーネントの共存:
Replicatプロセスが実行されているマシンの場所/リージョン、OCI Object Storageバケット・リージョンおよびADWリージョンは、適用プロセスの全体的なスループットに影響を与えます。データ・フローは、GoldenGate OCI Object Store ADWです。最高のスループットを得るには、コンポーネントをできるだけ近くに配置する必要があります。
- ターゲット表での行数の不一致のデバッグ
スループットを向上させるために、ADWイベント・ハンドラはターゲット表で変更された行数を検証しません。Javaシステム・プロパティ
disable.row.count.validation
を使用して、行数の一致を有効にできます。行数の検証を有効にするには、次のようにこのプロパティをjvm.bootoptions
に指定します(jvm.bootoptions=-Xmx512m -Xms32m -Djava.class.path=.:ggjava/ggjava.jar:./dirprm -Ddisable.row.count.validation=false
) - 証跡ファイルのLOBレコードの一部が原因のReplicatの異常終了(ABEND):
Oracle GoldenGate for Big Data ADW適用では、一部のLOBのレプリケーションはサポートされません。Extractパラメータ・ファイルで
TRANLOGOPTIONS
FETCHPARTIALLOB
オプションを使用して、Oracle統合取得によって証跡ファイルを再生成する必要があります。 - 非圧縮のUPDATE証跡によるスループットの向上:
ソース証跡ファイルに更新される行の完全イメージ(各表のすべての列値)が含まれている場合は、JVMのブート・オプション
-Dcompressed.update=false
を構成プロパティjvm.bootoptions
に含めることができます。特定のワークロードおよびADWインスタンス・シェイプでは、この構成によりスループットが向上する場合があります。使用している環境でスループットの向上をテストする必要がある場合があります。
14.6 クラスパス
ADW適用は、アップストリームのファイル・ライター・ハンドラとOCIイベント・ハンドラに依存します。OCIイベント・ハンドラを実行するために必要なjarをgg.classpath
に含めます。
ADWイベント・ハンドラは、Oracle JDBCドライバとその依存性を使用します。Autonomous Data Warehouse JDBCドライバおよびその他の必要な依存性は、Oracle GoldenGate for Big Dataにパッケージ化されています。
たとえば: gg.classpath=./oci-java-sdk/lib/*:./oci-java-sdk/third-party/lib/*
14.7 構成
- 自動構成
Autonomous Data Warehouse (ADW)のレプリケーションには、ファイル・ライター・ハンドラ、OCIイベント・ハンドラ、ADWイベント・ハンドラなどの複数のコンポーネントの構成が含まれます。 - ファイル・ライター・ハンドラの構成
ファイル・ライター・ハンドラ名は、値adw
に事前設定されています。ファイル・ライター・ハンドラのプロパティを編集する例を次に示します。gg.handler.adw.pathMappingTemplate=./dirout
- OCIイベント・ハンドラの構成
OCIイベント・ハンドラ名は、値ociに事前設定されています。 - ADWイベント・ハンドラの構成
ADWイベント・ハンドラ名は、値adw
に事前設定されています。 - エンドツーエンドの構成
14.7.1 自動構成
Autonomous Data Warehouse (ADW)のレプリケーションには、ファイル・ライター・ハンドラ、OCIイベント・ハンドラ、ADWイベント・ハンドラなどの複数のコンポーネントの構成が含まれます。
自動構成機能は、ユーザー構成が最小限になるようにこれらのコンポーネントを自動構成するのに役立ちます。自動構成によって変更されたプロパティもハンドラのログ・ファイルに記録されます。
ADWターゲットに自動構成を複製できるようにするには、パラメータを設定する必要があります
gg.target=adw
gg.target Required Legal Value: adw Default: None Explanation: Enables replication to ADW target
ADWターゲットに複製する場合、OCIイベント・ハンドラ名およびADWイベント・ハンドラ名はカスタマイズできません。
親トピック: 構成
14.7.2 ファイル・ライター・ハンドラの構成
ファイル・ライター・ハンドラ名は、値adw
に事前設定されています。ファイル・ライター・ハンドラのプロパティを編集する例を次に示します。gg.handler.adw.pathMappingTemplate=./dirout
親トピック: 構成
14.7.3 OCIイベント・ハンドラの構成
OCIイベント・ハンドラ名は、値ociに事前設定されています。
OCIイベント・ハンドラのプロパティを編集する例を次に示します。gg.eventhandler.oci.profile=DEFAULT
親トピック: 構成
14.7.4 ADWイベント・ハンドラの構成
ADWイベント・ハンドラ名は、値adw
に事前設定されています。
ADWイベント・ハンドラの構成は次のとおりです。
gg.eventhandler.adw.connectionURL Required Legal Value: ADW JDBC connection URL. Default: none Explanation: Sets the ADW JDBC connection URL. Example: jdbc:oracle:thin:@adw20190410ns_medium?TNS_ADMIN=/home/sanav/projects/adw/wallet
gg.eventhandler.adw.UserName Required Legal Value: JDBC User name. Default: none Explanation: Sets the ADW database user name
gg.eventhandler.adw.Password Required Legal Value: JDBC Password. Default: none Explanation: Sets the ADW database password.
gg.eventhandler.adw.maxStatements Optional Legal Values: Integer value between 1 to 250. Default: The default value is 250. Explanation: Use this parameter to control the number of prepared SQL statements that can be used.
gg.eventhandler.adw.maxConnnections Optional Legal Values: Integer value. Default: 10 Explanation: Use this parameter to control the number of concurrent JDBC database connections to the target ADW database.
gg.eventhandler.adw.dropStagingTablesOnShutdown Optional Legal Value: true | false Default: false Explanation: If set to true, the temporary staging tables created by the ADW event handler will be dropped on replicat graceful stop.
gg.eventhandler.adw.objectStoreCredential Required Legal Value: A database credential name. Default: none Explanation: ADW Database credential to access OCI object-store files.
親トピック: 構成
14.7.5 エンドツーエンドの構成
FWハンドラ、OCIおよびADWイベント・ハンドラの自動構成を使用するエンド-エンド構成の例を次に示します。このサンプル・プロパティ・ファイルは、OGGBD_InstallDir/AdapterExamples/big-data/adw-via-oci/adw.props
にもあります
# Configuration to load GoldenGate trail operation records # into Autonomous Data Warehouse (ADW) by chaining # File writer handler -> OCI Event handler -> ADW Event handler. # Note: Recommended to only edit the configuration marked as TODO gg.target=adw ##The OCI Event handler # TODO: Edit the OCI config file path. gg.eventhandler.oci.configFilePath=<path/to/oci/config> # TODO: Edit the OCI profile name. gg.eventhandler.oci.profile=DEFAULT # TODO: Edit the OCI namespace. gg.eventhandler.oci.namespace=<OCI namespace> # TODO: Edit the OCI region. gg.eventhandler.oci.region=<oci-region> # TODO: Edit the OCI compartment identifier. gg.eventhandler.oci.compartmentID=<OCI compartment id> gg.eventhandler.oci.pathMappingTemplate=${fullyQualifiedTableName} # TODO: Edit the OCI bucket name. gg.eventhandler.oci.bucketMappingTemplate=<ogg-bucket> ##The ADW Event Handler # TODO: Edit the ADW JDBC connectionURL gg.eventhandler.adw.connectionURL=jdbc:oracle:thin:@adw20190410ns_medium?TNS_ADMIN=/path/to/ /adw/wallet # TODO: Edit the ADW JDBC user gg.eventhandler.adw.UserName=<db user> # TODO: Edit the ADW JDBC password gg.eventhandler.adw.Password=<db password> # TODO: Edit the ADW Credential that can access the OCI Object Store. gg.eventhandler.adw.objectStoreCredential=<ADW Object Store credential> # TODO:Set the classpath to include OCI Java SDK. gg.classpath=./oci-java-sdk/lib/*:./oci-java-sdk/third-party/lib/* #TODO: Edit to provide sufficient memory (at least 8GB). jvm.bootoptions=-Xmx8g -Xms8g
親トピック: 構成