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 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):
GG for DAAのADW適用では、部分LOBのレプリケーションはサポートされていません。Extractパラメータ・ファイルで
TRANLOGOPTIONS
FETCHPARTIALLOB
オプションを使用して、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
を設定します。
親トピック: 圧縮更新の処理