Microservices: コマンドライン・インタフェース

管理クライアントを起動するには、現在の作業ディレクトリをOracle GoldenGateホーム・ディレクトリ(OGG_HOME)に変更する必要があります。

ノート:

管理クライアントを起動する前に、環境変数OGG_HOMEおよびOGG_VAR_HOMEを設定する必要があります。

管理クライアントについて

管理クライアントはコマンドライン・ユーティリティです。これは、マイクロサービスによって公開されているREST APIを使用して、Oracle GoldenGateデプロイメントで管理および構成のタスクを実行します。

管理クライアントは、Oracle GoldenGateプロセスの作成、変更および削除に使用できるとともに、MA Webユーザー・インタフェースのかわりに使用できるコマンドライン・ユーティリティです。管理クライアント・プログラムは、$OGG_HOME/binディレクトリ内にあります。この場合、$OGG_HOMEはOracle GoldenGateホーム・ディレクトリです。

デプロイメントとの管理クライアント接続を自動化する必要がある場合、Oracleウォレットを使用してユーザー資格証明を格納できます。格納される資格証明は、次の特性を持っている必要があります:
  • 単一のユーザー名(アカウント)とパスワード

  • 管理クライアントが実行されている環境に対してローカルです

  • 現在ログインしているユーザーのみが使用可能です

  • 管理クライアントによって管理されます

  • 資格証明名を使用して参照されます

  • Oracle GoldenGateデプロイメントおよびプロキシ接続で使用可能です。

ノート:

管理クライアントを管理タスク用に使用するには、サービス・マネージャと管理サービスの両方で動作するユーザー資格証明が必要です。

