ヘッダーをスキップ
Oracle® Database Express Edition 2日で開発者ガイド
11g リリース2 (11.2)
B66463-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 Oracle Database Express Editionアプリケーションのデプロイ

この章の内容は次のとおりです。

環境のデプロイメントについて

デプロイメントとは、他のユーザーが実行可能な1つ以上の環境に、アプリケーションをインストールすることです。

アプリケーションを開発するためのスキーマを開発環境と呼びます。(サンプル・アプリケーションの開発環境は、サンプル・スキーマHRです。)これとは別の、アプリケーションをデプロイするための環境は、デプロイメント環境と呼びます。これらの環境が組織内に存在することもありますが、ない場合は作成できます。

第一のデプロイメント環境はテスト環境です。テスト環境では、アプリケーションの機能を十分にテストし、正しくパッケージされているか確認し、本番環境にデプロイする前に問題を修正します。

アプリケーションは本番環境へのデプロイ前後に、教育環境にもデプロイすることができます。教育環境は、他の環境に影響を及ぼさずにアプリケーションの実行方法を練習する場をユーザーに提供します。

インストール・スクリプト・ファイルについて

アプリケーションをデプロイするには、1つ以上のインストール・スクリプト・ファイルを実行します。インストール・スクリプト・ファイルがない場合は、SQL Developerまたは任意のテキスト・エディタで作成できます。

インストール・スクリプト・ファイルは、インストール・スクリプトを含む実行可能ファイル(.sqlファイル)です。インストール・スクリプトは、DDL文と(オプションで)INSERT文で構成されています。インストール・スクリプト・ファイルを実行すると、DDL文によりデプロイメント環境にアプリケーションのスキーマ・オブジェクトが作成され、INSERT文により開発環境の表(ソース表)からデプロイメント環境の対応する表(新しい表)にデータが挿入されます。

トピック:

DDL文とスキーマ・オブジェクトの依存性について

インストール・スクリプト・ファイルを実行すると、DDL文によりデプロイメント環境にアプリケーションのスキーマ・オブジェクトが作成されます。インストール・スクリプト・ファイルを正しく作成し、複数のインストール・スクリプト・ファイルを適切な順序で実行するには、アプリケーションのスキーマ・オブジェクト間の依存性を理解する必要があります。

オブジェクトAの定義でオブジェクトBを参照している場合、AはBに依存しています。そのため、Aを作成する前に、Bを作成する必要があります。これを行わないと、オブジェクト・タイプによって、Bを作成する文が失敗したり、Bが無効な状態で作成されます。

通常は、デプロイメント環境にスキーマ・オブジェクトとデータを次の順序でインストールします。

  1. パッケージの仕様部

  2. 適切な順序の表(制約および索引を持つ表)

  3. 順序(通常、トリガーとして使用)

  4. トリガー

  5. シノニム

  6. ビュー(ファンクション、プロシージャまたはシノニムを参照する場合あり)

  7. パッケージ本体

  8. データ

ただし複雑なアプリケーションの場合は、オブジェクトを作成する順序が単純なことはほとんどありません。通常は、データベース設計者に相談するか、設計のダイアグラムを考慮する必要があります。


参照:


INSERT文と制約について

INSERT文の含まれているインストール・スクリプト・ファイルを実行すると、INSERT文により、ソース表から対応する新しい表へデータが挿入されます。アプリケーションのソース表ごとに、新しい表へデータを挿入するときに違反となる可能性のある制約がないか確認する必要があります。そのような制約がある場合は、まずその制約を無効にし、データを挿入してから、制約を再度有効にする必要があります。データ・アイテムが制約に違反している場合、そのデータ・アイテムを修正するまで制約を再度有効にすることはできません。

参照データを正しい順序で挿入するだけならば、制約には違反しません。そのため、制約を無効にしておく必要はありません。

外部のソース(ファイル、スプレッドシート、以前のアプリケーションなど)や、依存データを多く含む大量の表からデータを挿入する場合は、データを挿入する前に制約を無効にしてください。

