Nicht qualifizierte Objektnamen in DDL korrekt identifizieren

Extract erfasst das aktuelle Schema (auch Sessionschema genannt), das bei der Ausführung eines DDL-Vorgangs wirksam ist. Der aktuelle Container wird auch erfasst, wenn es sich bei der Quelle um eine mehrmandantenfähige Containerdatenbank handelt.

Container und Schema werden verwendet, um nicht qualifizierte Objektnamen in der DDL aufzulösen.

Beachten Sie folgendes Beispiel:

CONNECT ggadmin/PASSWORD
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE EAST.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;

In diesen beiden DDL-Anweisungen wird die nicht qualifizierte Tabelle TAB1 basierend auf dem aktuellen Schema SCOTT, das während der DDL-Ausführung gültig ist, als SCOTT.TAB1 aufgelöst.

Es gibt eine andere Möglichkeit, das aktuelle Schema festzulegen, d.h. die current_schema für die Session festzulegen, wie im folgenden Beispiel dargestellt:

CONNECT ggadmin/PASSWORD
ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE HR.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;

In beiden DDL-Anweisungen wird die nicht qualifizierte Tabelle EMPLOYEES als HR.EMPLOYEES basierend auf dem aktuellen Schema HR aufgelöst, das während der DDL-Ausführung gültig ist.

Extract erfasst das aktuelle Schema, das während der DDL-Ausführung gültig ist, und löst die nicht qualifizierten Objektnamen (sofern vorhanden) mit dem aktuellen Schema auf. Daher funktionieren MAP-Anweisungen, die für Replicat angegeben wurden, korrekt für DDL mit nicht qualifizierten Objektnamen.

Sie können ein Quellsessionschema auch einem anderen Zielsessionschema zuordnen, wenn dies für die erfolgreiche DDL auf dem Ziel erforderlich ist. Diese Zuordnung ist global und setzt alle anderen Zuordnungen außer Kraft, die dieselben Schemanamen enthalten. Um Sessionschemas zuzuordnen, verwenden Sie den Parameter DDLOPTIONS mit der Option MAPSESSIONSCHEMA.

Wenn die standardmäßige oder zugeordnete Sessionschemazuordnung nicht erfolgreich verläuft, können Sie den Fehler mit der folgenden DDLERROR-Parameteranweisung behandeln, wobei Fehler 1435 bedeutet, dass das Schema nicht vorhanden ist.

DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION