Identifier correctement les noms d'objet non qualifiés dans DDL
Le processus Extract capture le schéma en cours (également appelé schéma de session) qui est en vigueur lorsqu'une opération LDD est exécutée. Le conteneur en cours est également capturé si la source est une base de données Conteneur colocative.
Le conteneur et le schéma sont utilisés pour résoudre les noms d'objet non qualifiés dans l'instruction LDD.
Prenons l'exemple suivant :
CONNECT ggadmin/PASSWORD
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE EAST.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;
Dans ces deux instructions LDD, la table non qualifiée TAB1 est résolue en tant que SCOTT.TAB1 sur la base du schéma en cours SCOTT qui est en vigueur pendant l'exécution de l'instruction LDD.
Il existe une autre façon de définir le schéma en cours, qui consiste à définir current_schema pour la session, comme dans l'exemple suivant :
CONNECT ggadmin/PASSWORD
ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE HR.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;
Dans ces deux instructions LDD, la table non qualifiée EMPLOYEES est résolue en tant que HR.EMPLOYEES en fonction du schéma en cours HR qui est en vigueur pendant l'exécution de l'instruction LDD.
Le processus Extract capture le schéma en cours qui est en vigueur pendant l'exécution du script LDD et résout les noms d'objet non qualifiés (le cas échéant) à l'aide du schéma en cours. Par conséquent, les instructions MAP indiquées pour le processus Replicat fonctionnent correctement pour les instructions LDD avec des noms d'objet non qualifiés.
Vous pouvez également mettre en correspondance un schéma de session source avec un autre schéma de session cible, si cela est nécessaire pour que le script LDD réussisse sur la cible. Ce mapping est global et remplace tout autre mapping impliquant les mêmes noms de schéma. Pour mettre en correspondance des schémas de session, utilisez le paramètre DDLOPTIONS avec l'option MAPSESSIONSCHEMA.
En cas d'échec de la mise en correspondance du schéma de session par défaut ou mis en correspondance, vous pouvez gérer l'erreur à l'aide de l'instruction de paramètre DDLERROR suivante, où l'erreur 1435 signifie que le schéma n'existe pas.
DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION