1 Oracle GoldenGate for Big Dataの概要
Oracle GoldenGate for Big Data統合は、Oracle GoldenGate Java Deliveryフレームワークへのプラガブル機能として実行され、Javaアダプタ・フレームワークとも言います。この機能は、Java Deliveryの機能を拡張します。Oracle GoldenGate Java配信で、Java配信の説明を参照することをお薦めします。
トピック:
1.1 サポート対象の理解
Oracle GoldenGate for Big Dataは特定の構成をサポートし、ハンドラは明確に定義されたソフトウェア・バージョンと互換性があり、多くのサポート・トピックがあります。この項では、関連するサポート情報を示します。
トピック:
1.1.1 動作保証要件とシステム要件の確認
サポートされているハードウェアまたはソフトウェア構成で製品をインストールすることを確認します。詳細は、「Oracle Fusion Middleware Supported System Configurations」ページのリリースの動作保証に関するドキュメントを参照してください。
Oracleでは、動作保証済のすべてのシステムおよび環境で製品のパフォーマンスをテストおよび検証しており、新しい動作保証情報が発表された場合は、適切な動作保証ドキュメントにすぐに追加されます。新しい動作保証情報は常に発生する可能性があるため、動作保証に関するドキュメントはOracle Technology Networkのドキュメント・ライブラリの外部に保持されます。
親トピック: サポート対象の理解
1.1.2 その他のサポートに関する考慮事項。
この項では、Oracle GoldenGate for Big Dataのハンドラのその他のサポートに関する考慮事項について説明します。
- プラガブル・フォーマッタ - サポート
-
次に示すように、ハンドラは、「プラガブル・フォーマッタの使用」で説明されているプラガブル・フォーマッタをサポートします。
- HDFSハンドラは、すべてのプラガブル・ハンドラをサポートします。
-
プラガブル・フォーマッタは、HBaseハンドラには適用されません。データは、プロプライエタリなHBaseクライアント・インタフェースを使用してHBaseにストリーミングされます。
-
Flumeハンドラは、説明されているすべてのプラガブル・ハンドラをサポートします。
-
Kafkaハンドラは、説明されているすべてのプラガブル・ハンドラをサポートします。
-
Kafka Connectハンドラは、プラガブル・フォーマッタをサポートしていません。Kafka Connectのデータ・コンバータを使用してデータをJSONまたはAvroに変換できます。
-
Kinesis Streamsハンドラは、説明されているすべてのプラガブル・ハンドラをサポートします。
-
Cassandra、MongoDBおよびJDBCハンドラは、プラガブル・フォーマッタを使用しません。
- Avroフォーマッタ - バイナリ・ソース・データのサポートの向上
-
以前のリリースでは、AvroフォーマッタはAvroのbyteデータ型をサポートしていませんでした。バイナリ・データがかわりにBase64に変換され、stringデータ型のフィールドとしてAvroメッセージに保存されていました。これには、Base64からバイナリにデータを戻すための追加の変換ステップが必要でした。
Avroフォーマッタは、Avroバイト・フィールドにマップされるバイナリ・ソース・フィールドを識別できるようになりました。ソース証跡ファイルからの元のバイト・ストリームは、Base64に変換せずに対応するAvroメッセージに伝播されます。
- Avroフォーマッタ - 汎用ラッパー
-
schema_hash
フィールドはschema_fingerprint
フィールドに変更されました。schema_fingerprint
はlong型で、org.apache.avro.SchemaNormalization
クラスのparsingFingerprint64(Schema s)
メソッドを使用して生成されます。この識別子によって、汎用ラッパー・メッセージから、汎用ラッパー・メッセージに含まれるAvroペイロード・メッセージの生成に使用されるAvroスキーマへのトレーサビリティが向上します。 - JSONフォーマッタ - 行モデル化データ
-
JSONフォーマッタは、操作モデル化データに加えて、行モデル化データもサポートします。行モデル化データには、挿入操作後のイメージ・データ、更新操作後のイメージ・データ、削除操作前のイメージ・データ、および主キー更新の特別な処理が含まれます。
- Extractを使用するJava配信
-
Extractを使用するJava配信はサポートされておらず、このリリースで非推奨となりました。Java配信のサポートは、Replicatプロセスの使用でのみサポートされています。Replicatにより、パフォーマンスが向上し、チェックポイントのサポートが改善され、トランザクションのグループ化の制御が改善されます。
- Kafkaハンドラ - バージョン
-
Kafkaバージョン0.8.2.2、0.8.2.1および0.8.2.0のサポートは中止されました。これにより、Kafkaプロデューサでのフラッシュ・コールの実装が可能になり、フロー制御およびチェックポイント化のサポートが改善されました。
- HDFSハンドラ - ファイル作成
-
抽出、ロード、変換(ELT)を使用できるように、HDFSハンドラに新機能が追加されました。前のファイルが閉じるとただちに新しいファイルを作成する
gg.handler.name.openNextFileAtRoll=true
プロパティが新しく追加されました。前のファイル・ストリームをクローズした直後に、新しいファイルがHDFSディレクトリに表示されます。Avroオブジェクト・コンテナ・ファイル(OCF)形式または順序ファイル形式でHDFSファイルを書き込む際には、この機能は動作しません。
- MongoDBハンドラ - サポート
-
-
このハンドラのみが、ソース表から一意の行を複製できます。ソース表に定義済の主キーがなく、重複行がある場合、MongoDBターゲットに重複行を複製すると、重複キー・エラーが発生し、Replicatプロセスが異常終了します。
-
欠落した更新および削除は検出されないため、無視されます。
-
シャード・コレクションでテストされていません。
-
ミリ秒の精度の日時データ型のみをサポートします。証跡からの値でマイクロ秒またはナノ秒の精度のものは、ミリ秒の精度に切り捨てられます。
-
証跡で
timezone
を含むdatetime
データ型は、サポートされていません。 -
BSONドキュメントの最大サイズは16MBです。証跡レコード・サイズがこの制限を超えると、ハンドラはレコードを複製できません。
-
DDL伝播はありません。
-
切捨て操作はありません。
-
- JDBCハンドラ - サポート
-
-
JDBCハンドラは汎用JDBC APIを使用します。つまりJDBCドライバが実装されたターゲット・データベースは、このハンドラを使用できる必要があります。JDBC APIをサポートする様々なデータベースが無数にあるため、OracleではすべてのターゲットのJDBCを動作保証できるわけではありません。Oracleでは、次のRDBMSターゲットのJDBCハンドラが動作保証されています。
- Oracle
- MySQL
- Netezza
- Redshift
- Greenplum
-
ハンドラは
REPERROR
およびHANDLECOLLISIONS
パラメータを使用したReplicatをサポートします。『Oracle GoldenGateリファレンス』を参照してください。 -
Redshift JDBCドライバを介して取得されたデータベース・メタデータには、既知の制約事項があります。『Oracle GoldenGate for Big Dataリリース・ノート』を参照してください。
Replicatパラメータ・ファイルのRedshiftターゲット表名は、小文字で、二重引用符で囲む必要があります。次に例を示します。
MAP SourceSchema.SourceTable, target “public”.”targetable”;
-
DDL操作はデフォルトで無視され、
WARN
レベルで記録されます。 -
調整Replicatは、シリアルではなくパラレルでトランザクションを適用するマルチスレッド・プロセスです。個々のスレッドは割り当てられたワークロードに対するフィルタリング、マッピング、変換、SQL構築およびエラー処理をすべて扱います。コーディネータ・スレッドは依存関係を示すようにスレッド間のトランザクションを調整します。これにより、データベース固有のルールに基づいた行ロック、ブロック・ロックまたは表ロックの問題が原因で同時に同じオブジェクトで特定のDMLが発生することを回避する同期的な方法で、DMLが適用されます。データベース・ロックの問題がある場合は、調整Replicatのパフォーマンスが非常に遅いか、一時停止している可能性があります。
-
- デリミタ付きフォーマッタ - 制限
-
デリミタ付きフォーマッタ出力を生成するように構成されたハンドラは、単一の文字区切りフィールドのみを許可します。デリミタ・フィールドの長さが1文字より大きい場合、ハンドラで次のようなエラー・メッセージが表示され、Replicatは異常終了します。
oracle.goldengate.util.ConfigException: Delimiter length cannot be more than one character. Found delimiter [||]
- DDLイベント処理
-
TRUNCATE TABLE
DDL文のみがサポートされています。他のすべてのDDL文は無視されます。TRUNCATE
文は、次のいずれかの方法で使用できます。-
DDL文では、
TRUNCATE TABLE
、ALTER TABLE TRUNCATE PARTITION
およびその他のDDLTRUNCATE
文。これは、DDL
パラメータを使用します。 -
スタンドアロン
TRUNCATE
サポート。TRUNCATE TABLE
のみが含まれます。これは、GETTRUNCATES
パラメータを使用します。
-
親トピック: サポート対象の理解
1.2 Oracle GoldenGate for Big Dataの設定
ビッグ・データ・ターゲットとのOracle GoldenGate for Big Data統合を設定するために実行する必要のある様々なタスク。
トピック:
1.2.1 Oracle GoldenGateプロパティ・ファイルについて
Oracle GoldenGate Java Deliverのユーザー・イグジット(Oracle GoldenGate Javaアダプタとも言う)を実行するために必要なOracle GoldenGateプロパティ・ファイルが、2つあります。ビッグ・データ統合を含むJava統合をホストするOracle GoldenGate Java Deliveryです。いずれかのプロセスを実行するには、Replicatプロパティ・ファイルが必要です。Replicatファイル名に必要な命名規則は、process_name.
prm
です。Replicatプロパティ・ファイルでのエグジット構文には、Javaアダプタ・プロパティ・ファイルの名前と場所を指定します。Javaアダプタの構成プロパティにGoldenGate for Big Data統合が含まれるのは、Javaアダプタ・プロパティ・ファイルです。Oracle GoldenGate for Big Data統合を実行するには、ReplicatとJavaアダプタのプロパティ・ファイルが必要です。
あるいは、デフォルト構文process_name.
properties
を使用しても、Javaアダプタ・プロパティは解決できます。Javaアダプタ・プロパティ・ファイルのデフォルトの命名を使用すると、Javaアダプタ・プロパティ・ファイルの名前をReplicatプロパティ・ファイルから省略できます。
Oracle GoldenGate for Big Data統合のプロパティ・ファイルの例は、次のディレクトリのサブディレクトリにあります。
GoldenGate_install_dir
/AdapterExamples/big-data
1.2.2 Java Runtime Environmentの設定
Oracle GoldenGate for Big Data統合は、実行時にJava仮想マシンのインスタンスを作成します。Oracle GoldenGate for Big Dataには、最低でもOracle Java 8 Java Runtime Environment (JRE)をインストールする必要があります。
Java 8のインストール・ディレクトリを指すようにJAVA_HOME
環境変数を設定することをお薦めします。また、Java配信プロセスでは、Java共有ライブラリのlibjvm.so
およびlibjsig.so
をロードする必要があります。これらのライブラリは、JREの一部としてインストールされます。これらの共有ライブラリの場所を解決する必要があり、動的なライブラリを解決するように設定された適切な環境変数を、実行時にロードできます(つまり、LD_LIBRARY_PATH
、PATH
またはLIBPATH
)。
1.2.3 Java仮想マシンのメモリーの構成
Oracle GoldenGate for Big Dataのチューニングの問題の1つは、JavaアダプタをホストしているReplicatプロセスに割り当てるJava仮想マシン(JVM)のヒープ・メモリーの量を決定することです。JVMメモリーは、アプリケーションの起動前に構成する必要があります。それ以外の場合は、デフォルトのJavaヒープ・サイズが使用されます。小さいサイズを設定した場合、JVMヒープによって実行時の問題が発生する可能性があるため、適切なJVMヒープ・サイズを指定することが重要です。
-
ExtractまたはReplicatプロセスの異常終了の原因となるJavaメモリー不足例外。
-
Javaガベージ・コレクションの頻度を増やすと、パフォーマンスが低下します。Javaガベージ・コレクション呼出しによって、すべての参照されないJavaオブジェクトが割当て解除され、再利用するヒープ・メモリーが再要求されます。
または、あまりに多くのヒープ・メモリーは非効率的です。JVMは、起動時に最大ヒープ・メモリー(-Xmx
)を予約します。この予約済メモリーは、JVMによってすべてが使用されていない場合でも、通常、他のアプリケーションでは使用できません。次の2つのパラメータを使用して、JVMメモリーを設定できます。
-
-Xmx
- 最大JVMヒープ・サイズ。その量が予約されます。 -
-Xms
- 初期JVMヒープ・サイズ。追加の割当てのサイズも制御します。
-Xmx
および–Xms
プロパティは、Javaアダプタのプロパティ・ファイルで次のように設定されます。
javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar
最大の初期JVMヒープ・サイズの値を計算するためのルールまたは式ではありません。Javaヒープ使用量は変数となり、その多くは実行時に大きく変化する数多くの要因に依存します。Oracle GoldenGate Javaアダプタのログ・ファイルは、ステータス・コールが呼び出されたときにJavaヒープのコード測定を提供します。この情報は、Javaアダプタのlog4j
ログ・ファイルに、次のように示されます。
INFO 2017-12-21 10:02:02,037 [pool-1-thread-1] Memory at Status : Max: 455.00 MB, Total: 58.00 MB, Free: 47.98 MB, Used: 10.02 MB
値は、次のように解釈できます。
-
Max
- 予約されたヒープ・メモリーの値(通常はオーバーヘッドのため約10%削減された-Xmx
設定)。 -
Total
- 現在割り当てられている量(通常はオーバーヘッドのため約10%削減された-Xms
設定の倍数)。 -
Free
- 現在割り当てられているが、Javaオブジェクトの割当てに使用できるヒープ・メモリー。 -
Used
- 現在Javaオブジェクトに割り当てられているヒープ・メモリー。
Javaアダプタ・プロパティ・ファイルのgg.report.time=30sec
構成パラメータを使用してステータスがログに記録される頻度を制御できます。
実際のデータを使用してプロセスをテスト実行し、ヒープ使用率のログを確認する必要があります。次に、ピーク・メモリー使用率を分析し、メモリーの使用頻度のスパイクに対応し、メモリー割当ておよびガベージ・コレクション・プロセスを効率化するために、25%から30%多いメモリーを割り当てます。
次のアイテムによって、Replicatプロセスで必要なヒープ・メモリーを増やすことができます。
-
tx
mod (たとえば、gg.handler.name.mode=tx
)での操作 -
Replicatプロパティ
GROUPTRANSOPS
を大きい値に設定する -
幅の広い表
-
ソース内のCLOBまたはBLOBデータ
-
ソース・データの非常に大規模なトランザクション
1.2.4 トランザクションのグループ化
Oracle GoldenGate for Big Data統合でパフォーマンスを向上させる主な方法は、トランザクションのグループ化を利用する方法です。トランザクションのグループ化では、複数のトランザクションの操作をグループ化し、1つの大きいトランザクションにまとめます。大きいグループにまとめられたトランザクションを実行したほうが、通常は、小さい個別のトランザクションを実行するより効率的だからです。「Replicatによる実行」で説明されているように、トランザクションのグループ化は、Replicatプロセスで可能です。
1.3 Oracle GoldenGate for Big Dataの構成
この項では、Oracle GoldenGate for Big Dataのハンドラの構成方法について説明します。
トピック:
1.3.1 Replicatによる実行
この項では、Oracle GoldenGate ReplicatプロセスでJavaアダプタを実行する方法について説明します。内容は次のとおりです。
トピック:
1.3.1.1 Replicatの構成
Javaアダプタで仕様するReplicatプロセス・プロパティ・ファイルの構成方法の例を次に示します。
REPLICAT hdfs TARGETDB LIBFILE libggjava.so SET property=dirprm/hdfs.properties --SOURCEDEFS ./dirdef/dbo.def DDL INCLUDE ALL GROUPTRANSOPS 1000 MAPEXCLUDE dbo.excludetable MAP dbo.*, TARGET dbo.*;
次に示すのは、このReplicat構成エントリの説明です。
REPLICAT hdfs
- Replicatプロセスの名前。
TARGETDB LIBFILE libggjava.so SET property=dirprm/hdfs.properties
- 終了時のターゲット・データベースをlibggjava.so
に設定し、Javaアダプタのプロパティ・ファイルをdirprm/hdfs.properties
に設定します。
--SOURCEDEFS ./dirdef/dbo.def
- ソース・データベース定義ファイルを設定します。これは、Oracle GoldenGateの証跡ファイルが証跡でメタデータを提供するため、コメント・アウトされています。
GROUPTRANSOPS 1000
- ソース証跡ファイルからの1000個のトランザクションを1つのターゲット・トランザクションにグループ化します。これがデフォルトで、ビッグ・データ統合のパフォーマンスが向上します。
MAPEXCLUDE dbo.excludetable
- 除外する表を設定します。
MAP dbo.*, TARGET dbo.*;
- 入力表から出力表へのマッピングを設定します。
親トピック: Replicatによる実行
1.3.1.2 Replicatプロセスの追加
ggsci
でReplicatプロセスを追加して起動するコマンドは、次のとおりです。
ADD REPLICAT hdfs, EXTTRAIL ./dirdat/gg START hdfs
親トピック: Replicatによる実行
1.3.1.3 Replicatのグループ化
Replicatプロセスは、Replicat構成プロパティGROUPTRANSOPS
を提供してトランザクションのグループ化を制御します。デフォルトでは、Replicatプロセスは1000個のトランザクションを1つのターゲット・トランザクションにグループ化します。トランザクションのグループ化をオフにする場合は、ReplicatプロパティGROUPTRANSOPS
を1
に設定します。
親トピック: Replicatによる実行
1.3.1.4 Replicatチェックポイントについて
Replicatチェックポイント・ファイル.cpr
のほか、データベースのReplicatにおけるCHECKPOINTTABLE
と似た情報を含む追加のチェックポイント・ファイルdirchk/group.cpj
も作成されます。
親トピック: Replicatによる実行
1.3.1.5 初期ロードのサポートについて
Replicatではすでに、一連の証跡ファイルに書き込むオンライン・キャプチャ・プロセスおよび初期ロード・プロセスの両方からの証跡ファイルを読み取ることができます。さらに、Extractパラメータ・ファイルでRMTTASK
の指定を使用して、特別実行の初期ロード・プロセスの配信をサポートするようにReplicatを構成することもできます。ダイレクト・ロードの構成の詳細は、Oracle GoldenGateダイレクト・ロードを使用したデータのロードに関する項を参照してください。
注意:
SOURCEDB
またはDBLOGIN
パラメータの指定は、ソース・データベースによって異なります。
親トピック: Replicatによる実行
1.3.1.6 サポートされないReplicatの機能について
次のReplicat機能は、このリリースではサポートされません。
-
BATCHSQL
-
SQLEXEC
-
ストアド・プロシージャ
-
競合の解決および検出(CDR)
親トピック: Replicatによる実行
1.3.1.7 マッピング機能の仕組み
Oracle GoldenGate Replicatプロセスは、カスタム・ターゲット・スキーマへのマッピングをサポートしています。メタデータ・プロバイダ機能を使用して、ターゲット・スキーマ(複数も可)を定義してから、Replicat構成ファイルで標準のReplicatマッピング構文を使用して、マッピングを定義する必要があります。レプリケーション構成ファイルのReplicatマッピング構文の詳細は、データのマッピングと操作に関する項を参照してください。
親トピック: Replicatによる実行
1.3.2 ロギングの概要
ビッグ・データのターゲットに対して使用するOracle GoldenGate for Big Data統合をトラブルシューティングするには、ロギングが必須です。この項では、Oracle GoldenGate for Big Data統合のログと、ロギングのベスト・プラクティスについて説明します。
トピック:
1.3.2.1 Replicatプロセスのロギングについて
Oracle GoldenGate for Big Data統合は、「Javaメッセージの配信」で説明されているJava配信の機能を利用します。この設定では、Oracle GoldenGateのReplicatプロセスがユーザー・エグジット共有ライブラリをロードします。この共有ライブラリは次に、Java仮想マシンをロードし、それによってJavaインタフェースを提供するターゲットとのインタフェースをとります。したがって、データのフローは次のようになります。
Replicatプロセス —> ユーザー・イグジット —> Java層
ユーザーがログを見直して新しいインストールと統合をトラブルシューティングするには、すべての層で正しくログを記録することが重要です。また、問題が発生してOracleサポートへの連絡が必要になった場合も、ログ・ファイルは問題を効率的に解決するために、Oracleサポートに提供する情報としても重要です。
Replicatプロセスを実行すると、GoldenGate_Home/dirrpt
ディレクトリにログ・ファイルが作成または追加されます。ファイルの命名規則は、process_name.rpt.
です。新しいOracle GoldenGateプロセスをデプロイするときに問題が発生した場合は、最初に問題の有無を調べるべきログ・ファイルの候補です。ビッグ・データ・アプリケーションと統合する場合、Java層は重要です。
親トピック: ロギングの概要
1.3.2.2 Java層のロギングについて
Oracle GoldenGate for Big Data製品には、Java層からログを記録できる柔軟性があります。ベスト・プラクティスとしては、Log4jロギングを使用してJava層からログを記録することをお薦めします。単純なLog4jロギングを有効にするには、Javaアダプタ構成ファイルで2つの構成値を設定する必要があります。
gg.log=log4j gg.log.level=INFO
gg.log
設定で、Log4jファイルはGoldenGate_Home
/dirrpt
ディレクトリに作成され、ファイル名はprocess_name_log level
_log4j.log
という命名規則に従います。サポートされるLog4jログ・レベルは、ロギングの粒度の順に次のリストになります。
-
OFF
-
FATAL
-
ERROR
-
WARN
-
INFO
-
DEBUG
-
TRACE
ロギング・レベルの選択には、粒度が低いほうのロギング・レベルがすべて含まれます(つまり、WARN
を選択した場合は、FATAL
、ERROR
、WARN
のログ・メッセージがログ・ファイルに書き込まれます)。Log4jロギングはまた、個々のLog4jプロパティ・ファイルでも制御できます。こうした個別のLog4jプロパティ・ファイルを有効にするには、Javaアダプタ・プロパティ・ファイルでbootoptions
プロパティを編集します。Log4jプロパティ・ファイルの3つの例が、インストール時に追加され、次のクラスパスにも含まれています。
log4j-default.properties log4j-debug.properites log4j-trace.properties
これらのファイルのいずれかで、次のようにbootoptions
を変更できます。
javawriter.bootoptions=-Xmx512m -Xms64m -Djava.class.path=.:ggjava/ggjava.jar -Dlog4j.configuration=samplelog4j.properties
カスタマイズした独自のLog4jプロパティ・ファイルを使用してロギングを制御できます。カスタマイズしたLog4jプロパティ・ファイルを、JVMが検索してロードするには、それがJavaクラスパスに存在する必要があります。カスタムLog4jプロパティ・ファイルの例を次に示します。
# Root logger option log4j.rootLogger=INFO, file # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=sample.log log4j.appender.file.MaxFileSize=1GB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
カスタムのLog4jプロパティ・ファイルを使用する場合には、重要な要件が2つあります。1つ目に、カスタムLog4jプロパティ・ファイルのパスがjavawriter.bootoptions
プロパティに含まれる必要があります。ロギングは、ロギングの書記化後にgg.classpath
プロパティの内容が実際にclassloader
に追加されるとき、JVMが初期化されるとただちに初期化されます。2つ目に、プロパティ・ファイルを正しくロードするclasspath
は、ワイルドカードを追加していないプロパティ・ファイルを含むディレクトリである必要があります。
親トピック: ロギングの概要
1.3.3 スキーマ展開およびメタデータ変更イベントについて
証跡内のメタデータは、スキーマ展開およびビッグ・データのターゲット・アプリケーションへのスキーマ伝播を含む、Oracle GoldenGate for Big Dataによるメタデータ変更イベントのシームレスな実行時処理を可能にする機能です。NO_OBJECTDEFS
は、ExtractおよびReplicatのEXTTRAIL
およびRMTTRAIL
パラメータのサブパラメータで、証跡機能の重要なメタデータを抑制し、静的なメタデータ定義の使用に戻すことができます。
Oracle GoldenGate for Big Dataのハンドラとフォーマッタには、メタデータ変更イベントが発生したときにアクションを実行する機能があります。メタデータ変更イベントが発生したときにアクションを実行できる機能は、ソース証跡ファイルで利用できるメタデータ変更イベントによって異なります。Oracle GoldenGate は、ソースのOracleデータベースからの証跡のメタデータと、DDLデータを伝播をサポートします。ソース証跡ファイルに、証跡のメタデータとDDLデータ(メタデータ変更イベント)がない場合、Oracle GoldenGate for Big Dataはメタデータ変更イベントを処理できません。
1.3.4 構成プロパティCDATA[]のラッピングについて
GoldenGate for Big Dataのハンドラおよびフォーマッタでは、値を空白として解釈できるJavaプロパティ・ファイルで、多くのパラメータの構成がサポートされています。Javaアダプタの構成処理では、Java構成ファイルの構成値から空白が削除されます。空白を削除するこの動作は、構成値によっては望ましいこともありますか、別の構成値には望ましくない場合もあります。また、選択した構成変数で空白が維持されるように、空白値を特殊な構文でラップできます。GoldenGate for Big Dataは、空白を維持するためにCDATA[]
のXML構文を借用しています。空白文字と見なされる値を、CDATA[]
の内部にラップできます。
区切りテキスト・フォーマッタで、改行を区切り文字として設定しようとする例を次に示します。
gg.handler.{name}.format.lineDelimiter=\n
この構成は成功しません。改行文字は空白として解釈され、構成値から削除されてしまうからです。したがって、gg.handler
設定では実質的に、行区切り文字が空白文字列に設定されます。
改行文字の構成を維持するには、次のように、その文字をCDATA[]
ラッパーでラップするだけです。
gg.handler.{name}.format.lineDelimiter=CDATA[\n]
CDATA[]
のラッピングでプロパティを構成すると、空白が維持され、行区切り文字は改行文字になります。
1.3.5 正規表現を使用した検索と置換
個別に構成されるスキーマ・データ(カタログ名、スキーマ名、表名、列名)と列値データの両方についてより強力な検索および置換操作を実行できます。正規表現(regex
)は、パターン・マッチングを通じて検索文字列をカスタマイズする文字列です。文字列を1つのパターンまたは正確に一致する部分に一致させることができます。Oracle GoldenGate for Big Dataでは、標準のOracle Java正規表現パッケージjava.util.regex
が使用されます。Single UNIX Specification, Version 4の「正規表現」を参照してください。
トピック:
1.3.5.1 スキーマ・データの置換の使用
gg.schemareplaceregex
およびgg.schemareplacestring
プロパティを使用してスキーマ・データを置換できます。gg.schemareplaceregex
を使用して正規表現を設定してから、それを使用してカタログ名、スキーマ名、表名、および列名で対応する一致項目を検索します。一致項目はgg.schemareplacestring
値の内容に置き換えられます。gg.schemareplacestring
のデフォルト値は空の文字列または""
です。
たとえば、システム表名の中には、$mytable
のようにドル記号から始まるものがあります。ほとんどのビッグ・データ・ターゲットでは表名にドル記号を使用できませんが、これらの表を複製する必要がある場合があります。ドル記号を削除するには、次の置換文字列を構成できます。
gg.schemareplaceregex=[$]
gg.schemareplacestring=
検索および置換された表名の結果の例はmytable
です。これらのプロパティはCDATA[]
ラッピングもサポートして、構成値の値の空白を保持します。したがって、前と同じ例でCDATA[]
ラッピングすると次のようになります。
gg.schemareplaceregex=CDATA[[$]]
gg.schemareplacestring=CDATA[]
スキーマの検索および置換機能は、次の構成構文を使用した複数の検索正規表現および置換文字列の使用をサポートします。
gg.schemareplaceregex=some_regex
gg.schemareplacestring=some_value
gg.schemareplaceregex1=some_regex
gg.schemareplacestring1=some_value
gg.schemareplaceregex2=some_regex
gg.schemareplacestring2=some_value
親トピック: 正規表現を使用した検索と置換
1.3.5.2 コンテンツ・データの置換の使用
gg.contentreplaceregex
およびgg.contentreplacestring
プロパティを使用してコンテンツ・データを置換し、構成された正規表現を使用して列値を検索して、一致項目を置換文字列で置換できます。たとえば、これは列値の改行文字を置き換えるのに役立ちます。区切りテキスト・フォーマッタが使用された場合、データに含まれる改行文字は分析ツールで行区切り文字として誤って解釈されます。
n個のコンテンツ置換regex検索値を構成できます。regex検索および置換は、構成の順序で実行されます。構成される値は、次の特定の順序に従う必要があります。
gg.contentreplaceregex=some_regex
gg.contentreplacestring=some_value
gg.contentreplaceregex1=some_regex
gg.contentreplacestring1=some_value
gg.contentreplaceregex2=some_regex
gg.contentreplacestring2=some_value
添え字2を使用せずに添え字3を構成すると、添え字3の構成が無視されます。
注意:
正規表現の検索と置換にはコンピューティング処理が必要で、Oracle GoldenGate for Big Dataプロセスのパフォーマンスが低下する可能性があります。
改行を空白文字に置き換えるには、次のプロパティ構成を使用できます。
gg.contentreplaceregex=[\n]
gg.contentreplacestring=CDATA[ ]
これによって、列値が次の値から変更されます。
this is
me
変更後:
this is me
どちらの値もCDATA
ラッピングをサポートします。2つ目の値はCDATA[]
ラッパーでラップする必要があります。1つの空のスペースは空白と解釈されて、Oracle GoldenGate for Big Data構成層でトリミングされます。さらに、複数の検索および置換文字列を構成できます。たとえば、次の文字列から改行を削除するのに加え、列値から先頭および末尾の空白も削除します。
^\\s+|\\s+$
gg.contentreplaceregex1=^\\s+|\\s+$
gg.contentreplacestring1=CDATA[]
親トピック: 正規表現を使用した検索と置換
1.3.6 Oracle GoldenGate for Big Data配信のスケーリング
Oracle GoldenGate for Big Dataは、スループット向上のために、ソース証跡ファイルの分割をサポートします。複数のReplicatプロセスに分割するか、またはCoordinated Deliveryを使用して単一のReplicatプロセス内で複数のJavaアダプタ・インスタンスをインスタンス化します。これにより、Oracle GoldenGate for Big Data配信をスケーリングできます。
パフォーマンスが最大となるようにハンドラをチューニングした後でも、Oracle GoldenGate for Big Data統合ターゲットへのスループットが、サービス・レベル合意を満たすのに不十分な場合があります。これが発生すると、次のいずれかの方法を使用して、パラレル処理を構成し、ターゲットに配信できます。
-
複数のReplicatプロセスを、同じソース証跡ファイルからデータを読み取るように構成できます。すべてのプロセスがソース証跡ファイル全体をまとめて処理するように、これらの各Replicatプロセスは、ソース証跡ファイルのデータのサブセットを処理するよう構成されます。 このソリューションを使用した別々のReplicatプロセス間の調整はありません。
-
Oracle GoldenGate Coordinated Deliveryは、単一のReplicatプロセス内のソース証跡ファイルからのデータの処理をパラレル化するために使用できます。このソリューションは、構成済の各サブセットが別の配信スレッドによって処理される論理サブセットへの証跡ファイルの分割を伴います。Coordinated Deliveryの詳細は、https://blogs.oracle.com/dataintegration/entry/goldengate_12c_coordinated_replicatを参照してください。
どちらの方法でも、スループットの向上のため、データをパラレル処理に分割できます。次の2つの方法のいずれかでデータを分割することをお薦めします。
-
ソース・データをソース表別に分割 - データはソース表別のサブセクションに分割されます。たとえば、Replicatプロセス1はソース表(表1および表2)を処理しますが、Replicatプロセス2はソース表(表3および表2)のデータを処理します。データはソース表ごとに分割され、個々の表データはさらに分割されることはありません。
-
ソース表データをサブストリームに分割 - ソース表のデータが分割されます。たとえば、Replicatプロセス1はソース表1のデータ範囲の半分を処理し、Replicatプロセス2はソース表1のもう半分のデータを処理します。
その他の制限事項:
-
パラレル適用はサポートされていません。
-
BATCHSQL
パラメータはサポートされていません。
例1-1 Oracle GoldenGate for Big Dataのハンドラのスケーリング・サポート
ハンドラ名 | ソース・データをソース表別に分割 | ソース表データをサブストリームに分割 |
---|---|---|
Cassandra |
サポート対象 |
次の場合にサポートされます。
|
Elastic Search |
サポート対象 |
サポート対象 |
Flume |
サポート対象 |
Avroなど、スキーマの伝播をサポートするフォーマットに対してサポートされます。これは、複数のインスタンスによって同じスキーマ情報がターゲットにフィードされるため、あまり望ましくありません。 |
HBase |
必要なすべてのHBaseネームスペースがHBaseで事前作成されている場合にサポートされます。 |
次の場合にサポートされます。
|
HDFS |
サポート対象 |
いくつかの制限付きでサポートされています。
|
JDBC |
サポート対象 |
サポート対象 |
Kafka |
サポート対象 |
Avroなど、スキーマの伝播をサポートするフォーマットに対してサポートされます。これは、複数のインスタンスによって同じスキーマ情報がターゲットにフィードされるため、あまり望ましくありません。 |
Kafka Connect |
サポート対象 |
サポート対象 |
Kinesis Streams |
サポート対象 |
サポート対象 |
MongoDB |
サポート対象 |
サポート対象 |
1.3.7 Oracle GoldenGate資格証明ストアでの識別子の使用
Oracle GoldenGateの資格証明ストアはユーザーIDおよびその暗号化されたパスワード(ともに資格証明と呼ばれます)を管理します。これらはOracle GoldenGateプロセスにより使用され、ローカル・データベースと対話します。資格証明ストアを使用すると、Oracle GoldenGateのパラメータ・ファイルにユーザー名およびクリアテキスト・パスワードを指定する必要がなくなります。ユーザーIDのかわりにパラメータ・ファイルのオプションの別名を使用して、資格証明ストアのユーザーIDとパスワードのペアにマップすることもできます。資格証明ストアはOracle Credential Store Framework (CSF)内の自動ログイン・ウォレットとして実装されます。LDAPディレクトリの使用は、Oracle GoldenGate資格証明ストアではサポートされていません。自動ログイン・ウォレットは、必要なパスワードを指定するための人の介在を必要とせず、Oracle GoldenGateプロセスの自動再起動をサポートします。
Oracle GoldenGate for Big Dataでは、実際のユーザーIDまたはパスワードではなく、別名およびドメインをプロパティ・ファイルで指定します。ユーザー資格証明は、セキュアなウォレット・ストレージで管理されます。
トピック:
1.3.7.1 資格証明ストアの作成
ビッグ・データ環境用の資格証明ストアを作成できます。
GGSCI ADD CREDENTIALSTORE
コマンドを使用して、Oracle GoldenGateインストール・ディレクトリ(デフォルト)のdircrd/
サブディレクトリにあるcwallet.sso
という名前のファイルを作成します。
資格証明ストアcwallet.sso
ファイルの場所を指定するには、GLOBALS
ファイルのCREDENTIALSTORELOCATION
パラメータで目的の場所を指定します。
資格証明ストア・コマンドの詳細は、『Oracle GoldenGateリファレンス』を参照してください。
注意:
Oracle GoldenGateインスタンスごとに1つの資格証明ストアのみ使用できます。
1.3.7.2 資格証明ストアへのユーザーの追加
ビッグ・データ環境の資格証明ストアを作成した後、ストアにユーザーを追加できます。
各ユーザーを作成するにはGGSCI ALTER CREDENTIALSTORE ADD USER userid PASSWORD password [ALIAS alias] [DOMAIN domain]
コマンドを実行します。
-
userid
はユーザー名です。資格証明ストアに配置できるユーザー名のインスタンスは1つのみです(ALIAS
またはDOMAIN
オプションが使用されていない場合)。 -
password
はユーザーのパスワードです。このオプションを使用すると、パスワードはエコーされます(不明瞭化されません)。このオプションを省略すると、コマンドはパスワードを要求しますが、入力時に不明瞭化されます(より安全な方法として推奨されます)。 -
alias
はユーザー名の別名です。ログイン資格証明が必要なパラメータとコマンドでは、資格証明のかわりに別名を使用します。ALIAS
オプションを省略すると、別名はデフォルトでユーザー名に設定されます。
次に例を示します。
ALTER CREDENTIALSTORE ADD USER scott PASSWORD tiger ALIAS scsm2 domain ggadapters
資格証明ストア・コマンドの詳細は、『Oracle GoldenGateリファレンス』を参照してください。
1.3.7.3 資格証明ストアにアクセスするためのプロパティの構成
Oracle GoldenGate Java Adapterプロパティ・ファイルでは、実行時に資格証明ストアのユーザー名とパスワード・エントリを解決する固有の構文が必要です。ユーザー名を解決するための構文は次のとおりです。
ORACLEWALLETUSERNAME[alias domain_name]
パスワードを解決するための構文は次のとおりです。
ORACLEWALLETPASSWORD[alias domain_name]
次の例は、myalias
という別名とmydomain
というドメインで資格証明ストアのエントリを構成する方法を示しています。
注意:
HDFS Hive JDBCでは、ユーザー名とパスワードが暗号化されます。
Oracle Walletの統合は、文字列usernameまたはpasswordを含む構成プロパティに対してのみ機能します。次に例を示します。
gg.handler.hdfs.hiveJdbcUsername=ORACLEWALLETUSERNAME[myalias mydomain]
gg.handler.hdfs.hiveJdbcPassword=ORACLEWALLETPASSWORD[myalias mydomain]
ユーザー名とパスワードのエントリは資格証明ストアでアクセス可能な値と見なされます。Java Adapter層で解決される(Cユーザー・イグジット層ではアクセスされない)構成プロパティは資格証明ストアから解決できます。これにより、機密情報を含む構成エントリを保護する方法に柔軟性を持たせることができます。