制約を無効にし、再度有効にするには、次の方法があります。

  • SQL Developerを使用して、制約を1つずつ無効にし、再度有効にします。

  • インストール・スクリプト・ファイルを編集し、各制約を無効にし、再度有効にするSQL文を追加します。

  • 各制約を無効にし、再度有効にするSQL文を含んだSQLスクリプトを作成します。

  • Oracle Database Express Edition (Oracle Database XE)データ・ディクショナリで制約を検索して、各制約を無効化および有効化するSQL文を使用してSQLスクリプトを作成します。

    EVALUATIONSPERFORMANCE_PARTSおよびSCORES表で使用される制約を検索および有効化するには、「SQLワークシート」ウィンドウに次の文を入力します。

    SELECT 'ALTER TABLE '|| TABLE_NAME || ' DISABLE CONSTRAINT '|| 
      CONSTRAINT_NAME ||';'
      FROM user_constraints
     WHERE table_name IN ('EVALUATIONS','PERFORMANCE_PARTS','SCORES');
     
    SELECT 'ALTER TABLE '|| TABLE_NAME || ' ENABLE CONSTRAINT '|| 
      CONSTRAINT_NAME ||';'
      FROM user_constraints
     WHERE table_name IN ('EVALUATIONS','PERFORMANCE_PARTS','SCORES');
    

インストール・スクリプト・ファイルの作成

このトピックでは、SQL Developerを使用してインストール・スクリプト・ファイルを作成する方法、順序とトリガーを作成するインストール・スクリプト・ファイルを編集するタイミングと方法、およびサンプル・アプリケーションのスキーマ・オブジェクトとデータのためのインストール・スクリプト・ファイルを作成する方法を説明します。

このトピックのチュートリアルでは、このマニュアルの手順によりサンプル・スキーマHRにオブジェクトが作成済であることを前提とし、別の標準のHRスキーマにサンプル・アプリケーションをデプロイすると想定します。


注意:

このマニュアルのチュートリアルを行うには、ユーザーHRとして、SQL DeveloperからOracle Database XEに接続している必要があります。

トピック:

SQL Developerを使用したインストール・スクリプト・ファイルの作成

SQL Developerでインストール・スクリプト・ファイルを作成するには、データベース・エクスポート・ツールを使用します。インストール・スクリプト・ファイルの名前と、エクスポートするオブジェクトとデータを指定すると、SQL Developerではオブジェクトを作成するDDL文と、データを新しい表に挿入するINSERT文が生成され、インストール・スクリプト・ファイルにこれらの文が書き込まれます。


注意:

次の手順では、すべてのフィールドとオプションが表示されるように、SQL Developerウィンドウを拡大する必要のある場合があります。

