11 Oracle GoldenGateプロセス・インタフェースのスタート・ガイド
内容は次のとおりです。
11.1 GGSCIおよび管理クライアントのコマンドライン・インタフェースの使用
管理クライアントまたはGGSCIを起動するには、現在の作業ディレクトリをOracle GoldenGateホーム・ディレクトリ(OGG_HOME
)に変更する必要があります。
ノート:
管理クライアントまたはGGSCIを起動する前に、環境変数OGG_HOME
およびOGG_VAR_HOME
を設定する必要があります。
現在の作業ディレクトリをOracle GoldenGateホーム・ディレクトリに設定しない場合、次のようなエラーが発生する可能性があります。
GGSCI (20) 2> stop mgr
Manager process is required by other GGS processes. Are you sure you want to stop it (y/n)?y
Transparent Integration with XAG is enabled. Sending the command STOP MANAGER to XAG...
ERROR: No Oracle GoldenGate instance is found in XAG resource list.
GGSCIの場合は、ggsci
実行可能ファイルを実行します。
$OGG_HOME/bin
に移動して./adminclient
コマンドを実行します。[oracle@bigdatalite bin]$ ./adminclient
Oracle GoldenGate Administration Client for Oracle
Version 19.1.0.0.0 OGGCORE_19.1.0.0.0_PLATFORMS_yymmdd.HHMM_FBO
Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
Linux, x64, 64bit (optimized) on Dec 31 2016 23:58:36
Operating system character set identified as UTF-8.
OGG (not connected) 1>
内容は次のとおりです。
11.1.1 コマンド引数でのワイルドカードの使用
一部のOracle GoldenGateコマンドでワイルドカードを使用して、複数のExtractグループおよびReplicatグループを1つの単位として制御できます。Oracle GoldenGateでサポートされるワイルドカード記号は、アスタリスク(*)です。アスタリスクは、任意の数の文字を表します。たとえば、名前に文字Xを含むすべてのExtractグループを起動するには、次のコマンドを発行します。
START EXTRACT *X*
11.1.2 コマンド・インタフェースのグローバリゼーション・サポート
コマンド入力と関連のコンソール出力はすべて、ローカル・オペレーティング・システムのデフォルト文字セットで表示されます。ローカル・オペレーティング・システムの文字セットと互換性のない文字を指定するには、Unicode表記法を使用します。たとえば、次のUnicode表記は、名前にユーロ記号が含まれている表名に相当します。
ADD TRANDATA \u20AC1
Unicode表記の使用方法の詳細は、「エスケープ・シーケンスのサポート」を参照してください。
ノート:
Oracle GoldenGateのグループ名は大/小文字が区別されません。
11.1.3 コマンド履歴の使用
次のツールを使用すると、複数のコマンドを簡単に実行できます。
-
以前実行したコマンドのリストを表示するには、
HISTORY
コマンドを使用します。 -
以前のコマンドを編集せずに再実行するには、
!
コマンドを使用します。 -
以前のコマンドを編集してから再実行するには、
FC
コマンドを使用します。
11.1.4 よく使用するコマンド・シーケンスの保存と呼出し
よく使用する一連のコマンドは、OBEYファイルおよびOBEY
コマンドを使用して自動化できます。OBEY
ファイルでは、ローカル・オペレーティング・システムの文字セットが認識されます。その文字セットと互換性のない文字を指定するには、Unicode表記法を使用します。
Unicode表記の使用方法の詳細は、「エスケープ・シーケンスのサポート」を参照してください。
OBEYを使用する手順
例11-1 OBEYコマンド・ファイル
ADD EXTRACT myext, TRANLOG, BEGIN now START EXTRACT myext ADD REPLICAT myrep, EXTTRAIL /ggs/dirdat/aa START REPLICAT myrep INFO EXTRACT myext, DETAIL INFO REPLICAT myrep, DETAIL
次の例は、OBEY
コマンドと組み合せて使用するOBEY
コマンド・ファイルを示しています。これによって、ExtractグループおよびReplicatグループが作成されて起動され、処理情報が取得されます。
OBEY
コマンドの詳細は、『Oracle GoldenGateリファレンス』を参照してください。
11.2 Oracle GoldenGateプロセスの制御
Oracle GoldenGateプロセスを制御する標準の方法は、GGSCIインタフェースを介する方法です。通常、Oracle GoldenGateプロセスが本番設定で初めて起動されるのは、初期同期プロセス(インスタンス化プロセスとも呼ばれる)時です。ただし、メンテナンス、アップグレード、トラブルシューティングなどの各種タスクを実行する場合は、必要に応じてプロセスを停止したり再起動する必要があります。
ここでは基本的な構文について説明しています。その他の使用可能な構文については、『Oracle GoldenGateリファレンス』を参照してください。
11.2.1 Managerの制御
レプリケーション処理を停止する場合を除き、Managerを停止しないでください。
Managerを停止する手順
ノート:
ユーザー・アカウント制御を有効にした状態でコマンドラインまたはGGSCIからManagerを起動すると、プログラム実行の許可または拒否を求めるUACプロンプトが表示されます。
親トピック: Oracle GoldenGateプロセスの制御
11.2.2 ExtractおよびReplicatの制御
この項では、ExtractプロセスとReplicatプロセスを制御する基本的な方法について説明します。その他のコマンド・オプションは、『Oracle GoldenGateリファレンス』を参照してください。
ExtractまたはReplicatを起動する手順
START {EXTRACT | REPLICAT}
group_name
説明:
group_name
は、ExtractまたはReplicatグループの名前か、またはグループのワイルドカード・セット(*
やfin*
など)です。
ExtractまたはReplicatを正常に停止する手順
STOP {EXTRACT | REPLICAT}
group_name
説明:
group_name
は、ExtractまたはReplicatグループの名前か、またはグループのワイルドカード・セット(*
やfin*
など)です。
Replicatを強制的に停止する手順
STOP REPLICAT
group_name
!
現在のトランザクションは中断され、プロセスは即座に停止されます。Extractを強制的に停止することはできません。
STOPで停止できないプロセスを強制終了する手順
KILL {EXTRACT | REPLICAT}
group_name
プロセスを強制終了すると正常な停止は行われず、チェックポイント情報が失われる可能性があります。
複数のプロセスを同時に制御する手順
command
ER
wildcard specification
説明:
-
command
は、KILL
、START
またはSTOP
です。 -
wildcard specification
は、コマンドを適用するプロセス・グループの名前のワイルドカード指定です。コマンドは、ワイルドカードに適合するすべてのExtractおよびReplicatグループに適用されます。Oracle GoldenGateでは、最大100,000個のワイルドカード・エントリがサポートされます。
親トピック: Oracle GoldenGateプロセスの制御
11.2.3 ExtractおよびReplicatの削除
この項では、ExtractプロセスとReplicatプロセスを削除する基本的な方法について説明します。その他のコマンド・オプションは、『Oracle GoldenGateリファレンス』を参照してください。
Extractグループを削除する手順
-
GGSCIを実行します。
-
Extractデータベース・ユーザー(または同じ権限を持つユーザー)として
DBLOGIN
コマンドを発行します。ローカル資格証明ストアの有無に応じて、次のいずれかのコマンドを使用できます。DBLOGIN [SOURCEDB
dsn
] {USERIDuser
, PASSWORDpassword
[encryption_options
] | USERIDALIASalias
[DOMAINdomain
]} -
Extractプロセスを停止します。
STOP EXTRACT
group_name
-
次のコマンドを発行します。
DELETE EXTRACT
group_name
-
(Oracle)Extractグループをデータベースから登録解除します。
UNREGISTER EXTRACT group_name,database_name
Replicatグループを削除する手順
Replicatグループを削除しても、チェックポイント表のチェックポイントは保持されます(使用されている場合)。プロセス・グループを削除しても、パラメータ・ファイルは失われません。同じパラメータ・ファイルを使用して同じグループを再作成できます。また、パラメータ・ファイルを削除して、グループの構成を完全に削除することもできます。
親トピック: Oracle GoldenGateプロセスの制御
11.3 コマンドの自動化
Oracle GoldenGateは、スクリプトまたはジョブを介したコマンドの発行をサポートしています。この項では、UNIXベースまたはLinuxベースのプラットフォームおよびIBMiプラットフォームでのこれらのオプションについて説明します。
UNIXシステムまたはLinuxシステム、あるいはUNIXまたはLinuxアプリケーションをサポートするランタイム環境では、GGSCIを実行して入力ファイルを呼び出すことで、起動スクリプト、停止スクリプト、フェイルオーバー・スクリプトなどのスクリプトからOracle GoldenGateコマンドを発行できます。スクリプト・ファイルは、オペレーティング・システムの文字セットでエンコードされている必要があります。オペレーティング・システムの文字セットがサポートしていない文字には、Unicode表記法を使用できます。スクリプトを作成する前に、「コマンド・インタフェースのグローバリゼーション・サポート」を参照してください。
スクリプトを入力する手順
オペレーティング・システムのコマンドラインから次の構文を使用します。
ggsci < input_file
説明:
-
山カッコ(<)文字によりファイルがGGSCIプログラムに渡されます。
-
input_file
は、発行するコマンドが発行順に含まれた、OBEY
ファイルと呼ばれるテキスト・ファイルです。
ノート:
バッチ・ファイルからManagerプロセスを停止するには、必ずSTOP MANAGER
コマンドの最後に!
引数を追加してください。そうしないと、GGSCIによってレスポンスを要求するプロンプトが発行され、プロセスがループに陥ります。Managerを停止する方法の詳細は、「Managerの停止」を参照してください。
11.3.1 IBM i CLIを介したコマンドの発行
Oracle GoldenGate for IBM DB2 for iには、ごく一般的なOracle GoldenGateプログラムの操作をIBM iコマンドライン・インタフェース(CLI)から操作できるようにする一連のネイティブIBM iコマンドが組み込まれています。これらのコマンドはネイティブであるため、PASE環境から実行する必要はありません。このサポートにより、コマンドを対話型で発行することも、一般的なジョブ発行ツール(SBMJOBなど)を使用してOracle GoldenGateを非対話型で操作することもできます。
コマンドは次のとおりで、同名のOracle GoldenGateプログラムに対応しています。これらはOracle GoldenGateインストール・ライブラリ内にあります。
DEFGEN
EXTRACT
KEYGEN
LOGDUMP
MGR
REPLICAT
親トピック: コマンドの自動化
11.4 Oracle GoldenGateの入力におけるオブジェクト名の指定
パラメータ・ファイル(TABLE
文、MAP
文など)、列変換関数、コマンド、その他の入力でオブジェクト名を指定する際には、次のルールが適用されます。
11.4.1 Windowsシステムでのパラメータ・ファイルでのファイルシステム・パス名の指定
Windowsシステムでは、ファイルシステム・パス名のディレクトリの名前が数字で始まる場合、Oracle GoldenGate入力(パラメータ・ファイルやコマンドなど)にそのパスをリストするときに、パスをバックスラッシュでなくスラッシュで指定する必要があります。これにより、Oracle GoldenGateでその名前が8進エスケープ・シーケンスとして解釈されることを回避します。たとえば、次のパスには、8進シーケンス\201
として解釈される\2014
という名前のディレクトリが含まれています。
C:\ogg\2014\install\dirdat\aa C:\ogg\install\2014\dirdat\aa
前出のパスは、次のようにスラッシュとともに使用できます。
C:/ogg/2014/install/dirdat/aa C:/ogg/install/2014/dirdat/aa
詳細は、「エスケープ・シーケンスのサポート」を参照してください
11.4.2 サポートされるデータベース・オブジェクト名
パラメータ・ファイル、コマンドおよびその他の入力のオブジェクト名は、任意の長さで、サポートされる任意の文字セットを使用して指定できます。サポートされる文字セットについては、サポートされる文字セットを参照してください。
Oracle GoldenGateは、オブジェクト名および列名でほとんどの文字をサポートしています。空白や記号などの特殊文字が含まれているオブジェクト名は、二重引用符で囲んで指定します。
次に示すサポートされる文字とサポートされない文字のリストは、Oracle GoldenGateでサポートされているすべてのデータベースを対象としていますが、リストのすべての文字がサポートされるかどうかはデータベース・プラットフォームによって異なります。
11.4.2.1 サポートされる特殊文字
Oracle GoldenGateは、次の特殊文字も含めて、データベースでサポートされるすべての文字をサポートしています。パラメータ・ファイルでは、これらの特殊文字を含むオブジェクト名を二重引用符で囲む必要があります。
文字 | 説明 |
---|---|
/ |
スラッシュ(「スラッシュを含む名前の指定」を参照) |
* |
アスタリスク(パラメータ・ファイルで使用する場合は、 |
? |
疑問符(パラメータ・ファイルで使用する場合は、 |
@ |
アットマーク(サポートされますが、データベースでリソース・ロケータとして使用されることが多い文字です。オブジェクト名では問題を生じることがあります。) |
# |
ポンド記号 |
$ |
ドル記号 |
% |
パーセント記号(パラメータ・ファイルで使用する場合は、 |
^ |
カレット記号 |
( ) |
開き丸カッコと閉じ丸カッコ |
_ |
アンダースコア |
- |
ダッシュ |
<space> |
空白 |
親トピック: サポートされるデータベース・オブジェクト名
11.4.2.2 サポートされない特殊文字
次の文字は、オブジェクト名およびキー以外の列名ではサポートされません。
文字 | 説明 |
---|---|
\ |
バック・スラッシュ(パラメータ・ファイルで使用する場合は、 |
{ } |
開き中カッコと閉じ中カッコ |
[ ] |
開き大カッコと閉じ大カッコ |
= |
等号 |
+ |
プラス記号 |
! |
感嘆符 |
~ |
チルド |
| |
パイプ |
& |
アンパサンド |
: |
コロン |
; |
セミコロン |
, |
カンマ |
' ' |
一重引用符 |
" " |
二重引用符 |
' |
アクセント記号(発音区別符) |
. |
ピリオド |
< |
小なり記号(または開き山カッコ) |
> |
大なり記号(または閉じ山カッコ) |
親トピック: サポートされるデータベース・オブジェクト名
11.4.3 スラッシュを含む名前の指定
表名のいずれかの部分にスラッシュ文字(/)が含まれている場合、その名前コンポーネントを二重引用符で囲む必要があります。オブジェクト名がIBM iプラットフォームからのものの場合、このかぎりではありません。次に例を示します。
"c/d" "/a".b a."b/"
二重引用符で囲まれていないスラッシュが名前に含まれる場合、その名前はIBM iプラットフォーム(DB2 for iデータベース)からのものとしてOracle GoldenGateで処理されます。名前に含まれるスラッシュは、区切り文字として解釈されます。
11.4.4 データベース・オブジェクト名の修飾
オブジェクト名はパラメータ・ファイルで完全修飾されている必要があります。つまり、Oracle GoldenGateのパラメータ構文への入力で指定する名前だけでなく、すべての名前(SQLEXEC
入力として指定するSQLプロシージャまたは問合せ内の名前や、ユーザー・イグジット入力の名前の他、パラメータ・ファイルに入力するその他すべての名前)の指定が修飾されている必要があります。
Oracle GoldenGateでは、データベースに応じて、2つの部分からなるオブジェクト名と3つの部分からなるオブジェクト名がサポートされています。
11.4.4.1 2つの部分からなる名前
ほとんどのデータべースでは、2つの部分からなる名前のみを次の形式で指定する必要があります。
owner.object
たとえば: HR.EMP
説明:
owner
は、スキーマまたはデータベースです(データベース・オブジェクトを格納する論理ネームスペースの定義方法によって異なる)。object
は、表またはその他のサポートされるデータベース・オブジェクトです。
Oracle GoldenGateで2つの部分からなる名前がサポートされるデータベースと、それぞれの適切なネーミング規則を次に示します。
-
DB2 for i:
schema.object
およびlibrary/file(member)
-
DB2 LUW:
schema.object
-
z/OS上のDB2:
schema.object
-
MySQL:
database.object
-
Oracle Database (CDB以外のデータベース):
schema.object
-
SQL Server:
schema.object
-
Teradata:
database.object
親トピック: データベース・オブジェクト名の修飾
11.4.4.2 3つの部分からなる名前
Oracle GoldenGateで3つの部分からなる名前がサポートされているデータベースを次に示します。
-
Oracleコンテナ・データベース(CDB)
ソースOracleコンテナ・データベースから取得する場合には、3つの部分からなる名前が必要です(1つのExtractグループが複数のコンテナから取得する可能性があるため)。したがって、ExtractのTABLE
文では、各オブジェクトまたは複数のオブジェクトに対して、コンテナ名とスキーマ名を指定する必要があります。
3つの部分からなるOracle CDB名は次のように指定します。
container.schema.object
たとえば: PDB1.HR.EMP
親トピック: データベース・オブジェクト名の修飾
11.4.4.3 複数のコンテナまたはカタログからのデータの適用
複数のソース・コンテナまたはカタログから取得したデータをターゲットOracleコンテナ・データベースに適用するには、3つおよび2つの部分からなる名前の両方が必要です。MAP
文のMAP
部分では、各ソース・オブジェクトがコンテナまたはカタログに関連付けられている必要があります(TABLE
文の場合と同様)。これにより、ユーザー(およびReplicat)は、複数のソース・コンテナまたはカタログから適切なターゲット・オブジェクトにデータを正しくマップできます。一方、MAP
文のTARGET
部分で必要なのは、2つの部分からなる名前のみです。これは、Replicatが同時に接続可能なターゲット・コンテナまたはカタログは1つのみなので、schema.owner
という修飾子で十分だからです。複数のターゲット・コンテナまたはカタログに対応するには、複数のReplicatグループが必要です。ターゲット・コンテナまたはカタログは、TARGETDB
パラメータで指定します。
親トピック: データベース・オブジェクト名の修飾
11.4.4.4 デフォルトのコンテナまたはカタログの指定
パラメータ・ファイルでSOURCECATALOG
パラメータを使用すると、それ以降のTABLE
、MAP
(またはOracle SEQUENCE
)の各指定に対して、デフォルトのカタログを指定できます。次の例は、SOURCECATALOG
を使用して、schema2
およびschema3
の各オブジェクトにpdb2
というデフォルトのOracle PDBを指定し、schema4
オブジェクトにpdb3
というデフォルトのPDBを指定する方法を示しています。pdb1
のオブジェクトは3つの部分からなる完全修飾名で指定されているため、デフォルトのカタログを指定する必要はありません。
TABLE pdb1.schema1.table*; SOURCECATALOG pdb2 TABLE schema2.table*; TABLE schema3.table*; SOURCECATALOG pdb3 TABLE schema4.table*;
親トピック: データベース・オブジェクト名の修飾
11.4.5 大/小文字が区別されるデータベース・オブジェクト名の指定
Oracle GoldenGateでは大/小文字が区別される名前をサポートしています。大/小文字が区別されるオブジェクトを指定する場合は、次のルールに従います。
-
大/小文字が区別されるデータベースのオブジェクト名は、それをホスト・データベースに格納するときと同じ大/小文字で指定します。データベースのタイプによっては、大/小文字の区別の有無がデータベースのレベルごとに異なる場合がありますので注意してください(スキーマは大/小文字が区別されるが、表は区別されないなど)。大/小文字を区別するには引用符が必要になるデータベースの場合は、大/小文字を区別する各オブジェクトを修飾名の中で引用符で囲んでください。
正:
TABLE "Sales"."ACCOUNT"
誤:
TABLE "Sales.ACCOUNT"
-
Oracle GoldenGateでは、マッピング目的での必要に応じて、大/小文字が区別されない名前を格納時の大/小文字に変換します。
表11-1は、オブジェクト名における大/小文字の区別のサポート状況を、サポートされるデータベースごとに簡単にまとめたものです。この種のサポートの詳細は、データベースのドキュメントを参照してください。
表11-1 データベースごとのオブジェクト名の大/小文字の区別
データベース | 大/小文字を区別するために引用符が必要か | 引用符で囲んでいないオブジェクト名 | 引用符で囲んだオブジェクト名 |
---|---|---|---|
DB2 |
はい。大/小文字を区別するかどうかを引用符の有無で識別します。 |
大/小文字が区別されず、大文字で格納されます。 |
大/小文字が区別され、大文字と小文字の混在で格納されます。 |
MySQL (大/小文字が区別されるデータベース) |
いいえ
|
影響なし |
影響なし |
Oracle Database |
はい。大/小文字を区別するかどうかを引用符の有無で識別します。 |
大/小文字が区別されず、大文字で格納されます。 |
大/小文字が区別され、大文字と小文字の混在で格納されます。 |
SQL Server (データベースは大/小文字を区別するものとして作成) |
いいえ 常に大/小文字が区別され、大文字と小文字の混在で格納されます。 |
影響なし |
影響なし |
SQL Server (データベースは大/小文字を区別しないものとして作成) |
いいえ 常に大/小文字が区別されず、大文字と小文字の混在で格納されます。 |
影響なし |
影響なし |
Teradata |
いいえ 常に大/小文字が区別されず、大文字と小文字の混在で格納されます。 |
影響なし |
影響なし |
ノート:
サポートされるすべてのデータベースにおいて、パスワードは、関連オブジェクト名が引用符で囲まれているかどうかに関係なく、常に大/小文字を区別するものとして扱われます。
11.4.6 データベース・オブジェクト名でのワイルドカードの使用
指定されたデータベースに対してサポートされている場合、完全修飾されたオブジェクト名の任意の部分にワイルドカードを使用できます。これらの名前の部分とは、コンテナ名、データベース名、カタログ名、所有者名(スキーマ名またはデータベース名)、表名または順序名です。オブジェクト名とワイルドカードのサポートの詳細は、そのデータベースに対応するOracle GoldenGateのインストレーションおよび構成のガイドを参照してください。
Oracle GoldenGateのパラメータでは、2種類のワイルドカードを適宜使用して、1つの文に複数のオブジェクトを指定できます。
-
疑問符(?)は1文字に置き換わります。たとえば、
TAB
n
(nは0から9)という名前の表を含むスキーマでは、HQ.TAB?
というワイルドカード指定を行うと、HQ.TAB0
、HQ.TAB1
、HQ.TAB2
からHQ.TAB9
までが返されます(これ以外は返されません)。このワイルドカードは、DB2 LUWデータベースやDEFGENに対してはサポートされていません。このワイルドカードは、TABLE
またはMAP
パラメータでソース・オブジェクトを指定する場合にのみ使用できます。TABLE
またはMAP
のTARGET
句でのターゲット・オブジェクトの指定には使用できません。 -
アスタリスク(*)は、任意の数の文字(ゼロ・シーケンスを含む)を表します。たとえば、
HQ.T*
と指定すると、HQ.TOTAL
、HQ.T123
、HQ.T
などのオブジェクトが返されます。このワイルドカードは、ワイルドカードが使用できるOracle GoldenGateのすべてのコマンドおよびパラメータですべてのデータベース・タイプに対して有効です。 -
TABLE
文およびMAP
文では、ソース・オブジェクト名の中でのみアスタリスクと疑問符のワイルドカード文字を組み合せることができます。
11.4.6.1 ソース・オブジェクトにワイルドカードを使用する場合のルール
ソース・オブジェクトには、アスタリスクを単独で、または部分的な名前とともに使用できます。たとえば、次のソース指定はいずれも有効です。
-
TABLE HQ.*;
-
TABLE PDB*.HQ.*;
-
MAP HQ.T_*;
-
MAP HQ.T_*, TARGET HQ.*;
TABLE
、MAP
、SEQUENCE
の各パラメータでは、ワイルドカードを解決するために、大/小文字の区別の有無とデータベースのロケールが考慮されます。大/小文字を区別する、または区別しないものとして作成されたデータベースの場合、名前と大/小文字がワイルドカードと正確に照合されます。たとえば、データベースで大/小文字が区別される場合、SCHEMA
.TABLE
はSCHEMA
.TABLE
に一致し、Schema
.Table
はSchema
.Table
に一致します。データベースで大/小文字が区別されない場合、照合でも大/小文字は区別されません。
引用符を使用して大/小文字を区別することで、大/小文字が区別されるオブジェクト名と区別されないオブジェクト名を同じデータベース・インスタンス内に持つことができるデータベースの場合、ワイルドカードは異なる働きをします。アスタリスク・ワイルドカードをTABLE
文でソース名として単独で使用した場合、そのアスタリスクは、引用符で囲まれているかどうかに関係なく、任意の文字に一致します。次の文はいずれも同じ結果になります。
TABLE hr.*; TABLE hr."*";
同様に、単独で使用した疑問符ワイルドカードは、引用符で囲まれているかどうかに関係なく、任意の1文字に一致します。次の指定はいずれも同じ結果になります。
TABLE hr.?; TABLE hr."?";
疑問符またはアスタリスクのワイルドカードを他の文字とともに使用する場合は、大/小文字の区別の有無がワイルドカード以外の文字にも適用されますが、ワイルドカードは大/小文字が区別される名前と区別されない名前の両方に一致します。
-
次の
TABLE
文では、小文字のabc
で始まる表名が取得されます。引用符で囲んだ名前の大/小文字は維持され、大/小文字を区別する照合が適用されます。ワイルドカードは、大/小文字が区別される文字にも区別されない文字にも一致するため、"abcA"
および"abca"
を含む表名が取得されます。TABLE hr."abc*"; TABLE hr."abc?";
-
次の
TABLE
文では、部分的な名前は大/小文字が区別されず(引用符なし)、このデータベースに大文字で格納されるため、大文字のABC
で始まる表名がすべて取得されます。ただし、ワイルドカードは大/小文字が区別される文字と区別されない文字の両方に一致するため、この例ではABCA
と"ABCa"
を含む表名が取得されます。TABLE hr.abc*; TABLE hr.abc?;
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.6.2 ターゲット・オブジェクトにワイルドカードを使用する場合のルール
MAP
文のTARGET
句でワイルドカードを使用する場合、ターゲット・オブジェクトがターゲット・データベースに存在する必要があります。(ただし、DDLレプリケーションが使用されていて、新しいスキーマとそのオブジェクトを作成時にレプリケートできる場合を除きます。)
ターゲット・オブジェクトには、アスタリスクのみを使用できます。アスタリスク・ワイルドカードを部分的な名前とともに使用すると、Replicatはワイルドカードを対応するソース・オブジェクトの完全な名前に置き換えます。したがって、次のような指定は誤りです。
TABLEHQ.T
_*, TARGET RPT.T_*; MAPHQ.T
_*, TARGET RPT.T_*;
前述のマッピングでは、ターゲット指定内のワイルドカードがT_TEST
(ソース・オブジェクトの名前)に置き換わるため、ターゲット名全体ではT_T_TEST
n
となり、間違った結果が返されます。次に、間違った結果を示します。
-
HQ.T_TEST1
がRPT.T_T_TEST1
にマップされます。 -
HQ.T_TEST2
がRPT.T_T_TEST2
にマップされます。 -
(
HQ.T_TEST
n
形式の他のすべてのマッピングに、同じパターンが当てはまります。)
次の例は、アスタリスク・ワイルドカードの正しい使用方法を示しています。
MAP HQ.T_*, TARGET RPT.*;
前述の例では、次のような正しい結果が得られます。
-
HQ.T_TEST1
がRPT.T_TEST1
にマップされます。 -
HQ.T_TEST2
がRPT.T_TEST2
にマップされます。 -
(
HQ.T_TEST
n
形式の他のすべてのマッピングに、同じパターンが当てはまります。)
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.6.3 名前のフォールバック・マッピング
Oracle GoldenGateには、ソース名をターゲット名にマップできない場合に備えて、フォールバック・マッピングのメカニズムが用意されています。大/小文字が区別されるソース・オブジェクトと完全に一致するものがターゲット上に見つからない場合、Replicatはソース名を、ターゲット上の大文字または小文字(データベースのタイプによる)の同じ名前にマップしようとします。名前のフォールバック・マッピングは、NAMEMATCH
パラメータで制御します。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.6.4 11.2.1より前のバージョンの証跡からのワイルドカード・マッピング
Oracle GoldenGate 11.2.1より前のバージョンの証跡ファイルから読み取るようにReplicatが構成されている場合、ターゲットのマッピングは、下位互換性を確保するために次の方法で行われます。
-
引用符で囲んだオブジェクト名は大/小文字が区別されます。
-
引用符で囲んでいないオブジェクト名は大/小文字が区別されません。
次の例では、大/小文字が区別される表名"abc"
が、ターゲット"abc"
にマップされます。この処理が発生するのは、11.2.1より前のExtractにより、大/小文字が区別される構成のSQL Serverについて証跡が書き込まれた場合のみです。この例では、ターゲット・データベースがOracle DatabaseまたはDB2で、ターゲット・データベース内に大/小文字が区別されるabc
はないが、表ABC
はあるという場合、名前のフォールバック・マッピングが実行されます。(「名前のフォールバック・マッピング」を参照。)
MAP hq."abc", TARGET hq.*;
次の例では、大/小文字が区別されない表名abc
が、ターゲットの表名ABC
にマップされます。旧リリースのOracle GoldenGateでは、大/小文字が区別されないオブジェクト名は大文字で証跡に格納されていたため、ターゲットの表名は常に大文字でした。大/小文字が区別されない名前変換の場合、比較はロケールを考慮せずに、大文字(AからZの文字のみ)でUS-ASCIIで行われます。
MAP hq.abc, TARGET hq.*;
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.6.5 オブジェクト名におけるリテラルとしてのアスタリスクまたは疑問符
オブジェクトの名前自体にアスタリスクまたは疑問符が含まれている場合、次の例に示すように、名前全体をエスケープして二重引用符で囲む必要があります。
TABLE HT."\?ABC";
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.6.6 ワイルドカードの解決方法
オブジェクト名がワイルドカードで指定されている場合、デフォルトでは、ソース・オブジェクトの1行目の処理と同時に、そのオブジェクトの解決が行われます。(これに対し、オブジェクト名が明示的に指定されている場合は、プロセスの起動時に解決が行われます。)ワイルドカード解決のルールを変更するには、WILDCARDRESOLVE
パラメータを使用します。デフォルトはDYNAMIC
です。
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.6.7 ワイルドカード指定からのオブジェクトの除外
EXCLUDEWILDCARDOBJECTSONLY
、CATALOGEXCLUDE
、SCHEMAEXCLUDE
、MAPEXCLUDE
、TABLEEXCLUDE
の各パラメータを使用すると、ワイルドカードによるオブジェクト選択を、明示的なオブジェクト除外と組み合せて使用できます。
親トピック: データベース・オブジェクト名でのワイルドカードの使用
11.4.7 大/小文字が区別される列名とリテラルの区別
Oracle GoldenGateでの列名とリテラルの指定は、デフォルトで、SQL-92ルールに従います。大/小文字の区別をサポートするには名前を引用符で囲む必要があるデータベースの場合、Oracle GoldenGateのパラメータ・ファイル、変換関数、ユーザー・イグジットおよびコマンドでは、大/小文字が区別される列名を二重引用符で囲む必要があります。たとえば:
"columnA"
大/小文字を区別するのに引用符が不要なデータベースの場合、大/小文字が区別される列名はデータベースに格納されているとおりに指定する必要があります。たとえば:
ColumnA
リテラルは一重引用符で囲む必要があります。次の例では、Product_Code
はOracleデータベース内の大/小文字が区別される列名であり、その他の文字列はリテラルです。
@CASE ("Product_Code", 'CAR', 'A car', 'TRUCK', 'A truck')