管理クライアントを使用するには、次のステップを実行します:

  1. Linuxでは、OGG_HOMEおよびPATH環境変数を次のように設定します。
    export OGG_HOME=ogg_install_location
    export PATH=$OGG_HOME/bin:$PATH
    SSL証明書ファイル(.pemまたは.der)を使用してセキュアなデプロイメントを構成する場合は、OGG_CLIENT_TLS_CAPATH環境変数を追加する必要があります。これは、管理クライアントからデプロイメントに接続できるようにするために必要です。この変数は、証明書ファイルがホストに配置される場所を指定するために使用されます。サーバー証明書の検証のみが必要なクライアントの場合、OGG_CLIENT_TLS_CAPATH環境変数は、クライアントが接続することが想定されるサーバーと共有する信頼できるCA証明書を含むファイルを参照する必要があります。
    export OGG_CLIENT_TLS_CAPATH = deployment_rootCA_certificate_location

    ノート:

    Microsoft Windowsの場合、デフォルトの証明書ファイルの形式は.derですが、他のすべてのプラットフォームではデフォルトの形式として.pemが使用されます。
  2. 次のコマンドを実行します。
    [oracle]$ adminclient
    出力には、Oracle GoldenGate管理クライアントのプロンプトが表示され、管理クライアントからデプロイメントに接続できます:
    OGG (not connected) 1> 
  3. セキュリティ・ユーザーとして管理クライアントからデプロイメントまたはプロキシ・サーバーに接続します。これは、OGGCAを使用してOracle GoldenGateインスタンスに対するデプロイメントの追加中に作成したユーザーです。
    CONNECT http(s)://localhost:port DEPLOYMENT deployment name AS security role user PASSWORD password

    ノート:

    管理クライアントからセキュアまたは非セキュア・デプロイメントに接続するパスワードの最後に感嘆符(!)が含まれる場合、単一行でCONNECTコマンドを使用する際はパスワードを二重引用符で囲って入力する必要があります。そうしないと、パスワードは受け入れられず、接続に失敗します。これは、強力なパスワード・ポリシーを持つすべてのデプロイメントで必須です。
    構文:
    CONNECT - Connect to an Oracle GoldenGate Service Manager
            |CONNECT server-url [ DEPLOYMENT deployment-name]
            |[ ( AS deployment-credentials-name|
            | USER  deployment-user-name )
            |[PASSWORD deployment-password] ]
            |[PROXY proxy-uri|
            |[(AS proxy-credentials-name
            |USER proxy-user-name)
            |[ PASSWORD proxy-password] ] ] [ ! ]

    詳細は、Oracle GoldenGateコマンドライン・インタフェース・リファレンスCONNECTコマンドを参照してください。

    ノート:

    デプロイメント資格証明は、資格証明ストアにUSERIDALIASとして保存できません。これは、データベース資格証明の格納に使用されるOracleウォレットは管理サービスによって管理されるためです。かわりに、管理クライアント用に個別のOracleウォレットが作成されます。Oracleウォレットは、ユーザー・ホーム・ディレクトリに格納されます。

    次の例は、管理クライアントからデプロイメントに接続するためのOracle GoldenGateデプロイメント・ユーザーの追加を示しています:

    ADD CREDENTIALS admin USER ggadmin PASSWORD oggadmin-A1
    出力:
    2019-02-14T00:35:38Z  INFO OGG-15114  Credential store altered.

    次の例は、管理クライアントからデプロイメントに接続するためのOracle GoldenGateデプロイメント・プロキシ・ユーザーの追加を示しています:

    ADD CREDENTIALS proxy USER proxyadmin PASSWORD oggadmin-A2
    出力:
    2019-02-14T00:35:48Z  INFO OGG-15114  Credential store altered.
    OGG (Not Connected)4> CONNECT http://www.example.com:12000 deployment EAST PROXY http:111.1.1.1:3128 as proxyadmin password oggadmin-A2
    Using default deployment 'Local' 
    OGG (http://www.example.com:12000 Local) 4>
    プロキシ接続の資格証明が無効な場合は、次のエラーのようなエラーが発生します。
    ERROR: Proxy server user name 'proxyadmin' or password is incorrect.
  4. HELPコマンドを使用して、管理クライアント・コマンドの完全なリストを表示できます。HELP SHOWSYNTAXコマンドを使用すると、特定のコマンドの構文を表示できます。

コマンド引数でのワイルドカードの使用

一部のOracle GoldenGateコマンドでワイルドカードを使用して、複数のExtractグループおよびReplicatグループを1つの単位として制御できます。Oracle GoldenGateでサポートされるワイルドカード記号は、アスタリスク(*)です。アスタリスクは、任意の数の文字を表します。たとえば、名前に文字Xを含むすべてのExtractグループを起動するには、次のコマンドを発行します。

START EXTRACT *X*

コマンド履歴の使用

次のツールを使用すると、複数のコマンドを簡単に実行できます。

  • 以前実行したコマンドのリストを表示するには、HISTORYコマンドを使用します。

  • 以前のコマンドを編集せずに再実行するには、!コマンドを使用します。

  • 以前のコマンドを編集してから再実行するには、FCコマンドを使用します。

よく使用するコマンド・シーケンスの保存と呼出し

よく使用する一連のコマンドは、OBEYファイルおよびOBEYコマンドを使用して自動化できます。OBEYファイルでは、ローカル・オペレーティング・システムの文字セットが認識されます。その文字セットと互換性のない文字を指定するには、Unicode表記法を使用します。

OBEYを使用する手順

  1. 1行に1つのコマンドを含むテキスト・ファイルを作成して保存します。これがユーザーのOBEYファイルになります。オペレーティング・システムでサポートされる任意の名前を指定します。OBEYファイル内に他のOBEYファイルをネストできます。
  2. 管理クライアントを起動します。
  3. (オプション)ネストしたOBEYファイルを含むOBEYファイルを使用する場合、次のコマンドを発行します。このコマンドによって、現在のセッションでネストしたOBEYファイルを使用できるようになります。ネストしたOBEYファイルを使用する場合、常にこのコマンドが必要です。
    ALLOWNESTED
  4. 管理クライアントから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グループが作成されて起動され、処理情報が取得されます。

詳細は、『Oracle GoldenGateリファレンス』OBEYを参照してください。

ExtractおよびReplicatの制御

ここでは、ExtractプロセスとReplicatプロセスを制御するための基本的な手順を示します。

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

ExtractおよびReplicatの削除

この項では、ExtractプロセスとReplicatプロセスを削除する基本的な方法について説明します。

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

  1. 管理クライアントからデプロイメントに接続します。

  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. 次のいずれかのコマンドを発行して、データベースにログインします。
    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グループを削除しても、チェックポイント表のチェックポイントは保持されます(使用されている場合)。プロセス・グループを削除しても、パラメータ・ファイルは失われません。同じパラメータ・ファイルを使用して同じグループを再作成できます。また、パラメータ・ファイルを削除して、グループの構成を完全に削除することもできます。

Oracle GoldenGateの入力におけるオブジェクト名の指定

パラメータ・ファイル(TABLE文、MAP文など)、列変換関数、コマンド、その他の入力でオブジェクト名を指定する際には、次のルールが適用されます。

トピック:

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

詳細は、「エスケープ・シーケンスのサポート」を参照してください

サポートされるデータベース・オブジェクト名

パラメータ・ファイル、コマンドおよびその他の入力のオブジェクト名は、任意の長さで、サポートされる任意の文字セットを使用して指定できます。サポートされる文字セットについては、サポートされる文字セットを参照してください。

Oracle GoldenGateは、オブジェクト名および列名でほとんどの文字をサポートしています。空白や記号などの特殊文字が含まれているオブジェクト名は、二重引用符で囲んで指定します。

次に示すサポートされる文字とサポートされない文字のリストは、Oracle GoldenGateでサポートされているすべてのデータベースを対象としていますが、リストのすべての文字がサポートされるかどうかはデータベース・プラットフォームによって異なります。

トピック:

サポートされる特殊文字

Oracle GoldenGateは、次の特殊文字も含めて、データベースでサポートされるすべての文字をサポートしています。パラメータ・ファイルでは、これらの特殊文字を含むオブジェクト名を二重引用符で囲む必要があります。

文字 説明

/

スラッシュ(「スラッシュを含む名前の指定」を参照)

*

アスタリスク(パラメータ・ファイルで使用する場合は、\*のように、バック・スラッシュでエスケープする必要があります。)

?

疑問符(パラメータ・ファイルで使用する場合は、\?のように、バック・スラッシュでエスケープする必要があります。)

@

アットマーク(サポートされますが、データベースでリソース・ロケータとして使用されることが多い文字です。オブジェクト名では問題を生じることがあります。)

#

ポンド記号

$

ドル記号

%

パーセント記号(パラメータ・ファイルで使用する場合は、%%とする必要があります。)

^

カレット記号

( )

開き丸カッコと閉じ丸カッコ

_

アンダースコア

-

ダッシュ

<space>

空白

サポートされない特殊文字

次の文字は、オブジェクト名およびキー以外の列名ではサポートされません。

文字 説明

\

バック・スラッシュ(パラメータ・ファイルで使用する場合は、\\とする必要があります。)

{ }

開き中カッコと閉じ中カッコ

[ ]

開き大カッコと閉じ大カッコ

=

等号

+

プラス記号

!

感嘆符

~

チルド

|

パイプ

&

アンパサンド

:

コロン

;

セミコロン

,

カンマ

' '

一重引用符

" "

二重引用符

'

アクセント記号(発音区別符)

.

ピリオド

<

小なり記号(または開き山カッコ)

>

大なり記号(または閉じ山カッコ)

スラッシュを含む名前の指定

表名のいずれかの部分にスラッシュ文字(/)が含まれている場合、その名前コンポーネントを二重引用符で囲む必要があります。オブジェクト名がIBM iプラットフォームからのものの場合、このかぎりではありません。次に例を示します。

"c/d" 
"/a".b 
a."b/"

二重引用符で囲まれていないスラッシュが名前に含まれる場合、その名前はIBM iプラットフォーム(DB2 for iデータベース)からのものとしてOracle GoldenGateで処理されます。名前に含まれるスラッシュは、区切り文字として解釈されます。

データベース・オブジェクト名の修飾

オブジェクト名はパラメータ・ファイルで完全修飾されている必要があります。つまり、Oracle GoldenGateのパラメータ構文への入力で指定する名前だけでなく、すべての名前(SQLEXEC入力として指定するSQLプロシージャまたは問合せ内の名前や、ユーザー・イグジット入力の名前の他、パラメータ・ファイルに入力するその他すべての名前)の指定が修飾されている必要があります。

Oracle GoldenGateでは、データベースに応じて、2つの部分からなるオブジェクト名と3つの部分からなるオブジェクト名がサポートされています。

トピック:

2つの部分からなる名前

ほとんどのデータベースでは、2つの部分からなる名前のみを次の形式で指定する必要があります。

owner.object

例: HR.EMP

説明:

ownerは、スキーマまたはデータベースです(データベース・オブジェクトを格納する論理ネームスペースの定義方法によって異なる)。objectは、表またはその他のサポートされるデータベース・オブジェクトです。

Oracle GoldenGateで2つの部分からなる名前がサポートされるデータベースと、それぞれの適切なネーミング規則を次に示します。

  • Db2 for i: schema.objectおよびlibrary/file(member)

  • Db2 LUW: schema.object

  • Db2 on z/OS: schema.object

  • MySQL: database.object

  • Oracle Database (CDB以外のデータベース): schema.object

  • SQL Server: schema.object

  • Teradata: database.object

3つの部分からなる名前

Oracle GoldenGateで3つの部分からなる名前がサポートされているデータベースを次に示します。

  • Oracleコンテナ・データベース(CDB)

ソースOracleコンテナ・データベースから取得する場合には、3つの部分からなる名前が必要です(1つのExtractグループが複数のコンテナから取得する可能性があるため)。したがって、ExtractのTABLE文では、各オブジェクトまたは複数のオブジェクトに対して、コンテナ名とスキーマ名を指定する必要があります。

3つの部分からなるOracle CDB名は次のように指定します。

container.schema.object

例: PDBEAST.HR.EMP

複数のコンテナまたはカタログからのデータの適用

複数のソース・コンテナまたはカタログから取得したデータをターゲットOracleコンテナ・データベースに適用するには、3つおよび2つの部分からなる名前の両方が必要です。MAP文のMAP部分では、各ソース・オブジェクトがコンテナまたはカタログに関連付けられている必要があります(TABLE文の場合と同様)。これにより、ユーザー(およびReplicat)は、複数のソース・コンテナまたはカタログから適切なターゲット・オブジェクトにデータを正しくマップできます。一方、MAP文のTARGET部分で必要なのは、2つの部分からなる名前のみです。これは、Replicatが同時に接続可能なターゲット・コンテナまたはカタログは1つのみなので、schema.ownerという修飾子で十分だからです。複数のターゲット・コンテナまたはカタログに対応するには、複数のReplicatグループが必要です。ターゲット・コンテナまたはカタログは、TARGETDBパラメータで指定します。

デフォルトのコンテナまたはカタログの指定

パラメータ・ファイルでSOURCECATALOGパラメータを使用すると、それ以降のTABLEMAP(またはOracle SEQUENCE)の各指定に対して、デフォルトのカタログを指定できます。

次の例は、SOURCECATALOGを使用して、regionおよびjobsオブジェクトにpdbeastというデフォルトのOracle PDBを指定し、appraisalオブジェクトにpdbwestというデフォルトのPDBを指定する方法を示しています。pdbeastのオブジェクトは3つの部分からなる完全修飾名で指定されているため、デフォルトのカタログを指定する必要はありません。

TABLE pdbeast.hr.emp*; 
SOURCECATALOG pdbeast 
TABLE region.country*; 
TABLE jobs.desg*; 
SOURCECATALOG pdbwest 
TABLE appraisal.sal*;

大/小文字が区別されるデータベース・オブジェクト名の指定

Oracle GoldenGateでは大/小文字が区別される名前をサポートしています。大/小文字が区別されるオブジェクトを指定する場合は、次のルールに従います。

  • 大/小文字が区別されるデータベースのオブジェクト名は、それをホスト・データベースに格納するときと同じ大/小文字で指定します。データベースのタイプによっては、大/小文字の区別の有無がデータベースのレベルごとに異なる場合がありますので注意してください(スキーマは大/小文字が区別されるが、表は区別されないなど)。大/小文字を区別するには引用符が必要になるデータベースの場合は、大/小文字を区別する各オブジェクトを修飾名の中で引用符で囲んでください。

    正: TABLE "Sales"."ACCOUNT"

    誤: TABLE "Sales.ACCOUNT"

  • Oracle GoldenGateでは、マッピング目的での必要に応じて、大/小文字が区別されない名前を格納時の大/小文字に変換します。

表11-1は、オブジェクト名における大/小文字の区別のサポート状況を、サポートされるデータベースごとに簡単にまとめたものです。この種のサポートの詳細は、データベースのドキュメントを参照してください。

表11-1 データベースごとのオブジェクト名の大/小文字の区別

データベース 大/小文字を区別するために引用符が必要か 引用符で囲んでいないオブジェクト名 引用符で囲んだオブジェクト名

DB2

はい。大/小文字を区別するかどうかを引用符の有無で識別します。

大/小文字が区別されず、大文字で格納されます。

大/小文字が区別され、大文字と小文字の混在で格納されます。

MySQL

(大/小文字が区別されるデータベース)

いいえ

  • 常に大/小文字が区別され、大文字と小文字の混在で格納されます。

  • 列、トリガーおよびプロシージャの名前は大/小文字が区別されません。

影響なし

影響なし

Oracle Database

はい。大/小文字を区別するかどうかを引用符の有無で識別します。

大/小文字が区別されず、大文字で格納されます。

大/小文字が区別され、大文字と小文字の混在で格納されます。

SQL Server

(データベースは大/小文字を区別するものとして作成)

いいえ

常に大/小文字が区別され、大文字と小文字の混在で格納されます。

影響なし

影響なし

SQL Server

(データベースは大/小文字を区別しないものとして作成)

いいえ

常に大/小文字が区別されず、大文字と小文字の混在で格納されます。

影響なし

影響なし

Teradata

いいえ

常に大/小文字が区別されず、大文字と小文字の混在で格納されます。

影響なし

影響なし

ノート:

サポートされるすべてのデータベースにおいて、パスワードは、関連オブジェクト名が引用符で囲まれているかどうかに関係なく、常に大/小文字を区別するものとして扱われます。

データベース・オブジェクト名でのワイルドカードの使用

指定されたデータベースに対してサポートされている場合、完全修飾されたオブジェクト名の任意の部分にワイルドカードを使用できます。これらの名前の部分とは、コンテナ名、データベース名、カタログ名、所有者名(スキーマ名またはデータベース名)、表名または順序名です。オブジェクト名とワイルドカードのサポートの詳細は、そのデータベースに対応する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文では、ソース・オブジェクト名の中でのみアスタリスクと疑問符のワイルドカード文字を組み合せることができます。

トピック:

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

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

  • 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?;
ターゲット・オブジェクトにワイルドカードを使用する場合のルール

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形式の他のすべてのマッピングに、同じパターンが当てはまります。)

