3.13.3 ワークスペースの削除

ワークスペースを削除しても、関連付けられているデータベース・オブジェクトは削除されません。関連付けられているスキーマを削除する場合、データベース管理者(DBA)は、Oracle Enterprise Manager、SQL*Plusなどの標準的なデータベース管理ツールを使用する必要があります。

3.13.3.1 アクティブではないワークスペースの識別および削除

アクティブではないワークスペースを識別および削除する方法を学習します。

3.13.3.1.1 アクティブではないワークスペースの識別方法

ホスティングされた大規模なOracle Application Expressインスタンスを管理している場合は、アクティブではないワークスペースを手動で削除すると、他のユーザーに対してリソースを開放できます。アクティブではないワークスペースを手動で削除するプロセスは、次のステップで構成されます。

ヒント:

アクティブではないワークスペースを体系的に消去するには、「ワークスペースのパージ」設定を構成する必要があります。アクティブではないワークスペースの消去を参照してください。

3.13.3.1.2 最近の更新をチェックしてアクティブではないワークスペースを識別

ワークスペースがアクティブでないかどうかを判別する場合の最初のステップは、いくつかの基本ルールを確立することです。Application Expressエンジンのカレント・スキーマにあるOracle Application Expressアクティビティ・レコードに基づいてルールを決定する方法が一般的です。

次のDDL(データ定義言語)によって、2004年6月28日以前にリクエストされ、2004年6月10日以降アクティブではないすべてのワークスペースの表が作成されます。この例では、ワークスペースごとにApplication Expressエンジン・スキーマ内の最新の更新に関するキーを確認することで、アクティブでないかどうかが判別されます。

ALTER SESSION SET CURRENT_SCHEMA = APEX_18100;
CREATE TABLE ws_to_purge AS
 SELECT c.security_group_id, c.company_name, c.admin_email, c.request_date,
 SYSDATE last_updated_on, 'Y' ok_to_delete
   FROM wwv_flow_provision_company c
  WHERE
c.request_date <= to_date('20040628','YYYYMMDD') AND
     (  not exists
 (SELECT NULL /* Activity Log */
        FROM wwv_flow_activity_log l
       WHERE l.security_group_id = c.security_group_id
         AND l.time_stamp > to_date('20040610','YYYYMMDD'))
 )
    AND NOT EXISTS
     (SELECT NULL /* workspace applications */
        FROM wwv_flows f
       WHERE f.security_group_id = c.security_group_id
         AND f.last_updated_on > to_date('20040610','YYYYMMDD'))
    AND NOT EXISTS
     (SELECT NULL /* Pages */
        FROM wwv_flow_steps s
       WHERE s.security_group_id = c.security_group_id
         AND s.last_updated_on > to_date('20040610','YYYYMMDD'))
    AND NOT EXISTS
     (SELECT NULL /* Regions */
        FROM wwv_flow_page_plugs p
       WHERE p.security_group_id = c.security_group_id
         AND p.last_updated_on > to_date('20040610','YYYYMMDD'))
    AND NOT EXISTS
     (SELECT NULL /* Items */
        FROM wwv_flow_step_items i
       WHERE i.security_group_id = c.security_group_id
         AND i.last_updated_on > to_date('20040610','YYYYMMDD'))
    AND NOT EXISTS
     (SELECT NULL /* Templates */
        FROM wwv_flow_templates t
       WHERE t.security_group_id = c.security_group_id
         AND t.last_updated_on > to_date('20040610','YYYYMMDD'))
    AND NOT EXISTS
     (SELECT NULL /* Files uploaded */
        FROM wwv_flow_file_objects$ o
       WHERE o.security_group_id = c.security_group_id
         AND o.created_on > to_date('20040610','YYYYMMDD'))
    AND NOT EXISTS
     (SELECT NULL /* SQL Workshop history */
        FROM wwv_flow_sw_sql_cmds s
       WHERE s.security_group_id = c.security_group_id
         AND s.created_on > to_date('20040610','YYYYMMDD'));

