この章の内容は次のとおりです。
JDeveloperを使用して、次の作業を実行できます。
データベース・オブジェクトの作成、編集または削除
オフライン・データベース・オブジェクトの作成、編集または削除
データベース定義のオフライン・バージョンで作業を行った後、これらの定義をすぐに処理されるファイルに生成するか、またはこの時点ではデータベース接続を通して表または他のデータベース・オブジェクトを作成します
オフライン・データベースをモデル化し、ダイアグラム上で稼働中のデータベース接続内のデータベース・オブジェクトをモデル化します。データベースのモデリングの詳細は、「データベース・ダイアグラムによるモデリング」を参照してください。
データベース・オブジェクトおよびオフライン・データベース定義を作成したり、これらのオブジェクトを編集したり、これらのオブジェクトを削除またはデータベース接続から削除できます。
この項では、データベース・スキーマのコンテキスト外での表、ビューおよび制約などのデータベース・オブジェクトの作業方法について説明します。オフライン・データベースはJDeveloperのテクノロジの1つで、稼働中のデータベース接続でのデータベース・オブジェクトの作成および編集に使用されるものと同じエディタを使用して、プロジェクト内で.xml
ファイルとして保存されたデータベース・オブジェクト定義を作成および編集できます。
新しいオフライン・データベース・オブジェクトを作成できます。または、稼働中のデータベースとの接続からデータベース・オブジェクトをリバース・エンジニアリングすることもできます。作業の終了後、オンライン・データベース・スキーマでデータベース定義を作成および更新するために使用可能なDDLを生成できます。
JDeveloperオフライン・データベースでは、次のオブジェクト・タイプをサポートします。
機能
索引(表の一部として)
データベース・リンク
マテリアライズド・ビュー
マテリアライズド・ビュー・ログ
パッケージ
プロシージャ
順序
シノニム
Table
表領域
トリガー
タイプ
ビュー
これらのオブジェクト・タイプに対するOracle Databaseのサポートの詳細は、『Oracle® Database SQL言語リファレンス』を参照してください。
オフライン・データベース定義の使用方法
JDeveloperでオフライン・データベース定義を使用する場合、XMLファイルとして格納されているが、稼働中のデータベース接続内のオブジェクトのモデルを提供するオブジェクトを使用します。稼働中のデータベース接続にオフライン・データベース定義を生成することにより、データベース・オブジェクトを作成、変更または削除できます。
JDeveloperには、データベースのコンテキスト外で表や制約などのデータベース・オブジェクトを作成および編集する必要がある場合に使用できるツールがあります。次に例を示します
新しい表およびビューを作成したり、データベースに情報を生成できます。
新しい表およびビューを作成したり、データベースに情報を生成し、これを編集して後でデータベース接続上で実行できます。
データベース・スキーマから表およびビューをリバース・エンジニアリングし、必要な変更を加えた後、その変更内容を同じデータベース・スキーマ、新しいデータベース・スキーマ、またはファイルに反映して、後日データベースに対して実行することもできます。JDeveloperでは、データベースへのコミット前に変更を手動で調整できます。
JDeveloperのモデル作成ツールを使用して、オフライン・データベース・オブジェクトをダイアグラム上に視覚的に表示できます。データベースのモデリングの詳細は、「データベース・ダイアグラムによるモデリング」を参照してください。
オフライン・データベース・ファイルのパスの設定方法
プロジェクト設定を構成して、プロジェクトから使用する、オフライン・データベース・オブジェクトのルート位置を指定できます。データベース・パスはデフォルトで構成されるため、次の場合のみモデル・パスの変更が必要になります。
他のプロジェクトに格納されているオフライン・データベース・オブジェクトを含める場合
別の場所に新しいオフライン・データベース・オブジェクト・ファイルを格納する場合
プロジェクトのデータベース・パスにファイル・システム上のパスを追加すると、オフライン・データベース・オブジェクトを複数のプロジェクト間で共有できます。データベース・パスにファイル・システム上のパスが入力された順序は、オフライン・データベース・オブジェクトを検索するディレクトリの順番を示します。データベース・パスの最初の場所は、新しいオフライン・データベース・オブジェクト・ファイルが格納される場所です。
データベース・オブジェクトをモデリングしている場合、モデル・パス(「プロジェクト・プロパティ」ダイアログの「モデラー」プリファレンス・ページにあります)を使用して、ダイアグラムのファイルの場所を指定します。
注意:
プロジェクトに別のデータベース・パスを追加する場合は、続行する前に作業を保存してください。データベース・パスを変更すると、プロジェクトはオフライン・データベース・オブジェクト定義を再ロードします。そのため、表、ビュー、スキーマの変更や新しいオブジェクトなど、未保存の作業は失われる可能性があります。
すべての新規プロジェクトに使用されるデータベース・オブジェクト用としてデフォルトのルート・ディレクトリを設定できます。
新規プロジェクト用のデータベース・オブジェクトにデフォルトのルート・ディレクトリを設定するには、次のようにします。
「アプリケーション」→「デフォルト・プロジェクト・プロパティ」を選択します。
「プロジェクト」→「ソースパス」→「オフライン・データベース」を選択してルート・ディレクトリを入力します。
既存のプロジェクトのデータベース・パスを変更できます。
既存のプロジェクトのデータベース・パスを設定するには、次のようにします。
プロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。
「プロジェクト」→「ソースパス」→「オフライン・データベース」を選択して、プロジェクトのオフライン・データベース・オブジェクトのファイル・システムのロケーションを入力します。セミコロン(;
)を使用して複数のファイル・システム・ロケーションを区切ります。
「対象」および「除外」タブを使用すると、サブフォルダを選択して追加および除外できます。詳細は、[F1]を押すか、ダイアログ内で「ヘルプ」をクリックしてください。
JDeveloperでは、パッケージと同様の方法でコンテナとして動作するオフライン・データベースのコンテキストでオフライン・データベース定義が使用されます。「アプリケーション」ウィンドウでは、オフライン・データベースは、図26-1のように「オフライン・データベース・ソース」ノードの下に表示されます。
図26-1 「アプリケーション」ウィンドウのオフライン・データベース
この場合、Javaクラスとデータベース・ダイアグラムが「アプリケーション・ソース」ノードの下のパッケージ「project1」で作成されていて、オフライン・データベース定義がオフライン・データベース・ソース・ノードの下にある「DATABASE1」
というオフライン・スキーマでいくつか作成されています。
オフライン・データベースを作成する場合、オフライン・データベースのデータベース・エミュレーションを選択します。
オフライン・データベースがエミュレートするデータベースのタイプを指定できます。これにより、プロジェクトでサポートされるデータ型が決まります。
JDeveloperと互換性のあるデータベースのバージョンについては、JDeveloperの認定情報(http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.html
)を参照してください。
オフライン・データベースは、オフライン・スキーマおよびオフライン・データベース・オブジェクト定義が含まれる「アプリケーション」ウィンドウ内のノードです。
オフライン・データベースを作成するには、次のようにします。
JDeveloperでは、オフライン・データベースのコンテキストでオフライン・データベース定義が使用されます。オフライン・データベースでは、オフライン・スキーマが稼働中のデータベース接続内のスキーマ(またはユーザー)に相当します。「アプリケーション」ウィンドウでは、オフライン・スキーマは、図26-2のように「オフライン・データベース・ソース」ノードの下に表示されます。
図26-2 「アプリケーション」ウィンドウのオフライン・スキーマ
この場合、Javaクラスとデータベース・ダイアグラムが「アプリケーション・ソース」ノードの下のパッケージ「project1」
で作成されていて、オフライン・データベース定義が、「オフライン・データベース・ソース」ノードの下にある「DATABASE1」
というオフライン・データベースに含まれる「SCHEMA1」
というスキーマでいくつか作成されています。
オフライン・スキーマを作成するには、次のようにします。
例26-1 ポップアップ・メニューのショートカット:
「アプリケーション」ウィンドウで、オフライン・データベースを右クリックし、「新規スキーマ」を選択します。
オフライン・データベース・オブジェクトを作成するには、次のように複数の方法があります。
オフライン・データベース・オブジェクトは、新規ギャラリからいつでも作成できます。
データベース・ダイアグラム、表およびビューは、オフライン・データベースの開発用に構成されたプロジェクトのポップアップ・メニューか、そのプロジェクトの下のノードからいつでも作成できます。
オフライン・データベース・オブジェクトを作成したら、オフライン・データベースの開発用に構成されたプロジェクトのポップアップ・メニューか、そのプロジェクトの下のノードから別のオフライン・データベース・オブジェクトを作成できます。
表について
使用可能な表のタイプは、次のとおりです。
標準。これは、パーティション化可能な標準のデータベース表です。パーティション表は、より小さく管理しやすいようにパーティションと呼ばれる断片に分けられた表です。パーティション表にアクセスするために、SQL問合せおよびDML文を変更する必要はありません。ただし、パーティションを定義すると、DDL文は表や索引全体ではなく、個々のパーティションにアクセスして操作するようになります。また、パーティション化はアプリケーションに対して完全に透過的です。
外部。外部表は読取り専用の表であり、これらのメタデータはデータベースに格納されますが、データはデータベースの外部に格納されます。特に重要な機能として、外部表では、最初にデータベースにデータをロードしなくても、データを問い合せることができます。
索引構成。索引構成表は、主キーに基づいて構築された索引に行(主キー列値とキー以外の列値の両方)が保持される表です。索引構成表を使用すると、Oracle Databaseで索引構造を表として格納できます。索引構成表は、主キーベースのアクセスおよび操作に最適です。
一時。一時表の定義は通常の表の定義と同じように保持されますが、一時表の表セグメントとすべてのデータは、トランザクションまたはセッションの持続期間中のみ保持され、表はデータベースに永久には格納されません。一時表は、パーティション化または索引構成化できません。
注意:
オフライン・スキーマのリレーショナル表定義を作成して使用することはできますが、オブジェクト・リレーショナル表定義を作成して使用することはできません。
パーティションについて
表、索引またはマテリアライズド・ビューをパーティション化できます。パーティション表またはパーティション・マテリアライズド・ビューは、より小さく管理しやすいようにパーティションと呼ばれる断片に分けられた表またはマテリアライズド・ビューです。パーティション表にアクセスするために、SQL問合せおよびDML文を変更する必要はありません。ただし、パーティションを定義すると、DDL文は表や索引全体ではなく、個々のパーティションにアクセスして操作するようになります。また、パーティション化はアプリケーションに対して完全に透過的です。
一時表はパーティション化できません。
パーティション索引は、表の索引列に表示されるそれぞれの値のエントリが含まれるパーティションによって構成されています。
パーティションには、次の3つのタイプがあります。
RANGE。列リストの値の範囲で表をパーティション化します。索引構成表の場合、これは表の主キー列のサブセットである必要があります。
HASH。ハッシュ・メソッドを使用して表をパーティション化します。列の値にパーティション化キーとして指定されたハッシュ・ファンクションを使用して、行がパーティションに割り当てられます。
LIST。列のリテラル値のリストで表をパーティション化します。これは、個々の行が固有のパーティションにマップする方法に関する制御に便利です。
2つのパーティション化方法を組み合せることにより(これをコンポジット・パーティション化といいます)、データをサブパーティションにさらに分割できます。コンポジット・パーティション化でサポートされているタイプは次のとおりです。
レンジ-レンジ
レンジ-ハッシュ
レンジ-リスト
リスト-レンジ
リスト-ハッシュ
リスト-リスト
サブパーティションを明示的に定義しないパーティションで使用されるサブパーティション・テンプレートを定義できます。
注意:
数量別にハッシュ・パーティションを使用するOracle Database内の表または索引は、個別ハッシュ・パーティションを持つものとしてJDeveloperに表示されます。「表の作成」、「表の編集」、「マテリアライズド・ビューの作成」、またはマテリアライズド・ビューの編集ダイアログを使用して個別パーティションを手動で指定することも、個別パーティションを数量別に定義してデータベースに処理させることもできます。いずれの方法を選択してパーティションを定義するとしても、JDeveloperでデータベース表またはマテリアライズド・ビューを編集する場合、これらは個別パーティションとして表示されます。
索引について
表の列に索引を作成すると、問合せを高速化できます。索引を使用すると、表の行全体のわずかな部分を戻す操作でのデータ・アクセスが、より高速になります。通常、次のいずれかの場合、列に索引を作成できます。
列を頻繁に問い合せる場合
列に参照整合性制約がある場合。
列に一意キー整合性制約がある場合。
索引はどの列にも作成できますが、列が前述のような状況で使用されていない場合は、索引を作成してもパフォーマンスは改善されず、リソースが無駄に占有されます。データベースでは整合性制約を使用した列に索引を作成しますが、このような列には索引を明示的に作成することをお薦めします。SQLワークシートの実行計画を使用すると、特定の問合せ文に対する理論的な実行計画を示すことができます。
索引には、非一意、一意またはビットマップというタイプのほか、ドメイン索引があります。
非一意標準索引の場合、索引には複数の同一値を含めることができます。一意標準索引の場合、重複値は許可されません。列内の値が一意である場合は、一意標準索引を使用します。ビットマップ標準索引の場合、キー値に関連付けられたROWIDがビットマップとして格納されます。多数の同時システムによってデータが頻繁には更新されないシステムや、値の範囲が狭いシステムの場合、これらが役に立ちます。
ドメイン索引は、アプリケーション固有のドメイン内のデータに各索引が付けられる、ユーザー定義索引です。これらは、ユーザー定義の索引タイプ別に提供される索引ロジックを使用して構築されます。索引タイプを使用すると、特定の演算子の述部に合うデータに効率よくアクセスできます。通常、ユーザー定義の索引タイプは、SpatialオプションなどのOracleオプションの一部です。
ユーザー定義のデータ型の使用
JDeveloperでは、オブジェクト型やコレクション型などの独自のデータ型を定義できます。
オブジェクト型は、発注書など、アプリケーション・プログラムで処理する実社会のエンティティを抽象化したものです。1つのオブジェクト型は、次の3種類のコンポーネントを持つスキーマ・オブジェクトです。
名前。スキーマ内でオブジェクト型を一意に識別します。
属性。実社会のエンティティの構造と状態をモデリングします。属性は、ビルトイン型または他のユーザー定義型です。
メソッド。PL/SQLで記述されてデータベースに格納されたか、C言語などで記述されて外部に格納されたファンクションまたはプロシージャです。メソッドにより、アプリケーションで実社会のエンティティに対して実行できる操作が実装されます。
オブジェクト型はテンプレートです。テンプレートにあわせて構造化されたデータ・ユニットをオブジェクトと呼びます。
JDeveloperでは、オブジェクト型仕様、またはオブジェクト型仕様および本体を作成できます。
新規オブジェクト型仕様を作成する場合、これは次のようになります。
TYPE TYPE1 AS OBJECT (a null );
オブジェクト型本体を作成する場合、これは次のようになります。
CREATE TYPE BODY TYPE1 AS VARRAY(1) OF null;
コレクション型は異なります。各コレクション型では、すべて同一のデータ型を持つ不定の数の要素で構成されるデータ・ユニットを記述します。コレクション型は、配列型と表タイプです。
配列型と表タイプはスキーマ・オブジェクトです。対応するデータ・ユニットはVARRAYとネストした表です。混同するおそれがなければ、通常はコレクション型をVARRAYおよびネストした表と呼びます。
コレクション型はコンストラクタ・メソッドを持ちます。コンストラクタ・メソッド名は型の名前で、引数は新規コレクションの要素をカンマで区切ったリストです。コンストラクタ・メソッドは関数です。これにより、新規コレクションがその値として戻されます。
型名とそれに続く空の丸カッコで構成される式は、その型を持つ空のコレクションを作成するためのコンストラクタ・メソッドのコールを表します。空のコレクションは、NULLのコレクションとは異なります。
JDeveloperでは、配列型と表タイプを作成できます。
配列型は次のようになります。
TYPE TYPE1 AS VARRAY(1) OF null;
表タイプは次のようになります。
TYPE TYPE1 AS TABLE OF null;
注意:
プロジェクトがOracle Database以外のデータベース・エミュレーション用として構成されている場合にデータ型を使用するには、エミュレートするデータベースが型作成をサポートしている必要があります。
マテリアライズド・ビューについて
マテリアライズド・ビューは、問合せの結果が含まれるデータベース・オブジェクトです。問合せでFROM句を使用すると、表、ビューおよびその他のマテリアライズド・ビューの名前を指定できます。稼働中のデータベース接続内のマテリアライズド・ビュー、およびJDeveloperのオフライン・データベース内のオフライン・マテリアライズド・ビューをモデル化、作成および編集できます。
Oracle DatabaseからJDeveloperプロジェクトにマテリアライズド・ビューをリバース・エンジニアリングする場合:
データベース上のマテリアライズド・ビューにWITHOUT REDUCED PRECISIONが指定されている場合、マテリアライズド・ビューがJDeveloperにリバース・エンジニアリングされると、低下した精度が採用され、「マテリアライズド・ビュー・ログの編集」ダイアログの「プロパティ」ページの「精度の低下」オプションが選択されます。マテリアライズド・ビューで精度が低下しないことが重要である場合は、ダイアログで「精度の低下なし」を選択します。
データベース上のマテリアライズド・ビューにUSING ROLLBACK SEGMENTおよびUSING TRUSTED CONSTRAINTSが指定されている場合、マテリアライズド・ビューがJDeveloperにリバース・エンジニアリングされると、「マテリアライズド・ビュー・ログの編集」ダイアログの「プロパティ」ページでロールバック・セグメントが選択されず、制約が「強制」として表示されます。必要に応じて、「マテリアライズド・ビュー・ログの編集」ダイアログのオプションを変更します。
オフライン・タイプ定義を作成するには、次のようにします。
「アプリケーション」ウィンドウで、目的のアプリケーションとプロジェクトを展開します。
プロジェクトまたはその下のオフライン・スキーマなどのノードを右クリックし、「新規」→「新規ギャラリ」を選択して、「新規ギャラリ」を表示します。
「新規ギャラリ」で、「データベース層」を開き、「オフライン・データベース・オブジェクト」を選択します。
「タイプ」を選択して、「オフライン・タイプの作成」ダイアログを起動します。
パラメータを入力し、型を定義するオプションを選択します。
詳細を参照するには、「オフライン・タイプの作成」ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。
ユーザー定義のタイプを編集するには、「アプリケーション」ウィンドウでそのタイプをダブルクリックします。このタイプが含まれるSQLがソース・エディタで開きます。
オフライン・データベース・オブジェクト定義を作成するには、次のようにします。
注意:
オフライン・スキーマのリレーショナル表定義を作成して使用することはできますが、オブジェクト・リレーショナル表定義を作成して使用することはできません。
「アプリケーション」ウィンドウで、プロジェクトまたはプロジェクト内の任意の項目を右クリックして、「新規」を選択し、「新規ギャラリ」を表示します。
「新規ギャラリ」で、「データベース層」を開き、「オフライン・データベース・オブジェクト」を選択します。
作成するオフライン・データベース・オブジェクトを選択し、「作成」ダイアログまたはウィザードを起動します。
詳細を参照するには、「オフライン・タイプの作成」ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。
コンテキスト・メニューのショートカットを使用するには、次のようにします。
「アプリケーション」ウィンドウで、オフライン・スキーマを右クリックして「新規データベース・オブジェクト」を選択し、作成するオブジェクトを選択します。
オフライン・データベース定義を削除するには、次のようにします。
「アプリケーション」ウィンドウで、オフライン・オブジェクトを含むプロジェクト、オフライン・データベースおよびオフライン・スキーマを開きます。オフライン・オブジェクトを右クリックして「削除」を選択します。
または、オフライン表を右クリックして「ファイル」→「削除」を選択します。
注意:
オフライン表に依存性がある場合、「削除の確認」ダイアログに警告が表示され、使用方法を確認できます。それでもオフライン表を削除することを選択する場合、オブジェクトも削除されることを示す警告がカスケード削除の確認ダイアログに表示されます。
オンライン・データベース・スキーマからデータベース・ダイアグラムに表、ビュー、シノニム、マテリアライズド・ビューおよび順序をドラッグすると、オフライン・データベース・オブジェクトとしてアクセスできるようになります。
データベース・ダイアグラムにオブジェクトをドラッグするには、次のようにします。
新規データベース・ダイアグラムを作成します。
または、既存のダイアグラムを開きます。
データベース接続を選択します。次のどちらかに移動します。
「ウィンドウ」→「データベース」→「データベース」ウィンドウ
「アプリケーション」ウィンドウの「アプリケーション・リソース」
「IDE接続」またはアプリケーションを展開し、データベース接続を選択します。
接続で、スキーマを開いて目的のノード(「表」、「ビュー」、「マテリアライズド・ビュー」、「順序」または「シノニム」)を開きます。
モデリングするオブジェクトを選択してデータベース・ダイアグラムにドラッグします。この操作により、「場所の指定」ダイアログが開きます。「オブジェクトをプロジェクトにコピー」が選択されていることを確認して「OK」をクリックします。オブジェクトがダイアグラムと「アプリケーション」ウィンドウに表示されます。
[Ctrl]キーを押しながら複数のオブジェクトを選択することで、データベース・ダイアグラム上に同じタイプのオブジェクトを2つ以上ドラッグできます。
注意:
同じオブジェクトを複数回リバース・エンジニアリングすると、警告メッセージが表示されます。「プロジェクトにコピー」を使用している場合、続行することを選択すると、既存のオブジェクトを置換または削除できます。データベース・オブジェクトをダイアグラムにドラッグし、続行することを選択すると、新規オブジェクトによって既存のオブジェクトが上書きされます。
データベース・オブジェクトおよびオフライン・データベース定義をプロジェクトにリバース・エンジニアリングする方法
データベース・オブジェクトをデータベース・スキーマからオフライン・データベースにリバース・エンジニアリングできます。これにより、オフライン・データベース・オブジェクトとして使用できるようになります。また、オフライン・データベース・オブジェクトをプロジェクトにコピーすることもできます。
別のデータベース・バージョンをエミュレートするオフライン・データベースにデータベース・オブジェクトをリバース・エンジニアリングしようとすると、続行方法に関するガイダンスを示すエラー・メッセージが表示されます。通常、オフライン・データベースでは同じデータベース・エミュレーションがソース・データベースとして使用されるようにすることをお薦めします。
ウィザードのフィルタを適用して、興味があるオブジェクトのみを表示できます。スキーマ内に多くのオブジェクトがある場合、自動問合せを停止すると、フィルタ文字を入力するたびにウィザードがリフレッシュすることはありません。
フィルタを適用して、リバース・エンジニアリングに使用可能として表示されるオブジェクトを選択できます。「オブジェクト・ピッカー」ページ(ウィザードのステップ3)では、次の操作が可能です。
「名前フィルタ」に文字を入力して、使用可能なオブジェクトのリストを名前でフィルタします。「名前フィルタ」では大文字と小文字が区別されます。
多数のオブジェクトが存在する場合、自動問合せをオフにし、使用するフィルタを入力した後に「問合せ」をクリックします。
データベース・オブジェクトをリバース・エンジニアリングするには、次のようにします。
稼働中のデータベース・スキーマからJDeveloperに表をリバース・エンジニアリングする場合、外部キーについての情報は必ずしも利用できるとはかぎりません。以降の各項では、外部キー情報の処理方法をケース別に説明します。
外部キーの両端の表をリバース・エンジニアリング
これが最も単純なケースです。JDeveloperが、外部キーが間にある複数の表をリバース・エンジニアリングする場合、その外部キーに関する情報もリバース・エンジニアリングされます。これにより外部キーは、データベース・ダイアグラムおよび「オフライン表の編集」ダイアログの制約情報ページに正しく表示されます。
表での作業を終了した後、その変更内容を直接データベースに反映できます。
ベスト・プラクティス
前述の情報から、新しいデータベース・スキーマの基礎となる表をリバース・エンジニアリングする場合、使用しない表に対する外部キーについて注意する必要がないことがわかります。安全に変更し、オンライン表を新しいスキーマに生成できます。
しかし、表をリバース・エンジニアリングして必要な変更を加え、その変更内容を同じデータベース・スキーマに反映する場合は、表を変更するかどうかにかかわらず、外部キー関係を持つすべての表をリバース・エンジニアリングする必要があります。これにより、外部キーについての正しい情報をSQLファイルまたはデータベースに直接生成できるようになります。「ソース・データベースからのオフライン・データベース・オブジェクト」ウィザードの「操作の指定」ページを使用すると、依存関係をリバース・エンジニアリングできます。
リバース・エンジニアリングしたオフライン・オブジェクトは、その元のデータベース接続からリフレッシュできます。オブジェクトを再度リバース・エンジニアリングすると、そのオフライン・オブジェクトに加えた変更がすべて失われることに注意してください。
注意:
JDeveloperでオフライン・オブジェクトとして作成した後、データベースに生成したオブジェクトはリフレッシュできません。データベースのオブジェクトに変更を加え、その変更をオフライン・オブジェクトに反映するには、データベースからオブジェクトをリバース・エンジニアリングし、「操作の指定」ページで「置換」を選択して、オフライン・オブジェクトを上書きする必要があります。
データベースからオブジェクトを再度リバース・エンジニアリングするには、次のようにします。
オフライン・データベース・オブジェクトをテンプレートに基づいて作成できます。これには、次のような目的があります。
作成したすべての表に対してデフォルトの記憶域オプション・セットを使用します。
作成したすべての表に対してユーザー・プロパティ値のデフォルト・セットを使用します。
作成したすべての表に対して列のデフォルト・セットを使用します。
テンプレート表では、デフォルトの主キー、列順序およびトリガーを作成できます。
テンプレートを使用して新規オブジェクトを作成する場合、テンプレートに設定されているプロパティが新規オブジェクトにコピーされ、その結果として作成ダイアログのオプションが事前移入されます。所有されたオブジェクトのネームスペースが親オブジェクトでない場合、名前は、親オブジェクト内のみでなく、スキーマ内で一意である必要があります。たとえば、索引名および制約名は、所有する表、マテリアライズド・ビューまたはビュー内のみでなく、スキーマ内で一意である必要があります。
オフライン・テンプレートの作成方法
オフライン・データベース・オブジェクトをテンプレートから作成できます。
オフライン・データベースのデフォルト・テンプレートを作成するには、次のようにします。
新規オフライン・データベースを作成します。
「オフライン・データベースの作成」ダイアログで、「デフォルト・テンプレートの初期化」を選択します。「OK」をクリックすると、TEMPLATE_object
という名前のデフォルトのテンプレート・オブジェクトとともに、オフライン・データベースが作成されます。テンプレート・データベース・オブジェクトを編集するには、目的のオブジェクトをクリックして「プロパティ」を選択します。これにより、オブジェクトの編集ダイアログが開きます。
既存のオフライン・データベースのデフォルト・テンプレートを編集するには、次のようにします。
「アプリケーション」ウィンドウでテンプレート・オブジェクトに移動し、ポップアップ・メニューから「開く」
を選択します。テンプレート・オブジェクトが対応するエディタで開き、そこで編集できます。
テンプレートからのオフライン・データベース・オブジェクトの作成方法
テンプレートから作成するオフライン・データベース・オブジェクトは、「アプリケーション」ウィンドウ内のオフライン・データベース・オブジェクトとして、またはデータベース・ダイアグラムでモデル化されたオフライン・データベース・オブジェクトとして作成できます。
テンプレートに基づいてオフライン・データベース・オブジェクトを作成する前に、テンプレートを最初に作成する必要があります。
テンプレートに基づいてオフライン・データベース・オブジェクトを作成するには、次のようにします。
ユーザー定義のプロパティをデータベース・オブジェクトに追加できます。データベース・オブジェクトのインスタンスとして、これらのユーザー定義のプロパティに特定の値を割り当てることができます。
オフライン・データベースに定義に定義可能なプロパティを制限するライブラリを使用できます。たとえば、すべての表に特定のタイプの列を使用する必要がある、特定の値のみが使用可能である、またはプロパティが必須である、などの制限を設定できます。
ユーザー・プロパティ・ライブラリは、オフライン・データベースのコンテキストで定義されます。最初に、使用するオフライン・データベース・オブジェクトのタイプについてユーザー・プロパティを定義する必要があります。これにより、オフライン・データベース・オブジェクトの作成時にライブラリを使用できるようになります。
ユーザー・プロパティ・ライブラリには、次に対して定義されたプロパティを含めることができます。
表、列、制約、索引
データベース・リンク
関数、パッケージ、プロシージャ
マテリアライズド・ビュー
マテリアライズド・ビュー・ログ
順序
シノニム
表領域
トリガー
タイプ
ビュー
ユーザー・プロパティ・ライブラリは、オフライン・データベースから独立していますが、オフライン・データベースの編集ダイアログを使用すると、これらに追加できます。
ユーザー・プロパティ・ライブラリを作成または使用するには、次のようにします。
オフライン・データベース・オブジェクト・タイプに対するユーザー・プロパティ・ライブラリを作成したら、そのライブラリ使用してユーザー・プロパティ値を格納できます。
データベース・オブジェクトを検証するためにユーザー定義のプロパティ値の検証を実行するには、独自の検証コードを作成します。これは、このユーザー・ガイドの範囲外の拡張手順です。詳細は、『Oracle Fusion Middleware Oracle Extension SDK Java APIリファレンス』のUserPropertyValidationManager
に関する項を参照してください。Extension SDKの使用の詳細は、Oracle Fusion Middleware Oracle JDeveloper拡張機能の開発を参照してください。
「データベース・オブジェクトからSQLを生成」ウィザードを使用すると、作成または編集したオフライン・オブジェクトを使用してデータベース・スキーマを更新する方法を選択できます。次のことが可能です。
データベースにオブジェクトを作成または置換します。
SQLファイルの生成を選択した場合は、CREATE文とDROP文が含まれます。
オフライン・データベース・オブジェクトに対して行った変更を使用して、既存のデータベース・スキーマ・オブジェクトを更新します。JDeveloperは、最初にデータベース・スキーマ内のオブジェクトに対するオフライン・データベース定義を調整して、必要な変更を認識します。手動調整を実行して一部の変更のみを選択することを選択できます。
SQLファイルの生成を選択した場合は、ALTER文が含まれます。
データベースに変更内容を生成するか、変更を調整するかのどちらを選択するにかかわらず、次の処理を選択できます。
検証するSQLファイルを生成し、後でデータベースに対して実行
データベースを直接変更
また、1つ以上のオフライン表を生成し、それらの表をリバース・エンジニアリングした元のデータベース接続に戻す場合は、「アプリケーション」ウィンドウから直接この処理を行うこともできます。
注意:
外部キーを含む表を変更した場合は、データベースに変更を反映したときに、外部キーが削除されることがあります。
この項では、調整時に発生する可能性がある問題について説明します。
制約は変更不可
調整中に制約が作成または削除されることがあり、変更できなくなる場合があります。実行できるALTER TABLE
制約は、ADD CONSTRAINT
、DROP CONSTRAINT
、ADD COLUMN
、DROP COLUMN
およびWIDEN COLUMN
のみです。
名前を変更した表は調整不可
表の名前は、表をリバース・エンジニアリングするときやオフラインでの編集時に変更できます。名前を変更した表をデータベースに戻すように調整すると、データベースには新しい名前の表のレコードが存在しないため、エラー・メッセージを受け取ります。
これを避けるには、データベースに名前を変更した表を作成します。これは調整、置換することはできません。
オンライン・データベース・スキーマに対して実行できるCREATE文およびDROP文を含むSQLファイルを作成します。
注意:
外部キーを含む表を変更した場合は、データベースに変更を反映したときに、外部キーが削除されることがあります。
データベースに生成する情報を含むオフライン・データベース定義が1つ以上ある場合は、この方法を使用できます。ただし、1つ以上のオフライン・データベース定義を迅速に生成して、元のデータベース接続に戻す場合は、「アプリケーション」ウィンドウからこの処理を行うことができます。
オフライン・データベース表のオフライン・バージョンがあると、JDeveloperではオフライン・データベース表の列を構成する情報が追跡されます。生成SQLスクリプトがSQLセッションで実行される場合や、他のユーザーがデータベースを更新する場合など、データベースがJDeveloper外部で更新されると、JDeveloperはオフライン・データベース表とデータベース内の表とのリンクを追跡できません。これを回避するには、データベースからオフライン・スキーマ・オブジェクトをリフレッシュする必要があります。
ファイルを作成するには、次のようにします。
コンテキスト・メニューのショートカットを使用するには、次のようにします。
「アプリケーション」ウィンドウで、1つ以上のオフライン・データベース定義を右クリックして、「生成」を選択します。
または、
データベース・ダイアグラムで、モデリングされたデータベース定義を1つ以上選択して右クリックし、「データベースとの同期化」→「生成」を選択します。
JDeveloperでは、名前が変更されたオフライン・データベース・オブジェクト(表など)またはサブオブジェクト(列や制約など)を追跡する機能が制限されています。状況によっては、JDeveloperでは名前が変更されていないデータベース・オブジェクトが削除され、新しい名前を使用して新規データベース・オブジェクトが作成されます。この結果、データの損失に繋がる可能性があります。このような状況の発生を回避するために、このような可能性があることに注意する必要があります。
データベース接続に対してオフライン・データベース・オブジェクトが生成される場合、このような状況が発生する可能性があります。この場合、オフライン・データベース・オブジェクトまたはサブオブジェクト(列や索引など)の名前を変更してから、データベース接続に対して変更済のオフライン・データベース・オブジェクトを生成すると、データベースでは、元の名前のオブジェクトが削除され、新しい名前を使用した新規オブジェクトが作成されます。
データの損失に繋がる可能性のある別の状況として、オブジェクトをデータベース接続からリバース・エンジニアリングした後で、オフライン・データベース・サブオブジェクトの名前を変更する場合があります。この場合、データベース接続に対する生成を初めて行う際に、データベース・サブオブジェクトが正しく更新されます。ただし、データベース接続に対する2回目の生成を行おうとすると、元の名前のサブオブジェクトが削除され、新しい名前の新規データベース・サブオブジェクトが作成されます。このような結果になるのは、「プロジェクトにコピー」では、オンライン・サブオブジェクトに対する内部参照内の元の名前が使用されるためです。
JDeveloperでは、オフライン・データベースとそのオブジェクトに関する多くのレポートを使用できます。また、オフライン・データベース・オブジェクト用として独自のユーザー定義レポートを作成することもできます。
JDeveloperには一連の事前作成レポート定義が用意されていますが、独自のレポート定義を定義することもできます。
事前作成レポートを直接使用してオフライン・データベースに関する情報を提供することも、これらのレポートを変更して特定の要件に合うレポートを作成することもできます。
事前作成レポートを作成した後、レポートに対する問合せを構成するSQLを調べて、必要に応じてこれを変更できます。また、レポートの実行時に呼び出されるレポート問合せにパラメータを設定することもできます。
事前作成レポートを使用すると、オフライン・データベースに対する次の問合せを提供する有用なレポートを簡単に入手できます。
OBJECT_COUNT: オブジェクト・タイプごとにスキーマ・オブジェクトの数をリストします。
OBJECT_LIST: オフライン・データベースのすべてのスキーマ・オブジェクトをリストします。
TABLE_COLUMNS: すべての表を列情報とともにリストします。
TABLE_COLUMN_COUNT: すべての表を列数とともにリストします。
TABLE_NO_PKS: 主キーが定義されていないすべての表を表示します。
「事前作成レポート」ウィザードを実行すると、選択した各事前作成レポートの個別ファイルが指定した場所に生成され、このファイルが「アプリケーション」ウィンドウ内の「リソース」の下に表示されます。
注意:
現在のプロジェクトの外部にあたる場所を指定した場合、レポートは生成されますが、「アプリケーション」ウィンドウには表示されません。これらのファイルの名前はpre-built-report.reportになり、これらはXMLファイルとして構成されます。
事前定義レポートの使用方法:
「アプリケーション」ウィンドウで、アプリケーションとプロジェクトを展開します。
オフライン・データベースを右クリックして、「新規」を選択し、「新規ギャラリ」を表示します。
「新規ギャラリ」で、「データベース層」を開き、「オフライン・データベース・オブジェクト」を選択します。
「事前作成レポート」を選択し、「事前作成レポート」ウィザードを起動します。
生成するレポートを選択し、必要に応じて「次へ」をクリックし、レポートを実行するオフライン・データベースを変更します。
「終了」をクリックします。選択したレポートが「アプリケーション」ウィンドウ内のオフライン・データベース・ノードの下に表示されます。
事前定義レポートを編集するには、次のようにします。
事前作成レポートを実行するには、次のようにします。
「アプリケーション」ウィンドウでレポートを右クリックし、「実行」を選択します。指定したオフライン・データベースに対してレポートが実行されます。結果は、「レポート・ログ」ウィンドウ(デフォルト)に表示されるか、「レポートの編集」ダイアログの「レポートの公開」ページで選択した場所および書式で表示されます。
独自のレポート定義を定義できます。問合せを最初から定義することも、既存のレポートまたは事前作成レポートの1つを基準として新規レポート定義を定義することもできます。
レポート定義のみを作成するよう指定できます。または、レポート定義の実行時にカンマ区切りのファイルを作成したり、書式設定されたHTML文書を作成するよう指定できます。
HTML文書の生成を選択する場合、必要に応じて、CSSファイルが使用されるよう指定したり、HTML文書の本体を書式設定するデフォルトのボイラープレート・テキストを編集できます。
レポートを作成するには、次のようにします。
レポートを実行するには、次の手順を実行します。
「アプリケーション」ウィンドウでレポートを右クリックし、「実行」を選択します。指定したオフライン・データベースに対してレポートが実行されます。結果は、「レポート・ログ」ウィンドウ(デフォルト)に表示されるか、「レポートの編集」ダイアログの「レポートの公開」ページで選択した場所および書式で表示されます。
JDeveloperには、レポートの書式設定時に役に立つボイラープレート・コードが用意されており、これには3つの新規HTMLタグが含まれます。
<report/>: レポート出力を定義します。
<query/>: レポートの生成に使用される問合せのテキストを定義します。
<rows/>: レポートの行数です。
用意されているボイラープレート・コードは、次のとおりです。
<h1>Table Report</h1> <p>Query used:</p> <pre><query/></pre> <p>The report output is:</p> <report/> <p>Report complete. <rows/> row(s) returned.</p>
「レポートの作成」または「レポートの編集」ダイアログでこれを編集すると、レポートをカスタマイズできます。
「UMLクラス・モデルからのオフライン・データベース・オブジェクト」ウィザードを使用して、UMLクラス・モデルをオフライン・データベース・モデルに変換できます。詳細は、「UML-オフライン・データベース変換」を参照してください
JDeveloperには、バージョン管理ソフトウェア・システムなど、チームでの開発のための様々な機能が用意されています。詳細は、「ソース・コントロールを使用したアプリケーションのバージョニング」を参照してください。
ソース・コントロール・システムを使用してオフライン・データベース定義のバージョン管理や共有ができます。JDeveloperには、オフライン表定義を使用するために最適化された比較ツールが用意されています。
任意のオフライン・データベース・オブジェクトを比較できます。前のバージョンと比較したり、完全バージョン履歴を取得し、任意の2つのバージョンを比較できます。
名前変更およびオブジェクトのアイデンティティを追跡できます。
一貫性を確認できます。次はその例です。
キー内で使用される列が削除されないようにします。
存在しない列を使用する制約は追加されません。
主キー列はオプションにできません。
注意:
たとえば、列に対する制約の依存関係を確認する場合、ソース・コントロール・システムを使用してオフライン・データベースのバージョンを比較することのみが可能ですが、「データベース・オブジェクトからSQLを生成」ウィザードを使用して変更をデータベースにコミットする前に変更を手動で調整できます。詳細は、「データベースに対するオフライン・データベース・オブジェクトの生成方法」を参照してください。
「データベース」ウィンドウでデータベース接続にデータベース・オブジェクトを作成できます。
データベース・オブジェクトを作成するには、データベース接続が必要です。また、この接続の作成に使用するユーザー名は、適切な権限(CREATE、DROPなど)を付与されるか、接続作成権限を持つ管理者などのロールを付与されることにより、データベース・オブジェクトを作成するための権限を持つ必要があります。
Oracle Databaseオブジェクトの詳細は、『Oracle® Database SQL言語リファレンス』を参照してください。
「データベース」ウィンドウでデータベース・オブジェクトを作成するには、次のようにします。
必要に応じて、「ウィンドウ」→「データベース」→「データベース」ウィンドウを選択します。
「IDE接続」または「application」を開き、データベース接続を開きます。
作成するデータベース・オブジェクト・タイプのノードにナビゲートします。右クリックし、ポップアップ・メニューから「新規オブジェクト」を選択します。
または、「ファイル」→「新規」をクリックして、「新規ギャラリ」を開きます。「新規ギャラリ」で、「データベース層」を開き、「データベース・オブジェクト」を選択します。作成するオフライン・データベース・オブジェクト・タイプを選択し、「作成」ダイアログまたはウィザードを起動します。
「オブジェクトの作成」ダイアログを完了します。
詳細を参照するには、「オブジェクトの作成」ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。
データベース・オブジェクトを編集するには、次のようにします。
必要に応じて、「ウィンドウ」→「データベース」→「データベース」ウィンドウを選択します。
「IDE接続」または「application」を開き、次にデータベース接続を開き、編集するノードおよびデータベース・オブジェクトにナビゲートします。
右クリックし、「編集」を選択し、「オブジェクトの編集」ダイアログを開きます。
詳細を参照するには、「オブジェクトの作成」ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。
データベース・オブジェクトを削除するには、次のようにします。
JDeveloperでは、データベースとそのオブジェクトに関する多くの事前定義レポートを使用できます。また、独自のユーザー定義データベース・レポートを作成できます。
データベースに最新情報を問い合せるデータベース・レポートは、「データベース・レポート」ウィンドウから実行します。詳細は、「「データベース・レポート」ウィンドウの使用」を参照してください。
データベースにオフライン表定義または表を作成して日時のデフォルト値を使用すると、JDeveloperではこれらの値が検証されます。日付の場合は、次の値を使用できます。
Oracle日付関数
引用符で囲んだ書式DD-MON-RRの文字列。各項目の意味は次のとおりです。
月にはフルスペルの表記を使用できます。
年は省略せずに表記できます(2011など)。
セパレータ(-)は省略できます。また、英数字以外を空白と組み合せて使用することもできます。
タイムスタンプには、書式DD-MON-RR HH.MI.SSXFF AM TZRの文字列を引用符で囲んで使用できます。各項目の意味は次のとおりです。
月にはフルスペルの表記を使用できます。
年は省略せずに表記できます(2011など)。
時間と分は必須です。
秒、ミリ秒、AM/PMおよびタイム・ゾーンはオプションです。
セパレータ(-)は省略できます。また、英数字以外を空白と組み合せて使用することもできます。
データベースから表をリバース・エンジニアリングするときに、日付値と時間値が前述のルールに従って検証されます。検証が原因でOracle Databaseから表をリバース・エンジニアリングできない場合は、検証機能をオフにできます。
日付と時間の検証をオフするには、次のようにします。
「ツール」→「プリファレンス」→「データベース」を選択します。
「日付と時間のデフォルト値を検証」の選択を解除します。
データベース・オブジェクトおよびオフライン・データベース定義を、SQLスクリプト、Oracle Warehouse Builderにインポート可能なOracle MetaBase (OMB)ファイル、またはSXMLファイルに生成できます。
SQLスクリプトは、オフライン・データベース定義またはデータベース・オブジェクトから作成できます。
SQLスクリプトは、script1.sql
というデフォルト名で生成されます。SQLスクリプトはSQLワークシートで開き、「アプリケーション」ウィンドウ内の現在のプロジェクトに対する「リソース」ノードの下に表示されます。
「データベース」ウィンドウまたは「アプリケーション」ウィンドウからSQLスクリプトを作成するには、次のようにします。
「表示」→「データベース」→「データベース」ウィンドウを選択して、データベース接続とスキーマを展開し、スクリプトの作成元とするデータベース・オブジェクトを右クリックします。
または、
「ウィンドウ」→「アプリケーション」を選択して、スクリプトの作成元とするオフライン・データベース定義に移動し、スクリプトの作成元とするデータベース・オブジェクトを右クリックします。
「生成」→「SQLスクリプト」を選択します。
「データベース・オブジェクトからSQLを生成」ウィザードが開きます。このウィザードで、スクリプトの作成方法の詳細を指定します。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。
「終了」をクリックすると、スクリプトが作成され、ソース・エディタで開きます。
「新規ギャラリ」からSQLスクリプトを作成するには、次のようにします。
「アプリケーション」ウィンドウのオフライン表から、Oracle Warehouse Builder用のOracle MetaBase (OMB)スクリプトとして書式設定されたファイルを作成できます。
このファイルは、omb_scriptn.tcl
というデフォルト名で生成されます。このファイルはソース・エディタで開き、「アプリケーション」ウィンドウ内の現在のプロジェクトに対する「リソース」ノードの下に表示されます。
「アプリケーション」ウィンドウからOMBスクリプトを作成するには、次のようにします。
「ウィンドウ」→「アプリケーション」を選択し、ファイルの作成元とする1つ以上のオフライン表に移動します。
右クリックし、「生成」→「OMBスクリプト」を選択します。
ファイルが作成され、ソース・エディタで開きます。
「新規ギャラリ」からOMBスクリプトを作成するには、次のようにします。
「アプリケーション」ウィンドウのオフライン表からSXMLファイルを作成できます。
object-name_object-type.xml
という名前のスクリプトがオフライン・データベース・オブジェクトごとに作成されます。各スクリプトはXMLソース・エディタで開き、「アプリケーション」ウィンドウ内のオフライン・データベース・ノードの下に表示されます。
「アプリケーション」ウィンドウからSXMLファイルを作成するには、次のようにします。
「ウィンドウ」→「アプリケーション」を選択し、スクリプトの作成元とする1つ以上のオフライン表に移動します。
右クリックし、「生成」→「SXML」を選択します。
ファイルが作成され、ソース・エディタで開きます。
「新規ギャラリ」からSXMLファイルを作成するには、次のようにします。