Mappage automatique des noms d'objet

Le nom de la table cible provient de la clause TARGET de l'instruction MAP, et les noms de colonne cible proviennent des noms de colonne source dans les métadonnées de trace.

Actuellement, la fonctionnalité d'évolution automatique des schémas prend en charge la mise en correspondance des noms d'objet uniquement lorsque la base de données cible CHARSET est identique à la base de données source CHARSET ou si elle est le surensemble de la base de données source CHARSET. Dans d'autres cas, un message d'erreur approprié est signalé.

Dans les cas où la longueur du nom de la table ou de la colonne à partir de la source est trop longue (et cette longueur n'est pas prise en charge sur la base de données cible), ou dans le cas où le nom de la table ou de la colonne contient des caractères non pris en charge (qui ne sont pas pris en charge sur la base de données cible), le processus de réplication abandonne avec un message d'erreur approprié.

Pour continuer, l'une des mesures correctives suivantes doit être prise :

La sensibilité à la casse des noms de table ou de colonne générés pour l'évolution automatique des schémas dépend des règles de sensibilité à la casse des bases de données source et cible et est régie par les règles suivantes.

  1. Dans un scénario de réplication de base de données source sensible à la casse vers une cible sensible à la casse, tous les noms sont entre guillemets et utilisés.

  2. Pour toute autre combinaison de source à target, y compris case-sensitive à case-insensitive, case-insensitive à case insensitive et case-insensitive à case-sensitive, les règles suivantes sont respectées :

    1. Les noms de table sont utilisés exactement comme indiqué dans la clause TARGET de l'instruction MAP dans le fichier de paramètres de réplication.

    2. Les noms de colonne sont utilisés à partir du fichier trace, sans guillemets, sauf s'ils sont explicitement entre guillemets dans la clause COLMAP de l'instruction MAP du fichier de paramètres de réplication.

Si les noms de colonne contiennent l'un des caractères spéciaux ou espaces suivants, les noms sont placés entre guillemets et utilisés.

'".,{}()[]|+-_%~^#@/!><*&$:=?;\

Voici la convention de dénomination des objets utilisée par l'évolution automatique des schémas pour les cas d'emploi suivants :

  1. Cas d'utilisation : Base de données source sensible à la casse

    Options Comportement

    Si vous effectuez une réplication vers une base de données cible sensible à la casse, considérez le cas d'emploi comme suit :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un caractère générique, le même nom et la même casse que le nom source sont utilisés pour la table cible avec des guillemets ajoutés.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.*, TARGET region.*;

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible sensible à la casse comme suit :

    CREATE TABLE "region"."employee" ( "id" int not null, "name" VARCHAR(20), primary key ("id"));

    Remarque :

    Le nom d'objet employee est placé entre guillemets dans CREATE TABLE DDL car les bases de données source et cible sont sensibles à la casse.

    Si vous effectuez une réplication vers une base de données cible sensible à la casse, considérez le cas d'emploi comme suit :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un nom explicite, le même nom et la même casse que le nom source sont utilisés pour la table cible avec des guillemets ajoutés.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name); 

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible sensible à la casse, comme suit :

    CREATE TABLE "region"."employee" ( "id" int not null, "EMPNAME" VARCHAR(20), primary key ("id"));

    Remarque :

    Le nom d'objet employee n'est pas entre guillemets dans CREATE TABLE DDL car le nom d'objet dans la clause TARGET de l'instruction MAP n'est pas entre guillemets.

    Si vous effectuez une réplication vers une base de données cible non sensible à la casse, envisagez la casse avec les éléments suivants :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un caractère générique, le même nom et la même casse que le nom source sont utilisés pour la table cible.

    Exemple :

    L'instruction de mapping dans le fichier de paramètres Replicat est la suivante :

    MAP hr.*, TARGET region.*;

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible non sensible à la casse, comme suit :

    CREATE TABLE region.employee (id int not null, name VARCHAR(20), primary key (id));

    Remarque :

    Le nom d'objet employee n'est pas entre guillemets dans CREATE TABLE DDL car la clause cible a un nom générique non entre guillemets.

    Si vous effectuez une réplication vers une base de données cible non sensible à la casse, envisagez la casse avec les éléments suivants :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un nom explicite, les mêmes nom et casse que le nom source sont utilisés pour la table cible.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.employee, TARGET region."employee", COLMAP(USEDEFAULTS, "EMPNAME" = name);

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible non sensible à la casse, comme suit :

    CREATE TABLE region."employee" ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));

    Remarque :

    Le nom d'objet employee est entre guillemets dans CREATE TABLE DDL car le nom d'objet dans la clause TARGET de l'instruction MAP est entre guillemets. EMPNAME est entre guillemets dans DDL, car il est indiqué entre guillemets dans la clause COLMAP.
  2. Cas d'utilisation : Base de données source non sensible à la casse

    Options Comportement

    Si vous effectuez une réplication vers une base de données cible sensible à la casse, envisagez la casse avec :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un caractère générique, le même nom et la même casse que le nom source sont utilisés pour la table cible.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.*, TARGET region.*;

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible sensible à la casse, comme suit :

    CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));

    Remarque :

    Le nom d'objet employee n'est pas entre guillemets dans CREATE TABLE DDL car la clause cible a un nom générique non entre guillemets.

    Si vous effectuez une réplication vers une base de données cible sensible à la casse, envisagez la casse avec :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un nom explicite, le même nom et la même casse que le nom source sont utilisés pour la table cible.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible sensible à la casse, comme suit :

    CREATE TABLE region.employee ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));

    Remarque :

    Le nom d'objet employee n'est pas entre guillemets dans CREATE TABLE DDL car le nom d'objet dans la clause TARGET de l'instruction MAP n'est pas entre guillemets.

    Si vous effectuez une réplication vers une base de données cible non sensible à la casse, envisagez la casse avec les éléments suivants :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un caractère générique, le même nom et la même casse que le nom source sont utilisés pour la table cible.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.*, TARGET region.*;

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible non sensible à la casse, comme suit :

    CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));

    Remarque :

    Le nom d'objet employee n'est pas entre guillemets dans CREATE TABLE DDL car la clause cible a un nom générique non entre guillemets.

    Si vous effectuez une réplication vers une base de données cible non sensible à la casse, envisagez la casse avec les éléments suivants :

    • Nom de la table source : hr.employee

    • Column id saisissez int (clé primaire)

    • Type de nom varchar

    Si le nom de la table cible dans la clause TARGET de l'instruction MAP contient un nom explicite, le même nom et la même casse que le nom source sont utilisés pour la table cible.

    Exemple :

    L'instruction MAP du fichier de paramètres de réplication est la suivante :

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, EMPNAME = name);

    La fonctionnalité d'évolution automatique des schémas génère le code LDD sur la base de données cible non sensible à la casse, comme suit :

    CREATE TABLE region.employee ( id int not null, EMPNAME VARCHAR(20), primary key (id));

    Remarque :

    Le nom d'objet employee n'est pas entre guillemets dans CREATE TABLE DDL car le nom d'objet dans la clause TARGET de l'instruction MAP n'est pas entre guillemets.