6.1 Oracle GoldenGate for Distributed Applications and Analyticsの構成
このトピックでは、GG for DAAハンドラを構成する方法について説明します。
- Replicatによる実行
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)でReplicatプロセスを構成する前に確認する必要があります。 - スキーマ展開およびメタデータ変更イベントについて
- 構成プロパティCDATA[]のラッピングについて
- 正規表現を使用した検索と置換
個別に構成されるスキーマ・データ(カタログ名、スキーマ名、表名、列名)と列値データの両方についてより強力な検索および置換操作を実行できます。正規表現(regex
)は、パターン・マッチングを通じて検索文字列をカスタマイズする文字列です。 - Oracle GoldenGate for Distributed Applications and Analytics配信のスケーリング
- クラスタの高可用性の構成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)には、組込みの高可用性機能はありません。高可用性機能を提供するには、標準のクラスタ・ソフトウェアの高可用性機能を使用する必要があります。 - Oracle GoldenGate資格証明ストアでの識別子の使用
Oracle GoldenGateの資格証明ストアはユーザーIDおよびその暗号化されたパスワード(ともに資格証明と呼ばれます)を管理します。これらはOracle GoldenGateプロセスにより使用され、ローカル・データベースと対話します。資格証明ストアを使用すると、Oracle GoldenGateのパラメータ・ファイルにユーザー名およびクリアテキスト・パスワードを指定する必要がなくなります。
親トピック: 構成
6.1.1 Replicatによる実行
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)でReplicatプロセスを構成する前に確認する必要があります。
このトピックでは、Oracle GoldenGate ReplicatプロセスでJavaアダプタを実行する方法について説明します。
6.1.1.1 Replicatのグループ化
Replicatプロセスは、Replicat構成プロパティGROUPTRANSOPS
を提供してトランザクションのグループ化を制御します。デフォルトでは、Replicatプロセスは1000個のトランザクションを1つのターゲット・トランザクションにグループ化します。トランザクションのグループ化をオフにする場合は、ReplicatプロパティGROUPTRANSOPS
を1
に設定します。
親トピック: Replicatによる実行
6.1.1.2 Replicatチェックポイントについて
Replicatチェックポイント・ファイル.cpr
のほか、データベースのReplicatにおけるCHECKPOINTTABLE
と似た情報を含む追加のチェックポイント・ファイルdirchk/group.cpj
も作成されます。
親トピック: Replicatによる実行
6.1.1.3 初期ロードのサポートについて
Replicatではすでに、一連の証跡ファイルに書き込むオンライン・キャプチャ・プロセスおよび初期ロード・プロセスの両方からの証跡ファイルを読み取ることができます。さらに、Extractパラメータ・ファイルでRMTTASK
の指定を使用して、特別実行の初期ロード・プロセスの配信をサポートするようにReplicatを構成することもできます。ダイレクト・ロードの構成の詳細は、Oracle GoldenGateダイレクト・ロードを使用したデータのロードに関する項を参照してください。
ノート:
SOURCEDB
またはDBLOGIN
パラメータの指定は、ソース・データベースによって異なります。
親トピック: Replicatによる実行
6.1.1.4 サポートされないReplicatの機能について
次のReplicat機能は、このリリースではサポートされません。
-
BATCHSQL
-
SQLEXEC
-
ストアド・プロシージャ
-
競合の解決および検出(CDR)
親トピック: Replicatによる実行
6.1.1.5 マッピング機能の仕組み
Oracle GoldenGate Replicatプロセスは、カスタム・ターゲット・スキーマへのマッピングをサポートしています。メタデータ・プロバイダ機能を使用して、ターゲット・スキーマ(複数も可)を定義してから、Replicat構成ファイルで標準のReplicatマッピング構文を使用して、マッピングを定義する必要があります。レプリケーション構成ファイルのReplicatマッピング構文の詳細は、データのマッピングと操作に関する項を参照してください。
親トピック: Replicatによる実行
6.1.2 スキーマ展開およびメタデータ変更イベントについて
証跡内のメタデータは、スキーマ展開やGG for DAAのターゲット・アプリケーションへのスキーマ伝播など、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)によってメタデータ変更イベントを実行時にシームレスに処理できるようにする機能です。NO_OBJECTDEFS
は、ExtractおよびReplicatのEXTTRAIL
およびRMTTRAIL
パラメータのサブパラメータで、証跡機能の重要なメタデータを抑制し、静的なメタデータ定義の使用に戻すことができます。
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)のハンドラとフォーマッタには、メタデータ変更イベントが発生したときにアクションを実行する機能があります。メタデータ変更イベントが発生したときにアクションを実行できる機能は、ソース証跡ファイルで利用できるメタデータ変更イベントによって異なります。Oracle GoldenGate は、ソースのOracleデータベースからの証跡のメタデータと、DDLデータを伝播をサポートします。ソース証跡ファイルに、証跡内のメタデータとDDLデータ(メタデータ変更イベント)がない場合は、GG for DAAでメタデータ変更イベントを処理できません。
6.1.3 構成プロパティCDATA[]のラッピングについて
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)のハンドラおよびフォーマッタでは、Javaプロパティ・ファイル内の多くのパラメータの構成がサポートされており、その値が空白として解釈される場合があります。Javaアダプタの構成処理では、Java構成ファイルの構成値から空白が削除されます。空白を削除するこの動作は、構成値によっては望ましいこともありますか、別の構成値には望ましくない場合もあります。また、選択した構成変数で空白が維持されるように、空白値を特殊な構文でラップできます。GG for DAAは、空白を維持するためにCDATA[]
のXML構文を借用しています。空白文字と見なされる値を、CDATA[]
の内部にラップできます。
区切りテキスト・フォーマッタで、改行を区切り文字として設定しようとする例を次に示します。
gg.handler.{name}.format.lineDelimiter=\n
この構成は成功しません。改行文字は空白として解釈され、構成値から削除されてしまうからです。したがって、gg.handler
設定では実質的に、行区切り文字が空白文字列に設定されます。
改行文字の構成を維持するには、次のように、その文字をCDATA[]
ラッパーでラップするだけです。
gg.handler.{name}.format.lineDelimiter=CDATA[\n]
CDATA[]
のラッピングでプロパティを構成すると、空白が維持され、行区切り文字は改行文字になります。
6.1.4 正規表現を使用した検索と置換
個別に構成されるスキーマ・データ(カタログ名、スキーマ名、表名、列名)と列値データの両方についてより強力な検索および置換操作を実行できます。正規表現(regex
)は、パターン・マッチングを通じて検索文字列をカスタマイズする文字列です。
文字列を1つのパターンまたは正確に一致する部分に一致させることができます。Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)では、標準のOracle Java正規表現パッケージjava.util.regex
が使用されます。The Single UNIX Specification, Version 4の正規表現を参照してください。
6.1.4.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
親トピック: 正規表現を使用した検索と置換
6.1.4.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 Distributed Applications and Analytics (GG for DAA)プロセスのパフォーマンスが低下する可能性があります。
改行を空白文字に置き換えるには、次のプロパティ構成を使用できます。
gg.contentreplaceregex=[\n]
gg.contentreplacestring=CDATA[ ]
これによって、列値が次の値から変更されます。
this is
me
変更後:
this is me
どちらの値もCDATA
ラッピングをサポートします。2つ目の値はCDATA[]
ラッパーでラップする必要があります。1つの空のスペースは空白と解釈されて、GG for DAA構成層でトリミングされます。さらに、複数の検索および置換文字列を構成できます。たとえば、次の文字列から改行を削除するのに加え、列値から先頭および末尾の空白も削除します。
^\\s+|\\s+$
gg.contentreplaceregex1=^\\s+|\\s+$
gg.contentreplacestring1=CDATA[]
親トピック: 正規表現を使用した検索と置換
6.1.5 Oracle GoldenGate for Distributed Applications and Analytics配信のスケーリング
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)では、スループット向上のために、ソース証跡ファイルの分割がサポートされています。その場合は、複数のReplicatプロセスに分割するか、Coordinated Deliveryを使用して単一のReplicatプロセス内で複数のJavaアダプタ・インスタンスをインスタンス化します。これにより、GG for DAA配信をスケーリングできます。
パフォーマンスが最大になるようにハンドラをチューニングした後でも、GG for DAA統合ターゲットへのスループットが、サービス・レベル合意を満たすのに不十分な場合があります。これが発生すると、次のいずれかの方法を使用して、パラレル処理を構成し、ターゲットに配信できます。
-
複数のReplicatプロセスを、同じソース証跡ファイルからデータを読み取るように構成できます。すべてのプロセスがソース証跡ファイル全体をまとめて処理するように、これらの各Replicatプロセスは、ソース証跡ファイルのデータのサブセットを処理するよう構成されます。このソリューションを使用した別々のReplicatプロセス間の調整はありません。
-
Oracle GoldenGate Coordinated Deliveryは、単一のReplicatプロセス内のソース証跡ファイルからのデータの処理をパラレル化するために使用できます。このソリューションは、構成済の各サブセットが別の配信スレッドによって処理される論理サブセットへの証跡ファイルの分割を伴います。調整済Replicatの詳細は、『Oracle GoldenGate Microservicesドキュメント』で調整済Replicatについてを参照してください。
どちらの方法でも、スループットの向上のため、データをパラレル処理に分割できます。次の2つの方法のいずれかでデータを分割することをお薦めします。
-
ソース・データをソース表別に分割 - データはソース表別のサブセクションに分割されます。たとえば、Replicatプロセス1はソース表(表1および表2)を処理しますが、Replicatプロセス2はソース表(表3および表2)のデータを処理します。データはソース表ごとに分割され、個々の表データはさらに分割されることはありません。
-
ソース表データをサブストリームに分割 - ソース表のデータが分割されます。たとえば、Replicatプロセス1はソース表1のデータ範囲の半分を処理し、Replicatプロセス2はソース表1のもう半分のデータを処理します。
- 調整済Replicatを使用している場合は、必ず
TARGETDB LIBFILE libggjava.so SET property=path_to_deployment_home/etc/conf/ogg/your_replicat_name.properties
を追加してください。
その他の制限事項:
-
パラレル適用はサポートされていません。
-
BATCHSQL
パラメータはサポートされていません。
例6-1 Oracle GoldenGate for Distributed Applications and Analyticsのハンドラのスケーリング・サポート
ハンドラ名 | ソース・データをソース表別に分割 | ソース表データをサブストリームに分割 |
---|---|---|
Cassandra |
サポート対象 |
次の場合にサポートされます:
|
Elastic Search |
サポート対象 |
サポート対象 |
HBase |
必要なすべてのHBaseネームスペースがHBaseで事前作成されている場合にサポートされます。 |
次の場合にサポートされます:
|
HDFS |
サポート対象 |
いくつかの制限付きでサポートされています。
|
JDBC |
サポート対象 |
サポート対象 |
Kafka |
サポート対象 |
Avroなど、スキーマの伝播をサポートするフォーマットに対してサポートされます。これは、複数のインスタンスによって同じスキーマ情報がターゲットにフィードされるため、あまり望ましくありません。 |
Kafka Connect |
サポート対象 |
サポート対象 |
Kinesis Streams |
サポート対象 |
サポート対象 |
MongoDB |
サポート対象 |
サポート対象 |
Javaファイル・ライター | サポート対象 | サポートされますが次の制限があります。
生成されるファイルの命名規則を、ファイル名が衝突しないように選択する必要があります。ファイル名が衝突していると、Replicatの異常終了またはデータの汚染が発生する場合があります。調整された適用を使用する場合は、 |
6.1.6 クラスタの高可用性の構成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)には、組込みの高可用性機能はありません。高可用性機能を提供するには、標準のクラスタ・ソフトウェアの高可用性機能を使用する必要があります。
クラスタに高可用性シナリオを構成すると、マシン上の(GG for DAA)のリーダー・インスタンスに障害が発生した場合に、別のマシンで別のGG for DAAインスタンスを起動し、障害が発生したインスタンスが中断した時点から再開できます。
共有ディスク・アーキテクチャを使用して、同じGG for DAAおよびOracle GoldenGateファイルを共有するようにインスタンスを手動で構成すると、フェイルオーバーの状態を作成できます。クラスタ・インストールの場合、これらのファイルはすべてのマシンからアクセスできて、同じ場所でアクセスできる必要があります。
共有する必要がある構成ファイルは次のとおりです。
-
replicat.prm
-
ハンドラのプロパティ・ファイル。
-
特定のアダプタに必要な追加のプロパティ・ファイル。これは使用しているターゲット・ハンドラによって異なります。たとえば、Kafkaではプロデューサ・プロパティ・ファイルです。
-
生成した追加のスキーマ・ファイル。たとえば、
dirdef
ディレクトリに生成されたAvroスキーマ・ファイルです。 -
ローカル・ファイル・システムの構成されたパスにファイル・ライター・ハンドラによって生成されたファイル。また、
dirsta
ディレクトリのファイル・ライター・ハンドラの状態ファイル。 -
使用している
log4j.properties
ファイルまたはlogback.properties
ファイル。
処理を再開できるようにするには、チェックポイント・ファイルが共有されている必要があります。
-
Replicatチェックポイント・ファイル(
*.cpr
)。 -
アダプタ・チェックポイント・ファイル(
*.cpj
)。
6.1.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 Distributed Applications and Analytics (GG for DAA)では、実際のユーザーIDまたはパスワードではなく、別名およびドメインをプロパティ・ファイル内で指定します。ユーザー資格証明は、セキュアなウォレット・ストレージで管理されます。
6.1.7.1 資格証明ストアの作成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)環境の資格証明ストアを作成できます。
GGSCI ADD CREDENTIALSTORE
コマンドを使用して、Oracle GoldenGateインストール・ディレクトリ(デフォルト)のdircrd/
サブディレクトリにあるcwallet.sso
という名前のファイルを作成します。
資格証明ストアcwallet.sso
ファイルの場所を指定するには、GLOBALS
ファイルのCREDENTIALSTORELOCATION
パラメータで目的の場所を指定します。
資格証明ストア・コマンドの詳細は、『Oracle GoldenGateリファレンス』を参照してください。
ノート:
Oracle GoldenGateインスタンスごとに1つの資格証明ストアのみ使用できます。
6.1.7.2 資格証明ストアへのユーザーの追加
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)環境の資格証明ストアを作成した後、そのストアにユーザーを追加できます。
各ユーザーを作成するには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リファレンス』を参照してください。
6.1.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]
ORACLEWALLETUSERNAME
およびORACLEWALLETPASSWORD
は、JMSハンドラのExtract (Replicatと同様)でも使用できます。たとえば:
gg.handler.<name>.user=ORACLEWALLETUSERNAME[JMS_USR JMS_PWD] gg.handler.<name>.password=ORACLEWALLETPASSWORD[JMS_USR JMS_PWD]
ユーザー名とパスワードのエントリは資格証明ストアでアクセス可能な値と見なされます。Java Adapter層で解決される(Cユーザー・イグジット層ではアクセスされない)構成プロパティは資格証明ストアから解決できます。これにより、機密情報を含む構成エントリを保護する方法に柔軟性を持たせることができます。