エディションベース再定義の使用

Oracle GoldenGateは、エディションベース再定義(EBR)の使用をサポートしており、アプリケーションのデータベース・コンポーネントの使用中でも、Oracle Databaseでそれらのコンポーネントをアップグレードできるため、ダウンタイムをゼロまたは最小限に抑えることができます。

エディションは、エディション付きオブジェクトが属する非スキーマ・オブジェクトです。エディションは、エディション付きオブジェクトを所有している、またはネームスペースと考えることができます。すべてのデータベースは、ORA$BASEという名前の1つのエディションから始まり、これには、アップグレードされたデータベースが含まれます。データベースには複数のエディションが存在することができますが、それぞれの子は1つのみです。たとえば、edition1、edition2、edition3の3つのエディションを連続して作成した場合、edition1はedition2の親になり、edition2はedition3の親になります。これは、それらを作成するユーザーまたはデータベース・セッションに関係なく、新しいエディションが作成された際に、どのエディションが最新であるかにも関係ありません。エディションを作成すると、その親のすべてのエディション付きオブジェクトを継承します。Oracle GoldenGateでエディションを使用するには、それらを作成する必要があります。

オブジェクトがエディション化可能なタイプの場合、エディション付きとみなされ、EDITIONABLE属性で作成され、スキーマは、そのオブジェクト・タイプのエディション化に有効です。エディション付きオブジェクトを作成、変更または削除すると、それが属するエディションの名前がREDOログに記録されます。コンテナ・データベースでは、エディションはコンテナに属し、各コンテナには、独自のデフォルト・エディションが含まれます。

CREATE | DROP EDITION DDLは、すべてのExtract構成でキャプチャされます。これらはOTHERカテゴリに分類され、EDITIONOBJTYPEオプション値が割り当てられます。OBJTYPEオプションは、次のようなフィルタリングに使用できます。

DDL EXCLUDE OBJTYPE EDITION
DDL EXCLUDE OBJTYPE EDITION OPTYPE CREATE
DDL EXCLUDE OBJTYPE EDITION OPTYPE DROP
DDL EXCLUDE OBJTYPE EDITION OPTYPE DROP ALLOWEMPTYOWNER OBJNAME edition_name

ExtractまたはReplicatからエディションを除外するには、次の構文を使用する必要があります。

EXCLUDE OBJTYPE EDITION, ALLOWEMPTYOWNER OBJNAME edition_name

エディションは、OTHERカテゴリに分類されるため、エディション名でマッピングは実行されません。適用されると、USE権限がReplicatユーザーに自動的に付与されます。Replicatは、元の作成ユーザーがターゲット・データベースに存在する場合、そのユーザーに対してgrant use on edition name with grant optionも実行します。エディションはマップ可能な操作ではないため、所有者は含まれず、このため標準のEXCLUDE文が機能しません。

エディションの作成または変更に使用されるDDLは、実際にはエディションのユーザーを有効にせず、エディションのスキーマを有効にします。DDLをエディション付きオブジェクトに適用するために、Replicatユーザーを有効にする必要はないため、この区別は重要です。ReplicatがCREATE EDITION DDLを適用すると、元のユーザーがターゲット・データベースに存在する場合は、ユーザー作成の元の権限がUSEに付与されます。レプリケートされていないCREATE EDITION文の場合は、USE WITH GRANT OPTIONを発行して、Replicatユーザーに付与する必要があります。

エディション化可能なオブジェクトがエディション付きになるかどうかは、適用されるスキーマによって制御されます。エディション名の属性が証跡ファイルに存在し、空でない場合に、Replicatは、DDLを適用する前に、その現在のセッション・エディションを切り替えます。

コンテナ・データベース環境は、ExtractおよびReplicatの両方でサポートされます。追加の構成は必要ありません。Replicatユーザーのスキーマは、共通ユーザーの場合エディションに対して有効にすることはできません。DDLを他のスキーマのエディション付きオブジェクトに適用するときに、Replicatユーザーのスキーマをエディションに対して有効にする必要はありません。