ヘッダーをスキップ
Oracle® Application Express管理ガイド
リリース4.0
B61342-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

スキーマの管理

このセクションでは、Oracle Application Expressインスタンス内のスキーマを管理する方法について説明します。

トピック:

Oracle Application Expressエンジン・スキーマの判別

スキーマはデータベース・オブジェクトの論理的コンテナです。インスタンス管理者はApplication Expressエンジン・スキーマ内で特定のアクションを実行する必要がある場合があります。たとえば、インスタンス管理者がOracleデフォルト・スキーマを割り当てられるようにするには、データベース管理者(DBA)がApplication Expressエンジン内でAPEX_SITE_ADMIN.UNRESTRICT_SCHEMAプロシージャを実行して権限を明示的に付与する必要があります。


参照:

APEX_SITE_ADMIN.UNRESTRICT_SCHEMAプロシージャについては、「Oracleデフォルト・スキーマの制限の理解」を参照してください。

Oracle Application Expressインスタンスで現在使用されているApplication Expressエンジン・スキーマを判別するには、次のステップを実行します。

  1. SQL*Plusを使用してデータベースに接続します。

  2. DBA権限(SYSTEMなど)を使用して、スキーマ内で次の問合せを実行します。

    SELECT DISTINCT TABLE_OWNER FROM all_synonyms
    WHERE SYNONYM_NAME = 'WWV_FLOW' and OWNER = 'PUBLIC'
    

Oracleデフォルト・スキーマの制限の理解

インスタンス管理者は、Oracle Application Expressのインストール時に、Oracleデフォルト・スキーマを作業領域に割り当てることができません。デフォルト・スキーマ(SYSSYSTEMRMANなど)は、様々な製品機能および内部使用のために予約されています。デフォルト・スキーマへのアクセスは非常に強力な権限となる場合があります。たとえば、デフォルト・スキーマSYSTEMへのアクセスが可能な作業領域では、SYSTEMユーザーを解析対象とするアプリケーションを実行できます。

インスタンス管理者がほとんどのOracleデフォルト・スキーマを作業領域に割り当てられるようにするには、データベース管理者(DBA)がSQL*Plusを使用してAPEX_ SITE_ADMIN_PRIVSパッケージでプロシージャを実行する権限を明示的に付与する必要があります。ただし、Oracle Application Expressリリース3.1以上では、SYSSYSTEMスキーマが、作業領域で解析スキーマとして使用されなくなる場合があります。


注意:

APEX_SITE_ADMIN_PRIVSパッケージのプロシージャへの引数として渡される、すべてのスキーマおよび作業領域の名前は、コール元で提供されている名前と同じものが使用されます。

たとえば、p_schema =>'system'のような引数の値を渡す場合、小文字のスキーマ名'system'が記録され、参照されます。この例の場合、共通スキーマ名である(大文字の)SYSTEMを参照する際に、予期しない結果が返される可能性があります。


トピック:

Oracleデフォルト・スキーマの割当て権限の付与

DBAは、SQL*Plusを使用してApplication Expressエンジン・スキーマ内でAPEX_SITE_ADMIN_PRIVS.UNRESTRICT_SCHEMAプロシージャを実行することで、Oracleスキーマを作業領域に割り当てる権限をインスタンス管理者に付与できます。例を次に示します。

EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.UNRESTRICT_SCHEMA(p_schema => 'RMAN');
COMMIT;

この例は、インスタンス管理者がRMANスキーマを任意の業領域に割り当てられるようにします。

Oracleデフォルト・スキーマの割当て権限の取消し

DBAは、SQL*Plusを使用してApplication Expressエンジン・スキーマ内でAPEX_SITE_ADMIN_PRIVS.RESTRICT_SCHEMAプロシージャを実行することで、この権限を取り消せます。例を次に示します。

EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.RESTRICT_SCHEMA(p_schema => 'RMAN');
COMMIT;

この例では、インスタンス管理者は作業領域にRMANスキーマを割り当てることができなくなります。ただし、すでにRMANスキーマに割当て済の作業領域によるRMANスキーマは、そのまま使用できます。

制限付きスキーマでの作業

スキーマがRESTRICT_SCHEMAプロシージャを使用して制限されている場合、DBAはAPEX_SITE_ADMIN_PRIVS.CREATE_EXCEPTIONプロシージャを実行することで、特定の作業領域を例外として指定できます。次に例を示します。

EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.CREATE_EXCEPTION(p_schema => 'RMAN', p_workspace=> 'DBA_WORKSPACE');
EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.CREATE_EXCEPTION(p_schema => 'RMAN', p_workspace  => 'AUDITOR_WORKSPACE');
COMMIT;

この例では、インスタンス管理者はAUDITOR_WORKSPACEという名前の作業領域をRMANスキーマに割り当てることができなくなります。ただし、この制限はREMOVE_EXCEPTIONプロシージャが実行された後に処理された作業領域の割当てリクエストに対してのみ適用されます。AUDITOR_WORKSPACEがすでにRMANスキーマに割り当てられていた場合、この方法では作業領域によるスキーマの使用続行を阻止できません。

スキーマの作業領域の例外の削除

DBAは、SQL*Plusを使用してApplication Expressエンジン・スキーマ内でAPEX_SITE_ADMIN_PRIVS.REMOVE_WORKSPACE_EXCEPTIONSプロシージャを実行することで、すべての作業領域の例外を取り消せます。例を次に示します。

EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.REMOVE_WORKSPACE_EXCEPTIONS(p_schema => 'RMAN');
COMMIT;

この例では、すでにRMANスキーマが制限されているが、1つ以上の例外が事前に作成済の場合に、インスタンス管理者はあらゆる作業領域をRMANスキーマに割り当てることができなくなります。

作業領域のスキーマの例外の削除

DBAは、SQL*Plusを使用してApplication Expressエンジン・スキーマ内でREMOVE_SCHEMA_EXCEPTIONSプロシージャを実行することで、すべてのスキーマの例外を取り消せます。例を次に示します。

EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.REMOVE_WORKSPACE_EXCEPTIONS(p_workspace => 'AUDITOR_WORKSPACE');
COMMIT;

この例では、AUDITOR_WORKSPACEという名前の作業領域に対して、制限付きスキーマに関連する例外が事前に作成されている場合に、インスタンス管理者はあらゆる制限付きスキーマをこの作業領域に割り当てることができなくなります。

権限ステータスの判別

DBAは、SQL*Plusを使用してAPEX_SITE_ADMIN_PRIVS.REPORTプロシージャを実行することで、権限の現在のステータスを判別できます。例を次に示します。

SET SERVEROUTPUT ON
EXEC APEX_040000.APEX_SITE_ADMIN_PRIVS.REPORT;

この例では、スキーマおよび作業領域の制限を定義している表を出力するための問合せテキストが表示されます。

SELECT a.schema "SCHEMA",b.workspace_name "WORKSPACE" FROM WWV_FLOW_RESTRICTED_SCHEMAS a, WWV_FLOW_RSCHEMA_EXCEPTIONS b WHERE b.schema_id (+)= a.id;

この問合せの出力結果を確認する際は、次の点に注意してください。

  • SCHEMA列のスキーマ名は、そのスキーマが制限されていることを表します。

  • リストにないスキーマは制限されておらず、別の作業領域に割り当てられている可能性があります。

  • スキーマ名の隣の作業領域名は、この名前の作業領域に関連付けられたスキーマに例外が存在していることを意味します。

この問合せは、前述のとおりにSQL*Plusで実行することも、変更して別の形式で出力することも可能です。