この章の内容は次のとおりです。
デプロイメントとは、他のユーザーが実行可能な1つ以上の環境に、アプリケーションをインストールすることです。
アプリケーションを開発するためのスキーマを開発環境と呼びます。(サンプル・アプリケーションの開発環境は、サンプル・スキーマHR
です。)これとは別の、アプリケーションをデプロイするための環境は、デプロイメント環境と呼びます。これらの環境が組織内に存在することもありますが、ない場合は作成できます。
第一のデプロイメント環境はテスト環境です。テスト環境では、アプリケーションの機能を十分にテストし、正しくパッケージされているか確認し、本番環境にデプロイする前に問題を修正します。
アプリケーションは本番環境へのデプロイ前後に、教育環境にもデプロイすることができます。教育環境は、他の環境に影響を及ぼさずにアプリケーションの実行方法を練習する場をユーザーに提供します。
アプリケーションをデプロイするには、1つ以上のインストール・スクリプト・ファイルを実行します。インストール・スクリプト・ファイルがない場合は、SQL Developerまたは任意のテキスト・エディタで作成できます。
インストール・スクリプト・ファイルは、インストール・スクリプトを含む実行可能ファイル(.sql
ファイル)です。インストール・スクリプトは、DDL文と(オプションで)INSERT
文で構成されています。インストール・スクリプト・ファイルを実行すると、DDL文によりデプロイメント環境にアプリケーションのスキーマ・オブジェクトが作成され、INSERT
文により開発環境の表(ソース表)からデプロイメント環境の対応する表(新しい表)にデータが挿入されます。
トピック:
インストール・スクリプト・ファイルを実行すると、DDL文によりデプロイメント環境にアプリケーションのスキーマ・オブジェクトが作成されます。インストール・スクリプト・ファイルを正しく作成し、複数のインストール・スクリプト・ファイルを適切な順序で実行するには、アプリケーションのスキーマ・オブジェクト間の依存性を理解する必要があります。
オブジェクトAの定義でオブジェクトBを参照している場合、AはBに依存しています。そのため、Aを作成する前に、Bを作成する必要があります。これを行わないと、オブジェクト・タイプによって、Bを作成する文が失敗したり、Bが無効な状態で作成されます。
通常は、デプロイメント環境にスキーマ・オブジェクトとデータを次の順序でインストールします。
パッケージの仕様部
適切な順序の表(制約および索引を持つ表)
順序(通常、トリガーとして使用)
トリガー
シノニム
ビュー(ファンクション、プロシージャまたはシノニムを参照する場合あり)
パッケージ本体
データ
ただし複雑なアプリケーションの場合は、オブジェクトを作成する順序が単純なことはほとんどありません。通常は、データベース設計者に相談するか、設計のダイアグラムを考慮する必要があります。
INSERT
文の含まれているインストール・スクリプト・ファイルを実行すると、INSERT
文により、ソース表から対応する新しい表へデータが挿入されます。アプリケーションのソース表ごとに、新しい表へデータを挿入するときに違反となる可能性のある制約がないか確認する必要があります。そのような制約がある場合は、まずその制約を無効にし、データを挿入してから、制約を再度有効にする必要があります。データ・アイテムが制約に違反している場合、そのデータ・アイテムを修正するまで制約を再度有効にすることはできません。
参照データを正しい順序で挿入するだけならば、制約には違反しません。そのため、制約を無効にしておく必要はありません。
外部のソース(ファイル、スプレッドシート、以前のアプリケーションなど)や、依存データを多く含む大量の表からデータを挿入する場合は、データを挿入する前に制約を無効にしてください。
制約を無効にし、再度有効にするには、次の方法があります。
SQL Developerを使用して、制約を1つずつ無効にし、再度有効にします。
インストール・スクリプト・ファイルを編集し、各制約を無効にし、再度有効にするSQL文を追加します。
各制約を無効にし、再度有効にするSQL文を含んだSQLスクリプトを作成します。
Oracle Database Express Edition (Oracle Database XE)データ・ディクショナリで制約を検索して、各制約を無効化および有効化するSQL文を使用してSQLスクリプトを作成します。
EVALUATIONS
、PERFORMANCE_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ではオブジェクトを作成するDDL文と、データを新しい表に挿入するINSERT
文が生成され、インストール・スクリプト・ファイルにこれらの文が書き込まれます。
注意: 次の手順では、すべてのフィールドとオプションが表示されるように、SQL Developerウィンドウを拡大する必要のある場合があります。 |
データベース・エクスポート・ツールでインストール・スクリプト・ファイルを作成するには、次の手順を実行します。
インストール・スクリプト・ファイル用のディレクトリを作成していない場合は、Oracle Database XEインストール・ディレクトリとは別に作成します(C:\my_exports
など)。
SQL Developerウィンドウで「ツール」メニューをクリックします。
メニューが表示されます。
メニューから「データベース・エクスポート」を選択します。
「ソース/宛先」ウィンドウが開きます。
「ソース/宛先」ウィンドウで、次の手順を実行します。
「接続」フィールドで、開発環境への接続をメニューから選択します。
必要な「DDLのエクスポート」オプションを選択します(不要なオプションは選択を解除します)。
注意: 「終了文字」の選択を解除しないでください。インストール・スクリプト・ファイルが失敗します。 |
「DDLのエクスポート」オプションの詳細は、『Oracle Database SQL Developerユーザーズ・ガイド』を参照してください。
インストール・スクリプトによってデータをエクスポートしない場合、「データのエクスポート」の選択を解除します。
「別名保存」フィールドでデフォルトの「単一ファイル」を受け入れ、インストール・スクリプト・ファイルのフルパス名(C:\my_exports\hr_export.sql
など)を入力します。
ファイル名の末尾は.sql
である必要があります。
「次」をクリックします。
「エクスポートするタイプ」ウィンドウが表示され、エクスポート可能なオブジェクトのタイプがリストされます。各オブジェクト・タイプの左側にチェック・ボックスがあります。デフォルトでは、すべてのチェック・ボックスが選択されています。
「エクスポートするタイプ」ウィンドウで、次の手順を実行します。
エクスポートしない型のチェック・ボックスを選択解除します。
「すべて設定」を選択または選択解除すると、すべてのチェック・ボックスが選択または選択解除されます。
「次」をクリックします。
「オブジェクトの指定」ウィンドウが表示されます。
「オブジェクトの指定」ウィンドウで、次の手順を実行します。
「詳細」をクリックします。
「スキーマ」および「タイプ」を含めた、他のフィールドが表示されます。
「スキーマ」フィールドで、スキーマをメニューから選択します。
「タイプ」フィールドで、メニューから「すべてのオブジェクト」
または特定のオブジェクト・タイプ(「TABLE」
など)のいずれかを選択します。
「参照」をクリックします。
左側のフレームにオブジェクトのリストが表示されます。「タイプ」フィールドの値が「すべてのオブジェクト」
の場合、リストには選択したスキーマのすべてのオブジェクトが含まれます。「タイプ」フィールドの値が特定のオブジェクト・タイプの場合、リストには選択したスキーマのそのタイプのすべてのオブジェクトが含まれます。
エクスポートするオブジェクトを、左のフレームから右のフレームに移動します。
すべてのオブジェクトを移動するには、「>>」をクリックします。(すべてのオブジェクトを元に戻すには、「<<」をクリックします。)
選択したオブジェクトを移動するには、オブジェクトを選択して「>」をクリックします。(選択したオブジェクトを元に戻すには、オブジェクトを選択して「<」をクリックします。)
「次」をクリックします。
「ソース/宛先」ウィンドウで「データのエクスポート」の選択を解除した場合、「エクスポートのサマリー」ウィンドウが表示されるので、手順3に進みます。
「ソース/宛先」ウィンドウで「データのエクスポート」の選択を解除しなかった場合、「データの指定」ウィンドウが表示されます。下部フレームには、「オブジェクトの指定」ウィンドウで指定したオブジェクトがリスト表示されます。
「データの指定」ウィンドウで、次の手順を実行します。
データをエクスポートしないオブジェクトを、下部フレームから上部フレームに移動します。
すべてのオブジェクトを移動するには、上向きの二重矢印アイコンをクリックします。(すべてのオブジェクトを元に戻すには、下向きの二重矢印アイコンをクリックします。)
選択したオブジェクトを移動するには、オブジェクトを選択して上向きの一重矢印アイコンをクリックします。
「次」をクリックします。
「エクスポートのサマリー」ウィンドウが表示されます。
「エクスポートのサマリー」ウィンドウで、「終了」をクリックします。
エクスポート中であることを示す「エクスポート中」ウィンドウが開きます。エクスポートが完了すると「エクスポート中」ウィンドウが閉じ、「ソース/宛先」ウィンドウで指定したインストール・スクリプト・ファイルの内容がSQLワークシートに表示されます。
インストール・スクリプト・ファイルについて、次を確認します。
参照されているオブジェクトが、依存オブジェクトの前に作成されること。
データを挿入する前に、挿入先の表が作成されること。
必要に応じて、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ウィンドウを拡大する必要のある場合があります。 |
サンプル・アプリケーションのためのインストール・スクリプト・ファイルを作成する手順は、次のとおりです。
インストール・スクリプト・ファイル用のディレクトリを作成していない場合は、Oracle Database XEインストール・ディレクトリとは別に作成します(C:\my_exports
など)。
SQL Developerウィンドウで「ツール」メニューをクリックします。
メニューが表示されます。
メニューから「データベース・エクスポート」を選択します。
「ソース/宛先」ウィンドウが開きます。
「ソース/宛先」ウィンドウで、次の手順を実行します。
「接続」フィールドで、「hr_conn」
をメニューから選択します。
デフォルトの「DDLのエクスポート」オプションを使用します。
デフォルトの「データのエクスポート」オプションを使用します(選択済)。
「別名保存」フィールドでデフォルトの「単一ファイル」を受け入れ、インストール・スクリプト・ファイルのフルパス名C:\my_exports\hr_export.sql
を入力します。
「次」をクリックします。
「エクスポートするタイプ」ウィンドウが表示されます。すべてのタイプが選択されています。
「エクスポートするタイプ」ウィンドウで、次の手順を実行します。
サンプル・アプリケーションが使用するタイプを除き、すべてのタイプのチェック・ボックスの選択を解除します。サンプル・アプリケーションで使用するタイプは、「表」、「ビュー」、「索引」、「トリガー」、「制約」、「順序」「シノニム」、「パッケージ仕様部」および「パッケージ本体」です。
「次」をクリックします。
「オブジェクトの指定」ウィンドウが表示されます。
「オブジェクトの指定」ウィンドウで、次の手順を実行します。
「詳細」をクリックします。
「スキーマ」および「タイプ」を含めた、他のフィールドが表示されます。
「スキーマ」フィールドで、「HR」
をメニューから選択します。
「タイプ」フィールドで、「TABLE」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内の表の名前が左のフレームに表示されます。
左のフレームで、サンプル・アプリケーション用に作成した表の名前、EVALUATIONS
、EVALUATIONS_LOG
、PERFORMANCE_PARTS
およびSCORES
を選択します。
「>>」をクリックします。
選択した表が右のフレームに移動します。
「タイプ」フィールドで、「SEQUENCE」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内の順序の名前が左のフレームに表示されます。
左のフレームで、サンプル・アプリケーション用に作成した順序の名前、EVALUATIONS_SEQ
を選択します。
「>>」をクリックします。
選択した順序が右のフレームに移動します。
「タイプ」フィールドで、「TRIGGER」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内のトリガーの名前が左のフレームに表示されます。
左のフレームで、サンプル・アプリケーション用に作成したトリガーの名前、EVAL_CHANGE_TRIGGER
およびNEW_EVALUATION_TRIGGER
を選択します。
「>>」をクリックします。
選択したトリガーが右のフレームに移動します。
「タイプ」フィールドで、「PACKAGE」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内のパッケージの名前が左のフレームに表示されます。
左のフレームで、サンプル・アプリケーション用に作成したパッケージの名前、EMP_EVAL
を選択します。
「>>」をクリックします。
選択したパッケージが右のフレームに移動し、HR.EMP_EVAL
と表示されます。
「タイプ」フィールドで、「PACKAGE BODY」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内のパッケージ本体の名前が左のフレームに表示されます。
左のフレームで、「EMP_EVAL Body」
を選択します。
「>>」をクリックします。
選択したパッケージ本体が右のフレームに移動し、HR.EMP_EVAL
と表示されます。
「タイプ」フィールドで、「SYNONYM」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内のシノニムの名前が左のフレームに表示されます。
左のフレームで、サンプル・アプリケーション用に作成したシノニムの名前、EMP
を選択します。
「>>」をクリックします。
選択したシノニムが右のフレームに移動します。
「タイプ」フィールドで、「VIEW」
をメニューから選択します。
「参照」をクリックします。
HR
スキーマ内のビューの名前が左のフレームに表示されます。
左のフレームで、サンプル・アプリケーション用に作成したビューの名前、EMP_LOCATIONS
を選択します。
「>>」をクリックします。
選択したビューが右のフレームに移動します。
「次」をクリックします。
「データの指定」ウィンドウが表示されます。下部フレームには、「オブジェクトの指定」ウィンドウで指定したオブジェクトがリスト表示されます。
「データの指定」ウィンドウで、次の手順を実行します。
下部フレームで、PERFORMANCE_PARTS
(データを追加した唯一のサンプル・アプリケーション表)以外のすべてのオブジェクトを選択します。
上向きの矢印アイコンをクリックします。
選択したオブジェクトが下部フレームから上部フレームに移動します。これらのデータはエクスポートされません。
「次」をクリックします。
「エクスポートのサマリー」ウィンドウが表示されます。
「エクスポートのサマリー」ウィンドウで、「終了」をクリックします。
エクスポート中であることを示す「エクスポート中」ウィンドウが開きます。エクスポートが完了すると「エクスポート中」ウィンドウは閉じて、インストール・スクリプト・ファイルC:\my_exports\hr_export.sql
の内容がSQLワークシートに表示されます。
インストール・スクリプト・ファイルについて、次を確認します。
参照されているオブジェクトが、依存オブジェクトの前に作成されること。
データを挿入する前に、挿入先の表が作成されること。
必要に応じて、SQLワークシートまたはテキスト・エディタでファイルを編集します。
注意: デプロイメント環境は開発環境と異なる必要があり、別の標準のHR スキーマであることを前提とします。 |
サンプル・アプリケーション用に1つのインストール・スクリプト・ファイルを作成した場合、サンプル・アプリケーションをインストールするには、デプロイメント環境にユーザーHR
として接続し、その後、インストール・スクリプトをSQL*PlusまたはSQL DeveloperのSQLワークシートで実行します。インストール・スクリプトを実行するコマンドの構文は次のとおりです。
@full_path_name_of_installation_script_file
インストール・スクリプト・ファイルをSQL Developerで実行する手順は、次のとおりです。
必要であれば、デプロイメント環境への接続を作成します。
「接続名」には、開発環境への接続の名前以外の名前を入力します。
デプロイメント環境で、ユーザーHR
としてOracle Database XEに接続します。
「接続名」には、デプロイメント環境への接続の名前を入力します。
新しいペインが表示されます。タブにはデプロイメント環境への接続の名前が表示されます。ペインには、「SQLワークシート」および「クエリー・ビルダー」の2つのサブペインが表示されます。
「SQLワークシート」ペインに、インストール・スクリプトを実行するためのコマンドを入力します。
@full_path_name_of_installation_script_file
次に例を示します。
@C:\my_exports\hr_export.sql
「スクリプトの実行」アイコンをクリックします。
スクリプトが実行されます。その出力は、「SQLワークシート」ペインの下の「スクリプト出力」ペインに表示されます。
「接続」ペインでは、デプロイメント環境への接続を展開し、次にサンプル・アプリケーションが使用する各オブジェクトのタイプを展開すると、サンプル・アプリケーションのオブジェクトが表示されます。
参照:
|
デプロイメント環境にアプリケーションをインストールした後、SQL Developerで次の方法により有効性をチェックできます。
「接続」ペインで、次の手順を実行します。
デプロイメント環境への接続を展開します。
新しいオブジェクトの定義を確認します。
「レポート」ペインで、次の手順を実行します。
「データ・ディクショナリ・レポート」を展開します。
データ・ディクショナリ・レポートのリストが表示されます。
「すべてのオブジェクト」を展開します。
オブジェクト・レポートのリストが表示されます。
「すべてのオブジェクト」を選択します。
「接続の選択」ウィンドウが表示されます。
「接続」フィールドで、デプロイメント環境への接続をメニューから選択します。
「OK」アイコンをクリックします。
「バインド値の入力」ウィンドウが表示されます。
「所有者」または「オブジェクト」を選択します。
「適用」をクリックします。
「レポートの実行中」というメッセージの後、レポートが表示されます。
このレポートではオブジェクトごとに、「所有者」、「オブジェクト・タイプ」、「オブジェクト名」、「ステータス」(「有効」または「無効」)、「作成日」および「最終DDL」のリストを出力します。「最終DDL」は、オブジェクトに影響を与えた最後のDDL操作の日付です。
「レポート」ペイン(「接続」ペインの隣)で、「無効なオブジェクト」を選択します。
「バインド値の入力」ウィンドウが表示されます。
「適用」をクリックします。
このレポートでは、「ステータス」が「無効」の各オブジェクトについて、「所有者」、「オブジェクト・タイプ」および「オブジェクト名」のリストを出力します。
参照: SQL Developerレポートの詳細は、『Oracle Database SQL Developerユーザーズ・ガイド』を参照してください。 |