用途
この文は、既存のエディションの子として新規エディションを作成します。エディションによって、データベース内に同じエディション化可能なオブジェクトを2バージョン以上保持できるようになります。エディションを作成すると、このエディションは、その親エディションのエディション化可能なオブジェクトのすべてを即座に継承します。次のオブジェクト型は、エディション化可能です。
シノニム
ビュー
ファンクション
プロシージャ
パッケージ(仕様部および本体)
タイプ(仕様部および本体)
ライブラリ
トリガー
エディション化可能なオブジェクトは、エディションが有効化されたスキーマ内にある、前述のいずれかのエディション化可能なオブジェクト型です。データベース内にこのような複数バージョンのオブジェクトを含めることができるため、オンラインのアプリケーション・アップグレードが大幅に簡略化されます。
|
注意: 前述のリストにないすべてのデータベース・オブジェクト型は、エディション化可能ではありません。エディション化可能でないオブジェクト型に対する変更内容は、データベース内のすべてのエディションからすぐに参照可能になります。 |
新規作成またはアップグレードされたOracle Databaseにはそれぞれ、ORA$BASEという名前のデフォルトのエディションがあり、それは、CREATE EDITION文により作成される最初のエディションの親として機能します。その後に、ALTER DATABASE DEFAULT EDITION文を使用して、ユーザー定義のエディションをデータベースのデフォルト・エディションとして指定できます。
|
関連項目:
|
前提条件
エディションを作成する場合は、直接またはロールを介して付与されたCREATE ANY EDITIONシステム権限が必要です。エディションを他のエディションの子として作成する場合は、親エディションに対するUSEオブジェクト権限が必要です。
セマンティクス
edition
作成するエディションの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている規則を満たしている必要があります。データベースに対して作成済のエディションを確認する場合は、DBA_OBJECTSまたはALL_OBJECTSデータ・ディクショナリ・ビューのEDITION_NAME列を問い合せます。
エディションを作成すると、作成したエディションに対するWITH GRANT OPTION付きのUSEオブジェクト権限がシステムにより自動的に付与されます。
|
注意: エディションに、ORA、ORACLE、SYS、DBAおよびDBMSの接頭辞を含む名前を付けないことをお薦めします。これらの接頭辞は内部使用のために確保されているためです。 |
AS CHILD OF句
この句を使用した場合、新規エディションはparent_editionの子として作成されます。この句を指定しない場合、新規エディションはリーフ・エディションの子として作成されます。新規エディションは、作成時に、その親エディションからエディショニングされたすべてのオブジェクトを継承します。
エディションの制限事項: エディションは、1つの子エディションのみ持つことができます。parent_editionにすでに子エディションを持つエディションを指定した場合、エラーが戻されます。
例
次の簡単な例は、エディションの作成および使用のための構文を示すためのものです。エディションの現実的な使用例については、『Oracle Database開発ガイド』を参照してください。
次の文で、ユーザーHRには、エディションを作成および使用するために必要な権限が付与されます。
GRANT CREATE ANY EDITION, DROP ANY EDITION to HR; Grant succeeded. ALTER USER hr ENABLE EDITIONS; User altered.
HRは、テストの目的で新規のエディションTEST_EDを作成します。
CREATE EDITION test_ed;
次に、HRは、最初に現行のエディションがデフォルト・エディションであることを確認し、テストの目的で、デフォルト・エディションORA$BASE内にエディショニング・ビューed_viewを作成します。
SELECT SYS_CONTEXT('userenv', 'current_edition_name') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
ORA$BASE
1 row selected.
CREATE EDITIONING VIEW e_view AS
SELECT last_name, first_name, email FROM employees;
View created.
DESCRIBE e_view
Name Null? Type
----------------------------------------- -------- ----------------------------
LAST_NAME NOT NULL VARCHAR2(25)
FIRST_NAME VARCHAR2(20)
EMAIL NOT NULL VARCHAR2(25)
その後、HRがTEST_EDエディションを使用して異なる書式でビューを再作成すると、ビューはTEST_EDエディション内で実体化されます。
ALTER SESSION SET EDITION = TEST_ED; Session altered. CREATE OR REPLACE EDITIONING VIEW e_view AS SELECT last_name, first_name, email, salary FROM employees; View created.
TEST_EDエディション内のビューには、次の追加の列が含まれます。
DESCRIBE e_view Name Null? Type ----------------------------------------- -------- ---------------------------- LAST_NAME NOT NULL VARCHAR2(25) FIRST_NAME VARCHAR2(20) EMAIL NOT NULL VARCHAR2(25) SALARY NUMBER(8,2)
ORA$BASEエディション内のビューは、テスト環境から孤立したままです。
ALTER SESSION SET EDITION = ora$base; Session altered. DESCRIBE e_view; Name Null? Type ----------------------------------------- -------- ---------------------------- LAST_NAME NOT NULL VARCHAR2(25) FIRST_NAME VARCHAR2(20) EMAIL NOT NULL VARCHAR2(25)
テスト環境からビューを削除しても、ビューはORA$BASEエディション内に残ります。
ALTER SESSION SET EDITION = TEST_ED; Session altered. DROP VIEW e_view; View dropped. ALTER SESSION SET EDITION = ORA$BASE; Session altered. DESCRIBE e_view; Name Null? Type ----------------------------------------- -------- ---------------------------- LAST_NAME NOT NULL VARCHAR2(25) FIRST_NAME VARCHAR2(20) EMAIL NOT NULL VARCHAR2(25)
TEST_EDエディションを必要とするアップグレードのテストが完了したら、エディションを削除できます。
DROP EDITION TEST_ED;