3.13.3.1.3 サンプル・アプリケーションのみを持つワークスペースの表示

潜在的にアクティブでないワークスペースを識別するもう1つの方法は、「サンプル・アプリケーションのみを持つワークスペース」レポートを表示することです。

サンプル・アプリケーションのみを含んでいるレポートまたはワークスペースを表示するには、次の手順を実行します。

  1. Oracle Application Express管理サービスにサインインします。
  2. 「ワークスペースの管理」をクリックします。
  3. 「ワークスペース・レポート」で、「サンプル・アプリケーションのみを持つワークスペース」をクリックします。

    サンプル・アプリケーションのみを持つワークスペース・ページが表示されます。

    このページは、対話モード・レポートとして表示されます。レポートをカスタマイズするには、ページ上部にある検索バーを使用します。

3.13.3.1.4 アクティブではないワークスペースに関連付けられているリソースの削除

アクティブではないワークスペースを1つの表で識別した後、それらを削除します。

ノート:

アクティブではないワークスペースに関連付けられているスキーマ、表領域またはデータファイルを削除する前に、それらのリソースが他のワークスペースまたはアプリケーションで使用されていないことを確認してください。

アクティブではないワークスペースに関連付けられているリソースを削除するには、次の手順を実行します。

  1. 識別したアクティブではないワークスペースが含まれている表をwwv_flow_company_schemasに結合して、削除するワークスペースで使用されているスキーマを識別します。
  2. アクティブではないワークスペースによって排他的に使用されているスキーマ、表領域およびデータファイルをデータベースから削除します。次のような問合せを実行して、削除するスキーマを識別できます。
    SELECT s.schema
      FROM ws_to_purge ws,
           wwv_flow_company_schemas s
    WHERE s.security_group_id = ws.security_group_id
       AND ws.ok_to_delete = 'Y';
    

3.13.3.1.5 アクティブではないワークスペースの削除

アクティブではないワークスペースに関連付けられているリソースを削除すると、そのワークスペースを削除できます。アクティブではないワークスペースは、Oracle Application Express管理サービス・アプリケーションを使用して手動で削除できます。また、次のPL/SQLの例に示すように、プログラムによって削除できます。

BEGIN 
     FOR c1 IN (SELECT security_group_id  
                 FROM ws_to_purge
                 WHERE ok_to_delete = 'Y')
     LOOP
         WWV_FLOW_PROVISIONING.TERMINATE_SERVICE_BY_SGID(c1.security_group_id);
     END LOOP;
 END;

3.13.3.2 完全開発環境でのワークスペースの削除

完全開発環境でワークスペースを削除します。

ワークスペースを削除するには、次のようにします。

  1. Oracle Application Express管理サービスにサインインします。
  2. 「ワークスペースの管理」をクリックします。
  3. 「ワークスペース・レポート」で、「既存のワークスペース」をクリックします。

    既存の作業領域ページが表示されます。

  4. 「アクション」列で、「削除」をクリックします。
  5. 「アプリケーションの確認」で、次を行います。
    1. ワークスペース名およびアプリケーションとユーザーの数を確認します。
    2. 「削除を続行するかの確認」を選択します。
    3. 「次」をクリックします。
  6. 表示された情報を確認して、「ワークスペースの削除」をクリックします。

3.13.3.3 ランタイム開発環境でのワークスペースの削除

ランタイム開発環境でワークスペースを削除します。

ランタイム開発環境でワークスペースを削除するには、次の手順を実行します。

  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. 次の文を実行します。
    ALTER SESSION SET CURRENT_SCHEMA = APEX_200200
    
  3. 次の文を実行します。
    BEGIN
    APEX_INSTANCE_ADMIN.REMOVE_WORKSPACE(WORKSPACE_NAME, DROP_USER, DROP_TABLESPACE)
    END;
    

    説明:

    • WORKSPACE_NAMEは、ワークスペースの名前です。

    • DROP_USERは、YまたはNのいずれかです。デフォルトはNです。

    • DROP_TABLESPACEは、YまたはNのいずれかです。デフォルトはNです。