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

前
次

13.6 DDL内の修飾されていないオブジェクト名の正しい識別

Extractでは、DDL操作の実行時に有効な現在のスキーマ(セッション・スキーマとも呼ばれる)をキャプチャします。ソースがマルチテナント・コンテナ・データベースの場合、現在のコンテナもキャプチャされます。コンテナとスキーマは、DDL内の修飾されていないオブジェクト名の解決に使用されます。

次の例で考えてみます。

CONNECT SCOTT/TIGER
CREATE TABLE TAB1 (X NUMBER);
CREATE TABLE SRC1.TAB2(X NUMBER) AS SELECT * FROM TAB1;

両方のDDL文の修飾されていない表TAB1は、DDLの実行時に有効な現在のスキーマSCOTTに基づいてSCOTT.TAB1と解決されます。

現在のスキーマを設定する方法には、次の例に示すようにセッションのcurrent_schemaを設定するという別の方法もあります。

CONNECT SCOTT/TIGER
ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE TAB1 (X NUMBER);
CREATE TABLE SRC1.TAB2(X NUMBER) AS SELECT * FROM TAB1;

両方のDDL文の修飾されていない表TAB1は、DDLの実行時に有効な現在のスキーマSRCに基づいてSRC.TAB1と解決されます。

クラシックと統合の両方のキャプチャ・モードで、ExtractはDDLの実行時に有効な現在のスキーマをキャプチャし、現在のスキーマを使用して、修飾されていないオブジェクト名(ある場合)を解決します。その結果、Replicatに対して指定されるMAP文は、修飾されていないオブジェクト名を使用するDDLについて正しく機能します。

ターゲットでDDLが成功するために必要な場合、ソース・セッション・スキーマを別のターゲット・セッション・スキーマにマップすることもできます。このマッピングはグローバルで、同じスキーマ名を含む他のマッピングをオーバーライドします。セッション・スキーマをマップするには、MAPSESSIONSCHEMAオプションを指定してDDLOPTIONSパラメータを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

デフォルトまたはマップされたセッション・スキーマのマッピングが失敗した場合、次のDDLERRORパラメータ文を使用してエラーを処理することができます。エラー1435は、スキーマが存在しないことを示します。

DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION