プライマリ・コンテンツに移動
Oracle® Application Express管理ガイド
リリース5.0
E67399-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2.12 スキーマの管理


注意:

管理サービス・アプリケーションの機能は、Oracle Database Cloud Service (Database Schema)では利用できません。

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

2.12.1 Oracle Application Expressエンジン・スキーマの概要。

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


参照:

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

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


参照:

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

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

  1. SQL*Plusを起動して、SYSとしてOracle Application Expressがインストールされているデータベースに接続します。次に例を示します。

    • Windowsの場合:

      SYSTEM_DRIVE:\ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
    • UNIXおよびLinuxの場合:

      $ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
  2. DBA権限(SYSTEMなど)を使用して、スキーマ内で次の問合せを実行します。

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

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

このセクションでは、権限を付与する方法と取り消す方法について説明します。

2.12.3.1 ワークスペースへのOracleデフォルト・スキーマの割当てについて

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

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


注意:

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

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


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

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

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

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

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

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

EXEC APEX_050000.APEX_INSTANCE_ADMIN.RESTRICT_SCHEMA(p_schema => 'RMAN');
COMMIT;

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

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

このセクションでは、制限付きスキーマの扱い方について説明します。

2.12.3.4.1 特定のワークスペースを例外として指定

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

EXEC APEX_050000.APEX_INSTANCE_ADMIN.CREATE_SCHEMA_EXCEPTION(p_schema => 'RMAN', p_workspace=> 'DBA_WORKSPACE');
EXEC APEX_050000.APEX_INSTANCE_ADMIN.CREATE_SCHEMA_EXCEPTION(p_schema => 'RMAN', p_workspace  => 'AUDITOR_WORKSPACE');
COMMIT;

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

2.12.3.4.2 スキーマのワークスペースの例外の削除

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

EXEC APEX_050000.APEX_INSTANCE_ADMIN.REMOVE_SCHEMA_EXCEPTIONS(p_schema => 'RMAN');
COMMIT;

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

2.12.3.4.3 ワークスペースのスキーマの例外の削除

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

EXEC APEX_050000.APEX_INSTANCE_ADMIN.REMOVE_WORKSPACE_EXCEPTIONS(p_workspace => 'AUDITOR_WORKSPACE');
COMMIT;

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

2.12.3.5 権限ステータスの判別

DBAは、SQL*Plusを使用してutilitiesディレクトリでスクリプトreport_instance_configuration.sqlを実行することで、権限の現在のステータスを判定できます。次に例を示します。

utilitiesディレクトリでスクリプトreport_instance_configuration.sqlを実行するには、次の手順を実行します。

  1. utilitiesディレクトリに移動します。

    $ cd utilities
    
  2. SQL*Plusに接続し、SYSとしてOracle Application Expressがインストールされているデータベースに接続します。次に例を示します。

    • Windowsの場合:

      SYSTEM_DRIVE:\ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
    • UNIXおよびLinuxの場合:

      $ sqlplus /nolog
      SQL> CONNECT SYS as SYSDBA
      Enter password: SYS_password
  3. 次の文を実行します。

    SQL> @report_instance_configuration.sql
    

生成されたレポートに、制限付きスキーマやスキーマ例外など、Application Expressのインスタンスに関する一般情報が表示されます。