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 :
-
Pour les noms de table cible problématiques, vous devez indiquer explicitement le nom de table cible approprié dans la spécification
MAPqui répond aux exigences de la base de données cible. -
Pour les noms de colonne problématiques, vous devez indiquer explicitement les noms de colonne cible appropriés dans la clause
COLMAPde l'instructionMAPqui répond aux exigences de la base de données cible. Cela peut être pris en charge avec certaines restrictions sur la source, telles que l'absence d'ajout de nouvelles colonnes portant les mêmes noms que ceux indiqués dans la clauseCOLMAPpour la colonne cible.
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.
-
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.
-
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 :
-
Les noms de table sont utilisés exactement comme indiqué dans la clause
TARGETde l'instructionMAPdans le fichier de paramètres de réplication. -
Les noms de colonne sont utilisés à partir du fichier trace, sans guillemets, sauf s'ils sont explicitement entre guillemets dans la clause
COLMAPde l'instructionMAPdu 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 :
-
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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
TARGETde l'instructionMAPcontient 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
MAPdu 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'objetemployeeest placé entre guillemets dansCREATE TABLE DDLcar 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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
TARGETde l'instructionMAPcontient 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
MAPdu 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'objetemployeen'est pas entre guillemets dansCREATE TABLE DDLcar le nom d'objet dans la clauseTARGETde l'instructionMAPn'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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
Exemple :TARGETde l'instructionMAPcontient 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.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'objetemployeen'est pas entre guillemets dansCREATE TABLE DDLcar 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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
Exemple :TARGETde l'instructionMAPcontient un nom explicite, les mêmes nom et casse que le nom source sont utilisés pour la table cible.L'instruction
MAPdu 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'objetemployeeest entre guillemets dansCREATE TABLE DDLcar le nom d'objet dans la clauseTARGETde l'instructionMAPest entre guillemets.EMPNAMEest entre guillemets dans DDL, car il est indiqué entre guillemets dans la clauseCOLMAP. -
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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
Exemple :TARGETde l'instructionMAPcontient 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.L'instruction
MAPdu 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'objetemployeen'est pas entre guillemets dansCREATE TABLE DDLcar 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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
Exemple :TARGETde l'instructionMAPcontient un nom explicite, le même nom et la même casse que le nom source sont utilisés pour la table cible.L'instruction
MAPdu 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'objetemployeen'est pas entre guillemets dansCREATE TABLE DDLcar le nom d'objet dans la clauseTARGETde l'instructionMAPn'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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
Exemple :TARGETde l'instructionMAPcontient 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.L'instruction
MAPdu 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'objetemployeen'est pas entre guillemets dansCREATE TABLE DDLcar 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.employeeColumn idsaisissezint(clé primaire)Type de nom
varchar
Si le nom de la table cible dans la clause
Exemple :TARGETde l'instructionMAPcontient un nom explicite, le même nom et la même casse que le nom source sont utilisés pour la table cible.L'instruction
MAPdu 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'objetemployeen'est pas entre guillemets dansCREATE TABLE DDLcar le nom d'objet dans la clauseTARGETde l'instructionMAPn'est pas entre guillemets.