自動オブジェクト名マッピング
ターゲット表名はMAP文のTARGET句から取得され、ターゲット列名は証跡メタデータのソース列名から取得されます。
自動スキーマ展開機能では、現在、ターゲット・データベースCHARSETがソース・データベースCHARSETと同じ場合、またはソース・データベースCHARSETのスーパーセットの場合のみ、オブジェクト名マッピングがサポートされます。それ以外の場合は、適切なエラーメッセージが報告されます。
ソースからの表または列の名前の長さが長すぎる場合(およびこの長さはターゲット・データベースでサポートされていません)、または表または列の名前にサポートされていない文字が含まれている場合(ターゲット・データベースでサポートされていない文字)、Replicatは適切なエラー・メッセージで異常終了します。
続行するには、次のいずれかの修正処理を実行する必要があります。
-
問題のあるターゲット表名の場合、ターゲット・データベースの要件を満たす適切なターゲット表名を
MAP仕様で明示的に指定する必要があります。 -
問題のある列名については、ターゲット・データベースの要件を満たす
MAP文のCOLMAP句で、適切なターゲット列名を明示的に指定する必要があります。これは、ターゲット列のCOLMAP句で指定されている名前と同じ名前の新しい列を追加しないなど、ソースに対するいくつかの制限でサポートできます。
自動スキーマ展開用に生成される表名または列名の大/小文字の区別は、ソース・データベースおよびターゲット・データベースの大/小文字の区別ルールに依存し、次のルールによって管理されます。
-
大/小文字を区別するソース・データベースから大/小文字を区別するターゲット・データベースへのレプリケーション・シナリオでは、すべての名前が引用符で囲まれて使用されます。
-
sourceから targetへのその他の組み合わせ(case-sensitiveから case-insensitive、case-insensitiveから case-insensitive、および case-insensitiveから case-sensitive)では、次の規則に従います。
-
表名は、Replicatパラメータ・ファイルの
MAP文のTARGET句で指定されているとおりに使用されます。 -
列名は、Replicatパラメータ・ファイルの
MAP文のCOLMAP句で明示的に引用符で囲まれていないかぎり、引用符なしで証跡ファイルから使用されます。
-
列名に次の特殊文字またはスペースが含まれている場合は、名前を引用符で囲んで使用します。
'".,{}()[]|+-_%~^#@/!><*&$:=?;\
次のユースケースで自動スキーマ展開で使用されるオブジェクト命名規則を次に示します。
-
ユースケース: 大/小文字を区別するソース・データベース
オプション 動作 大/小文字を区別するターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
MAP文のTARGET句のターゲット表名にワイルドカードが含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用され、引用符が追加されます。例:
Replicatパラメータ・ファイルの
MAP文は次のとおりです。MAP hr.*, TARGET region.*;自動スキーマ展開機能では、次のように、大/小文字が区別されるターゲット・データベースでDDLが生成されます。
CREATE TABLE "region"."employee" ( "id" int not null, "name" VARCHAR(20), primary key ("id"));ノート:
ソース・データベースとターゲット・データベースでは大/小文字が区別されるため、オブジェクト名employeeはCREATE TABLE DDLで引用符で囲まれます。大/小文字を区別するターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
MAP文のTARGET句のターゲット表名に明示的な名前が含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用され、引用符が追加されます。例:
Replicatパラメータ・ファイルの
MAP文は次のとおりです:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);自動スキーマ展開機能では、次のように大/小文字が区別されるターゲット・データベースでDDLが生成されます。
CREATE TABLE "region"."employee" ( "id" int not null, "EMPNAME" VARCHAR(20), primary key ("id"));ノート:
オブジェクト名employeeは、MAP文のTARGET句のオブジェクト名が引用符で囲まれていないため、CREATE TABLE DDLでは引用符で囲まれていません。大/小文字を区別しないターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
例:MAP文のTARGET句のターゲット表名にワイルドカードが含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用されます。Replicatパラメータ・ファイルのMAP文は次のとおりです。
MAP hr.*, TARGET region.*;自動スキーマ展開機能では、次のように、大/小文字を区別しないターゲット・データベースでDDLが生成されます。
CREATE TABLE region.employee (id int not null, name VARCHAR(20), primary key (id));ノート:
ターゲット句に引用符なしのワイルドカード名が含まれているため、オブジェクト名employeeはCREATE TABLE DDLで引用符なしです。大/小文字を区別しないターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
例:MAP文のTARGET句のターゲット表名に明示的な名前が含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用されます。Replicatパラメータ・ファイルの
MAP文は次のとおりです。MAP hr.employee, TARGET region."employee", COLMAP(USEDEFAULTS, "EMPNAME" = name);自動スキーマ展開機能では、次のように、大/小文字を区別しないターゲット・データベースでDDLが生成されます。
CREATE TABLE region."employee" ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));ノート:
オブジェクト名employeeは、MAP文のTARGET句のオブジェクト名が引用符で囲まれているため、CREATE TABLE DDLで引用符で囲みます。EMPNAMEは、COLMAP句で引用符付きとして指定されているため、DDLで引用符で囲みます。 -
ユースケース: 大/小文字を区別しないソース・データベース
オプション 動作 大/小文字を区別するターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
例:MAP文のTARGET句のターゲット表名にワイルドカードが含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用されます。Replicatパラメータ・ファイルの
MAP文は次のとおりです。MAP hr.*, TARGET region.*;自動スキーマ展開機能では、次のように大/小文字が区別されるターゲット・データベースでDDLが生成されます。
CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));ノート:
ターゲット句に引用符なしのワイルドカード名が含まれているため、オブジェクト名employeeはCREATE TABLE DDLで引用符なしです。大/小文字を区別するターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
例:MAP文のTARGET句のターゲット表名に明示的な名前が含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用されます。Replicatパラメータ・ファイルの
MAP文は次のとおりです。MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);自動スキーマ展開機能では、次のように大/小文字が区別されるターゲット・データベースでDDLが生成されます。
CREATE TABLE region.employee ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));ノート:
オブジェクト名employeeは、MAP文のTARGET句のオブジェクト名が引用符で囲まれていないため、CREATE TABLE DDLでは引用符で囲まれていません。大/小文字を区別しないターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
例:MAP文のTARGET句のターゲット表名にワイルドカードが含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用されます。Replicatパラメータ・ファイルの
MAP文は次のとおりです。MAP hr.*, TARGET region.*;自動スキーマ展開機能では、次のように、大/小文字を区別しないターゲット・データベースでDDLが生成されます。
CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));ノート:
ターゲット句に引用符なしのワイルドカード名が含まれているため、オブジェクト名employeeはCREATE TABLE DDLで引用符なしです。大/小文字を区別しないターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:
ソース表名:
hr.employeeColumn id型int(主キー)名前タイプ
varchar
例:MAP文のTARGET句のターゲット表名に明示的な名前が含まれている場合、ソース名と同じ名前と大/小文字がターゲット表に使用されます。Replicatパラメータ・ファイルの
MAP文は次のとおりです。MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, EMPNAME = name);自動スキーマ展開機能では、次のように、大/小文字を区別しないターゲット・データベースでDDLが生成されます。
CREATE TABLE region.employee ( id int not null, EMPNAME VARCHAR(20), primary key (id));ノート:
オブジェクト名employeeは、MAP文のTARGET句のオブジェクト名が引用符で囲まれていないため、CREATE TABLE DDLでは引用符で囲まれていません。