11 Oracle GoldenGateプロセス・インタフェースのスタート・ガイド

この章では、Oracle GoldenGateユーザーが、GGSCI(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を使用する手順

  1. 1行に1つのコマンドを含むテキスト・ファイルを作成して保存します。これがユーザーのOBEYファイルになります。オペレーティング・システムでサポートされる任意の名前を指定します。OBEYファイル内に他のOBEYファイルをネストできます。
  2. 管理クライアントまたはGGSCIを実行します。
  3. (オプション)ネストしたOBEYファイルを含むOBEYファイルを使用する場合、次のコマンドを発行します。このコマンドによって、現在のセッションでネストしたOBEYファイルを使用できるようになります。ネストしたOBEYファイルを使用する場合、常にこのコマンドが必要です。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
    ALLOWNESTED
    
  4. コマンドライン・インタフェース(管理クライアントまたはGGSCI)からOBEYコマンドを使用して、OBEYファイルを呼び出します。
    OBEY file_name
    

    説明:

    file_nameは、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を停止する手順

  1. Oracle GoldenGateディレクトリからGGSCIを実行します。
  2. GGSCIで次のコマンドを発行します。

    {START | STOP [!]} MANAGER

    説明:

    !では、Managerを停止するかどうかを確認するプロンプトを回避します。

ノート:

ユーザー・アカウント制御を有効にした状態でコマンドラインまたはGGSCIからManagerを起動すると、プログラム実行の許可または拒否を求めるUACプロンプトが表示されます。

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は、KILLSTARTまたはSTOPです。

  • wildcard specificationは、コマンドを適用するプロセス・グループの名前のワイルドカード指定です。コマンドは、ワイルドカードに適合するすべてのExtractおよびReplicatグループに適用されます。Oracle GoldenGateでは、最大100,000個のワイルドカード・エントリがサポートされます。

11.2.3 ExtractおよびReplicatの削除

この項では、ExtractプロセスとReplicatプロセスを削除する基本的な方法について説明します。その他のコマンド・オプションは、『Oracle GoldenGateリファレンス』を参照してください。

Extractグループを削除する手順

  1. GGSCIを実行します。

  2. Extractデータベース・ユーザー(または同じ権限を持つユーザー)としてDBLOGINコマンドを発行します。ローカル資格証明ストアの有無に応じて、次のいずれかのコマンドを使用できます。

    DBLOGIN [SOURCEDB dsn] {USERID user, PASSWORD password [encryption_options] | USERIDALIAS alias [DOMAIN domain]}
    
  3. Extractプロセスを停止します。

    STOP EXTRACT group_name

  4. 次のコマンドを発行します。

    DELETE EXTRACT group_name

  5. (Oracle)Extractグループをデータベースから登録解除します。

    UNREGISTER EXTRACT group_name,database_name

Replicatグループを削除する手順

  1. Replicatプロセスを停止します。

    STOP REPLICAT group_name

  2. GGSCIで次のいずれかのコマンドを発行して、データベースにログインします。
    DBLOGIN [SOURCEDB dsn] {USERID user, PASSWORD password [encryption_options] | USERIDALIAS alias [DOMAIN domain]}
    

    説明:

    • SOURCEDB dsnでは、データソース名を指定します(接続情報の一部として必要な場合)。

    • USERID userPASSWORD passwordでは、データベース・ログイン資格証明を明示的に指定します。

    • USERIDALIAS alias [DOMAIN domain]では、ローカル資格証明ストアに格納されている資格証明の別名と(オプションで)ドメインを指定します。

    • encryption_optionsでは、パスワードを暗号化するオプションの1つを指定します。

  3. 次のコマンドを発行してグループを削除します。

    DELETE REPLICAT group_name

Replicatグループを削除しても、チェックポイント表のチェックポイントは保持されます(使用されている場合)。プロセス・グループを削除しても、パラメータ・ファイルは失われません。同じパラメータ・ファイルを使用して同じグループを再作成できます。また、パラメータ・ファイルを削除して、グループの構成を完全に削除することもできます。

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パラメータを使用すると、それ以降のTABLEMAP(または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文字に置き換わります。たとえば、TABn(nは0から9)という名前の表を含むスキーマでは、HQ.TAB?というワイルドカード指定を行うと、HQ.TAB0HQ.TAB1HQ.TAB2からHQ.TAB9までが返されます(これ以外は返されません)。このワイルドカードは、DB2 LUWデータベースやDEFGENに対してはサポートされていません。このワイルドカードは、TABLEまたはMAPパラメータでソース・オブジェクトを指定する場合にのみ使用できます。TABLEまたはMAPTARGET句でのターゲット・オブジェクトの指定には使用できません。

  • アスタリスク(*)は、任意の数の文字(ゼロ・シーケンスを含む)を表します。たとえば、HQ.T*と指定すると、HQ.TOTALHQ.T123HQ.Tなどのオブジェクトが返されます。このワイルドカードは、ワイルドカードが使用できるOracle GoldenGateのすべてのコマンドおよびパラメータですべてのデータベース・タイプに対して有効です。

  • TABLE文およびMAP文では、ソース・オブジェクト名の中でのみアスタリスクと疑問符のワイルドカード文字を組み合せることができます。

11.4.6.1 ソース・オブジェクトにワイルドカードを使用する場合のルール

ソース・オブジェクトには、アスタリスクを単独で、または部分的な名前とともに使用できます。たとえば、次のソース指定はいずれも有効です。

  • TABLE HQ.*;

  • TABLE PDB*.HQ.*;

  • MAP HQ.T_*;

  • MAP HQ.T_*, TARGET HQ.*;

TABLEMAPSEQUENCEの各パラメータでは、ワイルドカードを解決するために、大/小文字の区別の有無とデータベースのロケールが考慮されます。大/小文字を区別する、または区別しないものとして作成されたデータベースの場合、名前と大/小文字がワイルドカードと正確に照合されます。たとえば、データベースで大/小文字が区別される場合、SCHEMA.TABLESCHEMA.TABLEに一致し、Schema.TableSchema.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はワイルドカードを対応するソース・オブジェクトの完全な名前に置き換えます。したがって、次のような指定は誤りです。

TABLE HQ.T_*, TARGET RPT.T_*;
MAP HQ.T_*, TARGET RPT.T_*;

前述のマッピングでは、ターゲット指定内のワイルドカードがT_TEST(ソース・オブジェクトの名前)に置き換わるため、ターゲット名全体ではT_T_TESTnとなり、間違った結果が返されます。次に、間違った結果を示します。

  • HQ.T_TEST1RPT.T_T_TEST1にマップされます。

  • HQ.T_TEST2RPT.T_T_TEST2にマップされます。

  • (HQ.T_TESTn形式の他のすべてのマッピングに、同じパターンが当てはまります。)

次の例は、アスタリスク・ワイルドカードの正しい使用方法を示しています。

MAP HQ.T_*, TARGET RPT.*;

前述の例では、次のような正しい結果が得られます。

  • HQ.T_TEST1RPT.T_TEST1にマップされます。

  • HQ.T_TEST2RPT.T_TEST2にマップされます。

  • (HQ.T_TESTn形式の他のすべてのマッピングに、同じパターンが当てはまります。)

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 ワイルドカード指定からのオブジェクトの除外

EXCLUDEWILDCARDOBJECTSONLYCATALOGEXCLUDESCHEMAEXCLUDEMAPEXCLUDETABLEEXCLUDEの各パラメータを使用すると、ワイルドカードによるオブジェクト選択を、明示的なオブジェクト除外と組み合せて使用できます。

11.4.7 大/小文字が区別される列名とリテラルの区別

Oracle GoldenGateでの列名とリテラルの指定は、デフォルトで、SQL-92ルールに従います。大/小文字の区別をサポートするには名前を引用符で囲む必要があるデータベースの場合、Oracle GoldenGateのパラメータ・ファイル、変換関数、ユーザー・イグジットおよびコマンドでは、大/小文字が区別される列名を二重引用符で囲む必要があります。たとえば:

"columnA"

大/小文字を区別するのに引用符が不要なデータベースの場合、大/小文字が区別される列名はデータベースに格納されているとおりに指定する必要があります。たとえば:

ColumnA

リテラルは一重引用符で囲む必要があります。次の例では、Product_CodeはOracleデータベース内の大/小文字が区別される列名であり、その他の文字列はリテラルです。

@CASE ("Product_Code", 'CAR', 'A car', 'TRUCK', 'A truck')