プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成
12c (12.2.0.1)
E70107-04
目次へ移動
目次

前
次

13.5 DDLスコープについて

データベース・オブジェクトは、スコープで分類されます。スコープは、オブジェクトに対するDDL操作がOracle GoldenGateでどのように処理されるかを定義するカテゴリです。スコープは次のとおりです。

スコープを使用すると、DDL操作、文字列の置換およびエラー処理のフィルタリングをより詳細に制御できます。

13.5.1 マップされるスコープ

TABLEおよびMAP文に指定されるオブジェクトは、MAPPEDスコープです。それらの文での抽出とレプリケーションの指示は、オーバーライド・ルールが適用されていないかぎり、指定されたオブジェクトに対するデータ(DML)とDDLの両方に適用されます。

TABLE文とMAP文内のオブジェクトでは、次の表にリストされたDDL操作がサポートされます。


表13-1 MAP文とTABLE文でマップできるオブジェクト

操作 対象のオブジェクト(1)

CREATE

ALTER

DROP

RENAME

COMMENT ON脚注2

TABLE脚注3

INDEX

TRIGGER

SEQUENCE

MATERIALIZED VIEW

VIEW

FUNCTION

PACKAGE

PROCEDURE

SYNONYM

PUBLIC SYNONYM脚注4

GRANT

REVOKE

TABLE

SEQUENCE

MATERIALIZED VIEW

ANALYZE

TABLE

INDEX

CLUSTER


脚注 1 TABLEおよびMAPでは、これらの操作の対象のオブジェクト名に使用される可能性のある一部の特殊文字がサポートされません。サポートされていない特殊文字が使用されたオブジェクトは、UNMAPPEDおよびOTHERのスコープでサポートされます。

脚注2

COMMENT ON TABLECOMMENT ON COLUMNに適用されます。

脚注3

AS SELECTが含まれます。

脚注4

表名は、スキーマ名で修飾する必要があります。

Extractの場合、MAPPEDスコープでTABLE文の指示に従ってDDLキャプチャ用にオブジェクトがマークされます。Replicatの場合、MAPPEDスコープでレプリケーション用にDDLがマークされ、MAP文のTARGET句のスキーマと名前によって指定されたオブジェクトにマップされます。このマッピングを実行するために、ReplicatによってALTER SESSIONが発行され、ReplicatセッションのスキーマがTARGET句で指定されたスキーマに設定されます。修飾されていないオブジェクトがDDLに含まれている場合、ターゲットで割り当てられるスキーマは、「DDL内の修飾されていないオブジェクト名の正しい識別」に説明されている状況に応じて異なります。

TABLE文とMAP文が次のとおりであるとします。

Extract (ソース)

TABLE fin.expen;
TABLE hr.tab*;

Replicat (ターゲット)

MAP fin.expen, TARGET fin2.expen2;
MAP hr.tab*, TARGET hrBackup.bak_*;

次のソースDDL文もあるとします。

ALTER TABLE fin.expen ADD notes varchar2(100);

この例では、ソース表fin.expenが、別のスキーマと表名にマップするTARGET句が指定されたMAP文にあるため、ターゲットのDDL文は次のようになります。

ALTER TABLE fin2.expen2 ADD notes varchar2(100);

同様に、次のソースおよびターゲットDDL文は、例のTABLE文およびMAP文の2つ目のセットに使用できます。

ソース:

CREATE TABLE hr.tabPayables ... ;

ターゲット:

CREATE TABLE hrBackup.bak_tabPayables ...;

オブジェクトがMAPPEDスコープの場合は、DDLサポートをさらに絞り込む場合を除き、DDL構成パラメータでそのオブジェクト名を省略できます。TABLE文およびMAP文でオブジェクト名を変更する必要がある場合、変更内容はそれらのオブジェクトのDDLに自動的に適用されます。

TABLE文にはオブジェクトを指定し、MAP文には指定しない場合、そのオブジェクトのDDLは、ソースではスコープがMAPPEDになり、ターゲットではUNMAPPEDになります。

13.5.1.1 Oracleクラスタ表とUDTのマッピング

Oracleクラスタ表またはOracleユーザー定義型(UDT)は、別のターゲット名にはマップできませんが、別のターゲット・スキーマにはマップできます。これらの特別なオブジェクトは、それ自体がMAPPEDUNMAPPEDの混在の可能性のある、基になる表で構成されるため、名前のマッピングは使用できません。

13.5.1.2 ALTER INDEXのマッピング

ALTER INDEX...RENAMEコマンドは、別のターゲット索引名にはマップできませんが、別のターゲット・スキーマにはマップできます。

有効な例:

ALTER INDEX src.ind RENAME TO indnew; 

このDDLは、ワイルドカードを使用して、次のようにマップできます。

MAP src.* TARGET tgt.*; 

または次のように、ソースとターゲットの指定で元の索引名を使用することを確認し、明示的にマップすることも可能です。

MAP src.ind TARGET tgt.ind; 

前述のケースのいずれの場合も、ターゲットDDLは次のようになります。

ALTER INDEX tgt.ind RENAME TO indnew; 

無効な例:

次のようなMAP文は無効です。

MAP src.ind TARGET tgt.indnew; 

その文で古い名前が新しい名前にマップされ、ターゲットDDLは次のようになります。

ALTER INDEX tgt.indnew RENAME TO indnew; 

13.5.2 マップされないスコープ

TABLE文またはMAP文でDDL操作の使用がサポートされているが、ベース・オブジェクト名がそれらのパラメータに含まれていない場合は、UNMAPPEDスコープになります。

オブジェクト名のスコープが、ソースではUNMAPPED (ExtractのTABLE文にない)で、ターゲットではMAPPED (ReplicatのMAP文にある)であることも、その逆もあります。Oracle DDLのスコープがReplicat構成でUNMAPPEDの場合、Replicatはデフォルトでは次のようにします。

  1. Replicatセッションの現在のスキーマをソースDDLオブジェクトのスキーマに設定します。
  2. DDLをそのスキーマとして実行します。
  3. ReplicatをReplicatセッションの現在のスキーマとしてリストアします。

13.5.3 他のスコープ

マップできないDDL操作は、OTHERスコープになります。DDLがReplicat構成でOTHERスコープの場合、ソースDDLと同じスキーマ名とオブジェクト名でターゲットに適用されます。

OTHERスコープの例は、データ・ファイル名に対して操作を実行するDDLなど、システム固有の参照を行うDDL操作です。

OTHERスコープのその他の例は、次のとおりです。

CREATE USER joe IDENTIFIED by joe;
CREATE ROLE ggs_gguser_role IDENTIFIED GLOBALLY;
ALTER TABLESPACE gg_user TABLESPACE GROUP gg_grp_user;

「DDL内の修飾されていないオブジェクト名の正しい識別」を参照してください。