名前のフォールバック・マッピング

Oracle GoldenGateには、ソース名をターゲット名にマップできない場合に備えて、フォールバック・マッピングのメカニズムが用意されています。大/小文字が区別されるソース・オブジェクトと完全に一致するものがターゲット上に見つからない場合、Replicatはソース名を、ターゲット上の大文字または小文字(データベースのタイプによる)の同じ名前にマップしようとします。名前のフォールバック・マッピングは、NAMEMATCHパラメータで制御します。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

オブジェクト名におけるリテラルとしてのアスタリスクまたは疑問符

オブジェクトの名前自体にアスタリスクまたは疑問符が含まれている場合、次の例に示すように、名前全体をエスケープして二重引用符で囲む必要があります。

TABLE HT."\?ABC";
ワイルドカードの解決方法

オブジェクト名がワイルドカードで指定されている場合、デフォルトでは、ソース・オブジェクトの1行目の処理と同時に、そのオブジェクトの解決が行われます。(これに対し、オブジェクト名が明示的に指定されている場合は、プロセスの起動時に解決が行われます。)ワイルドカード解決のルールを変更するには、WILDCARDRESOLVEパラメータを使用します。デフォルトはDYNAMICです。

ワイルドカード指定からのオブジェクトの除外

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

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

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

"columnA"

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

ColumnA

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

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