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

指定されたデータベースに対してサポートされている場合、完全修飾されたオブジェクト名の任意の部分にワイルドカードを使用できます。これらの名前の部分とは、コンテナ名、データベース名、カタログ名、所有者名(スキーマ名またはデータベース名)、表名または順序名です。オブジェクト名とワイルドカードのサポートの詳細は、そのデータベースに対応する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の各パラメータを使用すると、ワイルドカードによるオブジェクト選択を、明示的なオブジェクト除外と組み合せて使用できます。