Platzhalter in Datenbankobjektnamen verwenden
Sie können Platzhalter für jeden Teil eines vollqualifizierten Objektnamens verwenden, sofern dies für die spezifische Datenbank unterstützt wird. Diese Namensteile können die folgenden sein: Container-, Datenbank- oder Katalogname, Eigentümer (Schema- oder Datenbankname) und Tabellen- oder Sequenzname. Einzelheiten zur Unterstützung von Objektnamen und Platzhaltern finden Sie im Oracle GoldenGate-Installations- und Konfigurationshandbuch für diese Datenbank.
Gegebenenfalls können Oracle GoldenGate-Parameter zwei Platzhaltertypen verwenden, um mehrere Objekte in einer Anweisung anzugeben:
-
Ein Fragezeichen (?) ersetzt ein Zeichen. Beispiel: In einem Schema, das Tabellen mit dem Namen
TABn enthält, wobei n von 0 bis 9 ist, gibt eine Platzhalterspezifikation vonHQ.TAB?HQ.TAB0,HQ.TAB1,HQ.TAB2usw. bis zuHQ.TAB9zurück, andere jedoch nicht. Dieser Platzhalter wird weder für die LUW-Datenbank DB2 noch für DEFGEN unterstützt. Dieser Platzhalter kann nur zum Angeben von Quellobjekten in einem ParameterTABLEoderMAPverwendet werden. Sie kann nicht verwendet werden, um Zielobjekte in derTARGET-Klausel vonTABLEoderMAPanzugeben. -
Ein Sternchen (*) steht für eine beliebige Anzahl von Zeichen (einschließlich Nullsequenz). Beispiel: Die Angabe von
HQ.T*könnte Objekte wieHQ.TOTAL,HQ.T123undHQ.Tzurückgeben. Dieser Platzhalter ist für alle Datenbanktypen in allen Oracle GoldenGate-Befehlen und -Parametern gültig, bei denen ein Platzhalter zulässig ist. -
In
TABLE- undMAP-Anweisungen können Sie die Platzhalterzeichen für Sternchen und Fragezeichen nur in Quellobjektnamen kombinieren.
Regeln für die Verwendung von Platzhaltern für Quellobjekte
Bei Quellobjekten können Sie das Sternchen allein oder mit einem Teilnamen verwenden. Beispiel: Die folgenden Quellspezifikationen sind gültig:
-
TABLE HQ.*; -
TABLE PDB*.HQ.*; -
MAP HQ.T_*; -
MAP HQ.T_*, TARGET HQ.*;
Die Parameter TABLE, MAP und SEQUENCE berücksichtigen die Groß-/Kleinschreibung und das Gebietsschema der Datenbank bei der Auflösung von Platzhaltern. Bei Datenbanken, bei denen die Groß-/Kleinschreibung beachtet oder die Groß-/Kleinschreibung nicht beachtet wird, entspricht der Platzhalter dem genauen Namen und der Groß-/Kleinschreibung. Beispiel: Wenn bei der Datenbank die Groß-/Kleinschreibung beachtet wird, entspricht SCHEMA.TABLE SCHEMA.TABLE, Schema.Table Schema.Table usw. Wenn bei der Datenbank die Groß-/Kleinschreibung nicht beachtet wird, wird beim Abgleich nicht zwischen Groß- und Kleinschreibung unterschieden.
Bei Datenbanken, bei denen in derselben Datenbankinstanz sowohl die Groß-/Kleinschreibung als auch die Groß-/Kleinschreibung beachtet werden kann, funktioniert das Platzhalterzeichen anders. Dabei werden Anführungszeichen verwendet, um die Groß-/Kleinschreibung zu erzwingen. Wenn ein Platzhalter allein für einen Quellnamen in einer TABLE-Anweisung verwendet wird, entspricht ein Sternchen einem beliebigen Zeichen, unabhängig davon, ob das Sternchen in Anführungszeichen steht. Die folgenden Anweisungen liefern dieselben Ergebnisse:
TABLE hr.*;
TABLE hr."*";
Ebenso entspricht ein Fragezeichen, das allein verwendet wird, jedem einzelnen Zeichen, unabhängig davon, ob es in Anführungszeichen steht oder nicht. Die folgenden Ergebnisse liefern dieselben Ergebnisse:
TABLE hr.?;
TABLE hr."?";
Wenn ein Fragezeichen oder ein Sternchen-Platzhalter mit anderen Zeichen verwendet wird, wird die Groß-/Kleinschreibung auf die Nicht-Platzhalter angewendet, aber der Platzhalter entspricht sowohl den Bezeichnungen, bei denen die Groß-/Kleinschreibung beachtet wird, als auch den Bezeichnungen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.
- Die folgenden
TABLE-Anweisungen erfassen jeden Tabellennamen, der mit dem kleingeschriebenenabcbeginnt. Die Groß-/Kleinschreibung des Namens wird beibehalten, und die Groß-/Kleinschreibung wird beachtet. Es erfasst Tabellennamen, die"abcA"und"abca"enthalten, da der Platzhalter sowohl mit Groß-/Kleinschreibung als auch ohne Beachtung der Groß-/Kleinschreibung übereinstimmt.
TABLE hr."abc*";
TABLE hr."abc?";
- Die folgenden
TABLE-Anweisungen erfassen alle Tabellennamen, die mitABCin Großbuchstaben beginnen, da der Teilname die Groß-/Kleinschreibung nicht berücksichtigt (keine Anführungszeichen) und von dieser Datenbank in Großbuchstaben gespeichert wird. Da der Platzhalter jedoch sowohl mit Groß-/Kleinschreibung als auch ohne Beachtung der Groß-/Kleinschreibung übereinstimmt, erfasst dieses Beispiel Tabellennamen, dieABCAund"ABCa"enthalten.
TABLE hr.abc*;
TABLE hr.abc?;
Regeln zur Verwendung von Platzhaltern für Zielobjekte
Wenn Sie Platzhalter in der TARGET-Klausel einer MAP-Anweisung verwenden, müssen die Zielobjekte in der Zieldatenbank vorhanden sein. (Die Ausnahme ist, wenn die DDL-Replikation verwendet wird, wodurch neue Schemas und ihre Objekte beim Erstellen repliziert werden können.)
Bei Zielobjekten kann nur ein Sternchen verwendet werden. Wenn ein Sternchen-Platzhalter mit einem Teilnamen verwendet wird, ersetzt Replicat den Platzhalter durch den gesamten Namen des entsprechenden Quellobjekts. Daher sind Spezifikationen wie die folgenden falsch:
HQ.T
Die vorherigen Zuordnungen führen zu falschen Ergebnissen, da der Platzhalter in der Zielspezifikation durch T_TEST (den Namen eines Quellobjekts) ersetzt wird, wodurch der gesamte Zielname T_T_TESTn wird. Im Folgenden werden die falschen Ergebnisse dargestellt:
-
HQ.T_TEST1wirdRPT.T_T_TEST1zugeordnet -
HQ.T_TEST2wirdRPT.T_T_TEST2zugeordnet -
(Dieses Muster gilt für alle anderen
HQ.T_TESTn-Mappings.)
Die folgenden Beispiele zeigen die korrekte Verwendung von Sternchen-Platzhaltern.
MAP HQ.T_*, TARGET RPT.*;
Das vorstehende Beispiel erzeugt die folgenden korrekten Ergebnisse:
-
HQ.T_TEST1wirdRPT.T_TEST1zugeordnet -
HQ.T_TEST2wirdRPT.T_TEST2zugeordnet -
(Dieses Muster gilt für alle anderen
HQ.T_TESTn-Mappings.)
Fallback-Namenszuordnung
Oracle GoldenGate verfügt über einen Fallback-Zuordnungsmechanismus für den Fall, dass ein Quellname keinem Zielnamen zugeordnet werden kann. Wenn auf dem Ziel für ein Quellobjekt, bei dem die Groß-/Kleinschreibung beachtet wird, keine exakte Übereinstimmung gefunden werden kann, versucht Replicat, den Quellnamen in Groß- oder Kleinschreibung (abhängig vom Datenbanktyp) auf dem Ziel demselben Namen zuzuordnen. Die Fallback-Namenszuordnung wird durch die Parameter NAMEMATCH gesteuert. Weitere Informationen finden Sie in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.
Sternchen oder Fragezeichen als Literale in Objektnamen
Wenn der Name eines Objekts selbst ein Sternchen oder ein Fragezeichen enthält, muss der gesamte Name maskiert und in doppelte Anführungszeichen gesetzt werden, wie im folgenden Beispiel:
TABLE HT."\?ABC";
Wie Platzhalter aufgelöst werden
Wenn ein Objektname mit Platzhaltern versehen ist, tritt die Auflösung für dieses Objekt standardmäßig auf, wenn die erste Zeile aus dem Quellobjekt verarbeitet wird. (Wenn der Name eines Objekts explizit angegeben wird, erfolgt die Auflösung hingegen beim Hochfahren des Prozesses.) Um die Regeln zum Auflösen von Platzhaltern zu ändern, verwenden Sie den Parameter WILDCARDRESOLVE. Der Standardwert ist DYNAMIC.
Objekte aus Wildcard-Spezifikationen ausschließen
Sie können die Verwendung der Platzhalterobjektauswahl mit dem expliziten Objektausschluss kombinieren, indem Sie die Parameter EXCLUDEWILDCARDOBJECTSONLY, CATALOGEXCLUDE, SCHEMAEXCLUDE, MAPEXCLUDE und TABLEEXCLUDE verwenden.