データベース・エクスポート・ツールでインストール・スクリプト・ファイルを作成するには、次の手順を実行します。

  1. インストール・スクリプト・ファイル用のディレクトリを作成していない場合は、Oracle Database XEインストール・ディレクトリとは別に作成します(C:\my_exportsなど)。

  2. SQL Developerウィンドウで「ツール」メニューをクリックします。

    メニューが表示されます。

  3. メニューから「データベース・エクスポート」を選択します。

    「ソース/宛先」ウィンドウが開きます。

  4. 「ソース/宛先」ウィンドウで、次の手順を実行します。

    1. 「接続」フィールドで、開発環境への接続をメニューから選択します。

    2. 必要な「DDLのエクスポート」オプションを選択します(不要なオプションは選択を解除します)。


      注意:

      「終了文字」の選択を解除しないでください。インストール・スクリプト・ファイルが失敗します。

      「DDLのエクスポート」オプションの詳細は、『Oracle Database SQL Developerユーザーズ・ガイド』を参照してください。

    3. インストール・スクリプトによってデータをエクスポートしない場合、「データのエクスポート」の選択を解除します。

    4. 「別名保存」フィールドでデフォルトの「単一ファイル」を受け入れ、インストール・スクリプト・ファイルのフルパス名(C:\my_exports\hr_export.sqlなど)を入力します。

      ファイル名の末尾は.sqlである必要があります。

    5. 「次」をクリックします。

      「エクスポートするタイプ」ウィンドウが表示され、エクスポート可能なオブジェクトのタイプがリストされます。各オブジェクト・タイプの左側にチェック・ボックスがあります。デフォルトでは、すべてのチェック・ボックスが選択されています。

  5. 「エクスポートするタイプ」ウィンドウで、次の手順を実行します。

    1. エクスポートしない型のチェック・ボックスを選択解除します。

      「すべて設定」を選択または選択解除すると、すべてのチェック・ボックスが選択または選択解除されます。

    2. 「次」をクリックします。

      「オブジェクトの指定」ウィンドウが表示されます。

  6. 「オブジェクトの指定」ウィンドウで、次の手順を実行します。

    1. 「詳細」をクリックします。

      「スキーマ」および「タイプ」を含めた、他のフィールドが表示されます。

    2. 「スキーマ」フィールドで、スキーマをメニューから選択します。

    3. 「タイプ」フィールドで、メニューから「すべてのオブジェクト」または特定のオブジェクト・タイプ(「TABLE」など)のいずれかを選択します。

    4. 「参照」をクリックします。

      左側のフレームにオブジェクトのリストが表示されます。「タイプ」フィールドの値が「すべてのオブジェクト」の場合、リストには選択したスキーマのすべてのオブジェクトが含まれます。「タイプ」フィールドの値が特定のオブジェクト・タイプの場合、リストには選択したスキーマのそのタイプのすべてのオブジェクトが含まれます。

    5. エクスポートするオブジェクトを、左のフレームから右のフレームに移動します。

      すべてのオブジェクトを移動するには、「>>」をクリックします。(すべてのオブジェクトを元に戻すには、「<<」をクリックします。)

      選択したオブジェクトを移動するには、オブジェクトを選択して「>」をクリックします。(選択したオブジェクトを元に戻すには、オブジェクトを選択して「<」をクリックします。)

    6. (オプション)他のオブジェクト・タイプについて、手順3から5を繰り返します。

    7. 「次」をクリックします。

      「ソース/宛先」ウィンドウで「データのエクスポート」の選択を解除した場合、「エクスポートのサマリー」ウィンドウが表示されるので、手順3に進みます。

      「ソース/宛先」ウィンドウで「データのエクスポート」の選択を解除しなかった場合、「データの指定」ウィンドウが表示されます。下部フレームには、「オブジェクトの指定」ウィンドウで指定したオブジェクトがリスト表示されます。

  7. 「データの指定」ウィンドウで、次の手順を実行します。

    1. データをエクスポートしないオブジェクトを、下部フレームから上部フレームに移動します。

      すべてのオブジェクトを移動するには、上向きの二重矢印アイコンをクリックします。(すべてのオブジェクトを元に戻すには、下向きの二重矢印アイコンをクリックします。)

      選択したオブジェクトを移動するには、オブジェクトを選択して上向きの一重矢印アイコンをクリックします。

    2. 「次」をクリックします。

      「エクスポートのサマリー」ウィンドウが表示されます。

  8. 「エクスポートのサマリー」ウィンドウで、「終了」をクリックします。

    エクスポート中であることを示す「エクスポート中」ウィンドウが開きます。エクスポートが完了すると「エクスポート中」ウィンドウが閉じ、「ソース/宛先」ウィンドウで指定したインストール・スクリプト・ファイルの内容がSQLワークシートに表示されます。

  9. インストール・スクリプト・ファイルについて、次を確認します。

    • 参照されているオブジェクトが、依存オブジェクトの前に作成されること。

    • データを挿入する前に、挿入先の表が作成されること。

    必要に応じて、SQLワークシートまたはテキスト・エディタでファイルを編集します。


参照:


順序を作成するインストール・スクリプト・ファイルの編集

順序については、START WITHの値が開発環境における順序の現在の値に関連する順序となっているCREATE SEQUENCE文が、SQL Developerで生成されます。

