8.2.27 OCI 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に含めます。 - 構成
親トピック: ターゲット
8.2.27.1 詳細な機能
ADWイベント・ハンドラは、OCI Object Storageイベント・ハンドラの出力に接続されたダウンストリーム・イベント・ハンドラとして使用されます。OCIイベント・ハンドラは、ファイル・ライター・ハンドラによって生成されたファイルをOracle OCI Object Storageにロードします。すべてのSQL操作は、スループットを改善するためにバッチで実行されます。
8.2.27.2 OCI ObjectStoreファイルにアクセスするためのADWデータベース資格証明
OCI ObjectStoreファイルにアクセスするには、次の手順を実行します。
- Oracle Cloud Infrastructure (OCI) Object Storeファイルにアクセスするための資格証明を作成するために、PL/SQLプロシージャを実行する必要があります。
- OCI認証トークンは、OCIコンソールの「ユーザー設定」で生成する必要があります。たとえば:
BEGIN DBMS_CLOUD.create_credential ( credential_name => 'OGGBD-CREDENTIAL', username => 'oci-user', password => 'oci-user'); END; / - 資格証明名は、
gg.eventhandler.adw.objectStoreCredentialプロパティを使用して構成できます。たとえば、gg.eventhandler.adw.objectStoreCredential=OGGBD-CREDENTIALです。
8.2.27.3 ADWデータベース・ユーザーの権限
ADWデータベースには、DWROLEという名前の事前定義済データベース・ロールが付属しています。ADWのadminユーザーが使用されていない場合は、データベース・ユーザーにロールDWROLEを付与する必要があります。
このロールにより、データ・ウェアハウス操作に必要な権限が付与されます。たとえば、次のコマンドはユーザーdbuser-1にDWROLEを付与します。
GRANT DWROLE TO dbuser-1;
ノート:
ADWのレプリケーションにはOracleが作成したデータベース・ユーザーggadminを使用しないでください。このユーザーにはINHERIT権限がないためです。
8.2.27.4 サポートされていない操作/制限事項
- DDLの変更はサポートされません。
- Oracleオブジェクト・データ型のレプリケーションはサポートされていません。
- GoldenGate証跡がOracle統合取得によって生成される場合、ソースLOB列に対するUPDATE操作については、LOBの変更部分のみが証跡ファイルに書き込まれます。Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)のAutonomous Data Warehouse (ADW)適用では、証跡ファイル内のLOB列の一部分のレプリケーションはサポートされていません。
8.2.27.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 Distributed Applications and Analytics (GG for DAA)ハンドラのログ・ファイルで、その問題をデバッグするための診断情報が提供されます。
ログ・ファイルでは次の詳細を入手できます。
JOB IDSIDSERIAL #ROWS_LOADEDSTART_TIMEUPDATE_TIMESTATUSTABLE_NAMEOWNER_NAMEFILE_URI_LISTLOGFILE_TABLEBADFILE_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):
GG for DAAのADW適用では、部分LOBのレプリケーションはサポートされていません。Extractパラメータ・ファイルで
TRANLOGOPTIONSFETCHPARTIALLOBオプションを使用して、Oracle統合取得によって証跡ファイルを再生成する必要があります。 - 非圧縮のUPDATE証跡によるスループットの向上:
ソース証跡ファイルに更新される行の完全イメージ(各表のすべての列値)が含まれている場合は、JVMのブート・オプション
-Dcompressed.update=falseを構成プロパティjvm.bootoptionsに含めることができます。特定のワークロードおよびADWインスタンス・シェイプでは、この構成によりスループットが向上する場合があります。使用している環境でスループットの向上をテストする必要がある場合があります。
8.2.27.6 クラスパス
ADW適用は、アップストリームのファイル・ライター・ハンドラとOCIイベント・ハンドラに依存します。OCIイベント・ハンドラを実行するために必要なjarをgg.classpathに含めます。
ADWイベント・ハンドラは、Oracle JDBCドライバとその依存性を使用します。Autonomous Data Warehouse JDBCドライバおよびその他の必要な依存性は、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)とともにパッケージ化されています。
たとえば: gg.classpath=./oci-java-sdk/lib/*:./oci-java-sdk/third-party/lib/*
8.2.27.7 構成
- 自動構成
Autonomous Data Warehouse (ADW)のレプリケーションには、ファイル・ライター・ハンドラ、OCIイベント・ハンドラ、ADWイベント・ハンドラなどの複数のコンポーネントの構成が含まれます。 - ファイル・ライター・ハンドラの構成
ファイル・ライター・ハンドラ名は、値adwに事前設定されています。ファイル・ライター・ハンドラのプロパティを編集する例を次に示します。gg.handler.adw.pathMappingTemplate=./dirout - OCIイベント・ハンドラの構成
OCIイベント・ハンドラ名は、値‘oci’に事前設定されています。 - ADWイベント・ハンドラの構成
ADWイベント・ハンドラ名は、値adwに事前設定されています。 - INSERTALLRECORDSのサポート
- エンドツーエンドの構成
- 圧縮更新の処理
8.2.27.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イベント・ハンドラ名はカスタマイズできません。
親トピック: 構成
8.2.27.7.2 ファイル・ライター・ハンドラの構成
ファイル・ライター・ハンドラ名は、値adwに事前設定されています。ファイル・ライター・ハンドラのプロパティを編集する例を次に示します。gg.handler.adw.pathMappingTemplate=./dirout
親トピック: 構成
8.2.27.7.3 OCIイベント・ハンドラの構成
OCIイベント・ハンドラ名は、値ociに事前設定されています。
OCIイベント・ハンドラのプロパティを編集する例を次に示します。gg.eventhandler.oci.profile=DEFAULT
親トピック: 構成
8.2.27.7.4 ADWイベント・ハンドラの構成
ADWイベント・ハンドラ名は、値adwに事前設定されています。
ADWイベント・ハンドラの構成は次のとおりです。
| プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
|---|---|---|---|---|
gg.eventhandler.adw.connectionURL |
必須 | ADW | なし | ADW JDBC接続URLを設定します。例: jdbc:oracle:thin:@adw20190410ns_medium?TNS_ADMIN=/home/sanav/projects/adw/wallet |
gg.eventhandler.adw.UserName |
必須 | JDBCユーザー名 | なし | ADWデータベース・ユーザー名を設定します。 |
gg.eventhandler.adw.Password |
必須 | JDBCパスワード | なし | ADWデータベース・パスワードを設定します。 |
gg.eventhandler.adw.maxStatements |
オプション | 1から250の整数値。 | デフォルト値は250です。 | このパラメータを使用して、使用可能な準備済SQL文の数を制御します。 |
gg.eventhandler.adw.maxConnnections |
オプション | 整数値。 | 10 | このパラメータは、ターゲットADWデータベースへの同時JDBCデータベース接続の数を制御するために使用します。 |
gg.eventhandler.adw.dropStagingTablesOnShutdown |
オプション | true | false |
false |
trueに設定すると、ADWイベント・ハンドラによって作成された一時ステージング表は、Replicatの正常な停止時に削除されます。
|
gg.eventhandler.adw.objectStoreCredential |
必須 | データベース資格証明名。 | なし | OCIオブジェクトストア・ファイルにアクセスするためのADWデータベース資格証明。 |
gg.initialLoad |
オプション | true | false |
false |
trueに設定すると、初期ロード・モードが有効になります。「INSERTALLRECORDSのサポート」を参照してください。
|
gg.operation.aggregator.validate.keyupdate |
オプション | trueまたはfalse |
false |
trueに設定すると、操作アグリゲータはキー更新操作(optype 115)を検証し、キー値が変更されていない場合は通常の更新に訂正します。圧縮キー更新操作はマージ対象ではありません。
|
gg.compressed.update |
オプション | trueまたはfalse |
true |
trueを設定すると、ソース証跡ファイルに圧縮更新操作が含まれていることを示します。trueに設定すると、ソース証跡ファイルには、非圧縮更新操作が含まれることが想定されます。
|
gg.eventhandler.adw.connectionRetries
|
オプション | 整数値 | 3 | ターゲット・データ・ウェアハウスへの接続が再試行される回数を指定します。 |
gg.eventhandler.adw.connectionRetryIntervalSeconds |
オプション | 整数値 | 30 | 接続再試行間の遅延(秒単位)を指定します。 |
gg.aggregate.operations.flush.interval |
オプション | 整数 | 30000 | flush intervalパラメータは、データがADWにマージされる頻度を決定します。値はミリ秒単位で設定されます。
注意: この値が大きいほど、より多くのデータがReplicatプロセスのメモリーに格納されます。ノート: flush intervalパラメータは慎重に使用してください。デフォルト値を増やすと、Replicatの内部メモリーに格納されるデータの量が増えます。これにより、メモリー不足エラーが発生し、メモリー不足になるとReplicatが停止する可能性があります。 |
親トピック: 構成
8.2.27.7.5 INSERTALLRECORDSのサポート
ステージングおよびマージ・ターゲットでは、INSERTALLRECORDSパラメータがサポートされます。
『Oracle GoldenGateリファレンス』のINSERTALLRECORDSを参照してください。Replicatパラメータ・ファイル(.prm)でINSERTALLRECORDSパラメータを設定します。Replicatパラメータ・ファイル(.prm)でINSERTALLRECORDSパラメータを設定します
このプロパティを設定すると、Replicatプロセスに、操作データをターゲット表にロードするための一括挿入操作を使用するように指示されます。
一括挿入のバッチ・サイズは、ファイル・ライター・プロパティgg.handler.adw.maxFileSizeを使用してチューニングできます。デフォルト値は1GBに設定されています。一括挿入の頻度は、ファイル・ライター・プロパティgg.handler.adw.fileRollIntervalを使用してチューニングでき、デフォルト値は3m (3分)に設定されています。
.prm)でINSERTALLRECORDSパラメータを設定します。このプロパティを設定すると、Replicatプロセスに、操作データをターゲット表にロードするための一括挿入操作を使用するように指示されます。
一括挿入のバッチ・サイズは、ファイル・ライター・プロパティgg.handler.adw.maxFileSizeを使用してチューニングできます。デフォルト値は1GBに設定されています。一括挿入の頻度は、ファイル・ライター・プロパティgg.handler.adw.fileRollIntervalを使用してチューニングでき、デフォルト値は3m (3分)に設定されています。
親トピック: 構成
8.2.27.7.6 エンドツーエンドの構成
- Oracle GoldenGate Classicインストール内:
<oggbd_install_dir>/AdapterExamples/big-data/adw-via-oci/adw.props - Oracle GoldenGate Microservicesインストール内:
<oggbd_install_dir>/opt/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親トピック: 構成
8.2.27.7.7 圧縮更新の処理
圧縮更新レコードには、キー列および変更された列の値が含まれています。
非圧縮更新レコードには、すべての列の値が含まれています。
Oracle GoldenGate証跡には、圧縮更新レコードまたは非圧縮更新レコードを含めることができます。デフォルトの抽出構成では、圧縮更新が証跡に書き込まれます。
パラメータgg.compressed.updateをtrueまたはfalseに設定して、圧縮/非圧縮更新レコードを指定できます。
親トピック: 構成
8.2.27.7.7.1 非圧縮更新を含むMERGE文
場合によっては、証跡に非圧縮更新レコードが含まれている場合、gg.compressed.update=falseを設定することで、パフォーマンスを向上させるためにMERGE SQL文を最適化できます。
ノート:
MERGE SQL文のかわりにDELETE+INSERT SQL文を使用する場合は、gg.eventhandler.snowflake.deleteInsert=trueを設定します。
親トピック: 圧縮更新の処理