アプリケーションで一意キーを生成するのに順序を使用しており、ソース表から対応する新しい表へデータを挿入しない場合は、インストール・スクリプト・ファイルのSTART WITHの値を編集することができます。インストール・スクリプト・ファイルは、SQLワークシートまたは任意のテキスト・エディタで編集できます。

トリガーを作成するインストール・スクリプト・ファイルの編集

アプリケーションにおいてソース表にBEFORE INSERT トリガーがあり、ソース表から対応する新しい表にデータを挿入する場合は、新しい表にデータを挿入するインストール・スクリプト・ファイルの各INSERT文の前でトリガーを起動するかどうかを決める必要があります。

たとえばサンプル・アプリケーションでは、EVALUATIONS表へ行が挿入される前にNEW_EVALUATION_TRIGGERが起動され、EVALUATIONS_SEQを使用してその行の主キーに対する一意の番号が生成されます。 INSERT文を起動することにより影響を受ける行ごとに1度ずつ、このトリガーが起動されます。

ソースのEVALUATIONS表は主キーとともに移入されています。インストール・スクリプトで新しいEVALUATIONS表に主キー値を設定しない場合は、インストール・スクリプト・ファイルのCREATE TRIGGER文を太字部分のように編集する必要があります。

CREATE OR REPLACE
TRIGGER NEW_EVALUATION_TRIGGER
BEFORE INSERT ON EVALUATIONS
FOR EACH ROW
BEGIN
  IF :NEW.evaluation_id IS NULL THEN
    :NEW.evaluation_id := evaluations_seq.NEXTVAL
  END IF;
END;

また、順序の現在の値を確認します。値が主キー列の最大値以下の場合は、最大値より大きくします。

インストール・スクリプト・ファイルは、SQLワークシートまたは任意のテキスト・エディタで編集できます。

インストール・スクリプト・ファイルの編集方法は2つあります。

  • ソース・ファイルでトリガーの定義を変更し、インストール・スクリプト・ファイルを再作成します。

    トリガーの変更の詳細は、「トリガーの変更」を参照してください。

  • データのインストール・スクリプト・ファイルを実行する前にトリガーを無効にし、後で再度有効にします。

    トリガーの無効化および有効化の詳細は、「トリガーの無効化および有効化」を参照してください。

チュートリアル: サンプル・アプリケーションのためのインストール・スクリプト・ファイルの作成

このチュートリアルでは、SQL Developerのデータベース・エクスポート・ツールを使用して、サンプル・アプリケーションのためのインストール・スクリプト・ファイルを1つ作成する方法を示します。


注意:

次の手順では、すべてのフィールドとオプションが表示されるように、SQL Developerウィンドウを拡大する必要のある場合があります。

サンプル・アプリケーションのためのインストール・スクリプト・ファイルを作成する手順は、次のとおりです。

  1. インストール・スクリプト・ファイル用のディレクトリを作成していない場合は、Oracle Database XEインストール・ディレクトリとは別に作成します(C:\my_exportsなど)。

  2. SQL Developerウィンドウで「ツール」メニューをクリックします。

    メニューが表示されます。

  3. メニューから「データベース・エクスポート」を選択します。

    「ソース/宛先」ウィンドウが開きます。

  4. 「ソース/宛先」ウィンドウで、次の手順を実行します。

    1. 「接続」フィールドで、「hr_conn」をメニューから選択します。

    2. デフォルトの「DDLのエクスポート」オプションを使用します。

    3. デフォルトの「データのエクスポート」オプションを使用します(選択済)。

    4. 「別名保存」フィールドでデフォルトの「単一ファイル」を受け入れ、インストール・スクリプト・ファイルのフルパス名C:\my_exports\hr_export.sqlを入力します。

    5. 「次」をクリックします。

      「エクスポートするタイプ」ウィンドウが表示されます。すべてのタイプが選択されています。

  5. 「エクスポートするタイプ」ウィンドウで、次の手順を実行します。

    1. サンプル・アプリケーションが使用するタイプを除き、すべてのタイプのチェック・ボックスの選択を解除します。サンプル・アプリケーションで使用するタイプは、「表」、「ビュー」、「索引」、「トリガー」、「制約」、「順序」「シノニム」、「パッケージ仕様部」および「パッケージ本体」です。

    2. 「次」をクリックします。

      「オブジェクトの指定」ウィンドウが表示されます。

  6. 「オブジェクトの指定」ウィンドウで、次の手順を実行します。

    1. 「詳細」をクリックします。

      「スキーマ」および「タイプ」を含めた、他のフィールドが表示されます。

    2. 「スキーマ」フィールドで、「HR」をメニューから選択します。

    3. 「タイプ」フィールドで、「TABLE」をメニューから選択します。

    4. 「参照」をクリックします。

      HRスキーマ内の表の名前が左のフレームに表示されます。

    5. 左のフレームで、サンプル・アプリケーション用に作成した表の名前、EVALUATIONSEVALUATIONS_LOGPERFORMANCE_PARTSおよびSCORESを選択します。

    6. 「>>」をクリックします。

      選択した表が右のフレームに移動します。

    7. 「タイプ」フィールドで、「SEQUENCE」をメニューから選択します。

    8. 「参照」をクリックします。

      HRスキーマ内の順序の名前が左のフレームに表示されます。

    9. 左のフレームで、サンプル・アプリケーション用に作成した順序の名前、EVALUATIONS_SEQを選択します。

    10. 「>>」をクリックします。

      選択した順序が右のフレームに移動します。

    11. 「タイプ」フィールドで、「TRIGGER」をメニューから選択します。

    12. 「参照」をクリックします。

      HRスキーマ内のトリガーの名前が左のフレームに表示されます。

    13. 左のフレームで、サンプル・アプリケーション用に作成したトリガーの名前、EVAL_CHANGE_TRIGGERおよびNEW_EVALUATION_TRIGGERを選択します。

    14. 「>>」をクリックします。

      選択したトリガーが右のフレームに移動します。

    15. 「タイプ」フィールドで、「PACKAGE」をメニューから選択します。

    16. 「参照」をクリックします。

      HRスキーマ内のパッケージの名前が左のフレームに表示されます。

    17. 左のフレームで、サンプル・アプリケーション用に作成したパッケージの名前、EMP_EVALを選択します。

    18. 「>>」をクリックします。

      選択したパッケージが右のフレームに移動し、HR.EMP_EVALと表示されます。

    19. 「タイプ」フィールドで、「PACKAGE BODY」をメニューから選択します。

    20. 「参照」をクリックします。

      HRスキーマ内のパッケージ本体の名前が左のフレームに表示されます。

    21. 左のフレームで、「EMP_EVAL Body」を選択します。

    22. 「>>」をクリックします。

      選択したパッケージ本体が右のフレームに移動し、HR.EMP_EVALと表示されます。

    23. 「タイプ」フィールドで、「SYNONYM」をメニューから選択します。

    24. 「参照」をクリックします。

      HRスキーマ内のシノニムの名前が左のフレームに表示されます。

    25. 左のフレームで、サンプル・アプリケーション用に作成したシノニムの名前、EMPを選択します。

    26. 「>>」をクリックします。

      選択したシノニムが右のフレームに移動します。

    27. 「タイプ」フィールドで、「VIEW」をメニューから選択します。

    28. 「参照」をクリックします。

      HRスキーマ内のビューの名前が左のフレームに表示されます。

    29. 左のフレームで、サンプル・アプリケーション用に作成したビューの名前、EMP_LOCATIONSを選択します。

    30. 「>>」をクリックします。

      選択したビューが右のフレームに移動します。

    31. 「次」をクリックします。

      「データの指定」ウィンドウが表示されます。下部フレームには、「オブジェクトの指定」ウィンドウで指定したオブジェクトがリスト表示されます。

  7. 「データの指定」ウィンドウで、次の手順を実行します。

    1. 下部フレームで、PERFORMANCE_PARTS (データを追加した唯一のサンプル・アプリケーション表)以外のすべてのオブジェクトを選択します。

    2. 上向きの矢印アイコンをクリックします。

      選択したオブジェクトが下部フレームから上部フレームに移動します。これらのデータはエクスポートされません。

    3. 「次」をクリックします。

      「エクスポートのサマリー」ウィンドウが表示されます。

  8. 「エクスポートのサマリー」ウィンドウで、「終了」をクリックします。

    エクスポート中であることを示す「エクスポート中」ウィンドウが開きます。エクスポートが完了すると「エクスポート中」ウィンドウは閉じて、インストール・スクリプト・ファイルC:\my_exports\hr_export.sqlの内容がSQLワークシートに表示されます。

  9. インストール・スクリプト・ファイルについて、次を確認します。

    • 参照されているオブジェクトが、依存オブジェクトの前に作成されること。

    • データを挿入する前に、挿入先の表が作成されること。

    必要に応じて、SQLワークシートまたはテキスト・エディタでファイルを編集します。

サンプル・アプリケーションのインストール


注意:

デプロイメント環境は開発環境と異なる必要があり、別の標準のHRスキーマであることを前提とします。

サンプル・アプリケーション用に1つのインストール・スクリプト・ファイルを作成した場合、サンプル・アプリケーションをインストールするには、デプロイメント環境にユーザーHRとして接続し、その後、インストール・スクリプトをSQL*PlusまたはSQL DeveloperのSQLワークシートで実行します。インストール・スクリプトを実行するコマンドの構文は次のとおりです。

@full_path_name_of_installation_script_file

インストール・スクリプト・ファイルをSQL Developerで実行する手順は、次のとおりです。

  1. 必要であれば、デプロイメント環境への接続を作成します。

    「接続名」には、開発環境への接続の名前以外の名前を入力します。

  2. デプロイメント環境で、ユーザーHRとしてOracle Database XEに接続します。

    「接続名」には、デプロイメント環境への接続の名前を入力します。

    新しいペインが表示されます。タブにはデプロイメント環境への接続の名前が表示されます。ペインには、「SQLワークシート」および「クエリー・ビルダー」の2つのサブペインが表示されます。

  3. 「SQLワークシート」ペインに、インストール・スクリプトを実行するためのコマンドを入力します。

    @full_path_name_of_installation_script_file
    

    次に例を示します。

    @C:\my_exports\hr_export.sql
    
  4. 「スクリプトの実行」アイコンをクリックします。

    スクリプトが実行されます。その出力は、「SQLワークシート」ペインの下の「スクリプト出力」ペインに表示されます。

    「接続」ペインでは、デプロイメント環境への接続を展開し、次にサンプル・アプリケーションが使用する各オブジェクトのタイプを展開すると、サンプル・アプリケーションのオブジェクトが表示されます。


参照:

  • SQL Developerにおけるスクリプトの実行の詳細は、『Oracle Database SQL Developerユーザーズ・ガイド』を参照してください。

  • SQL*Plusにおけるスクリプトの使用の詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。


インストールの有効性のチェック

デプロイメント環境にアプリケーションをインストールした後、SQL Developerで次の方法により有効性をチェックできます。


参照:

SQL Developerレポートの詳細は、『Oracle Database SQL Developerユーザーズ・ガイド』を参照してください。

インストール・スクリプト・ファイルのアーカイブ

アプリケーションのインストールが有効であることを確認した後で、ソース・コード制御システムでインストール・スクリプト・ファイルをアーカイブすることができます。アーカイブする前に、各ファイルに作成日と目的を示すコメントを追加します。同じアプリケーションを他の環境にデプロイする必要が生じた場合に、このアーカイブ・ファイルを使用できます。


参照:

データベース間におけるデータとメタデータの高速移動を可能にするOracle Data Pumpの詳細は、『Oracle Databaseユーティリティ』を参照してください。