データベース開発者のための Oracle SQL Developer Oracle ホワイト ペーパー 2007 年 6 月
データベース開発者のための Oracle SQL Developer はじめに... 3 対象者... 3 おもな利点... 3 アーキテクチャ... 4 おもな特長... 4 接続の管理... 4 SQL Worksheet での構文の実行... 5 データベースの参照... 6 スキーマ オブジェクトの作成および編集... 7 SQL 文の生成... 7 PL/SQL 開発... 7 コード エディタでの PL/SQL の作成および編集... 7 PL/SQL プロシージャ ファンクション パッケージの実行... 8 PL/SQL のデバッグ... 9 その他の PL/SQL デバッグ機能... 10 リモートでの PL/SQL のデバッグ... 10 データベースのレポート... 11 Oracle Migration Workbench... 11 概要... 11 サポートするデータベース... 12 移行プロセス... 12 コード変換... 12 拡張性... 12 基本的な拡張機能... 13 レポートの共有... 13 タブの追加... 13 結論... 13 データベース開発者のための Oracle SQL Developer 2
データベース開発者のための Oracle SQL Developer はじめに Oracle SQL Developer は 生産性の向上とデータベース開発作業の簡素化を実現する グラフィカルなインタフェースを備えた無償のツールです Oracle データベース開発者向けに設計されたこのツールを使用すると 開発サイクルを簡素化できます また SQL や PL/SQL のコードを開発したりデバッグしたりするために サード パーティ製のツールを購入する必要性が減少します Oracle SQL Developer を使用すると データベース オブジェクトの参照 作成 変更 SQL 文の実行 PL/SQL の編集とデバッグ 多くの事前定義のレポートの実行 ユーザー固有のレポートの作成などが可能になります また ユーザーは MySQL Microsoft SQL Server Microsoft Access などの Oracle 以外のデータベースで オブジェクトやデータを参照するためにデータベース接続を作成したり これらのプラットフォームから Oracle へオブジェクトやデータを移行したりすることも可能です このツールの追加は生産性を改善し データベース開発者コミュニティの必要性をサポートすることへのオラクルの取組みをさらに示すものです Oracle SQL Developer が最初に製品リリースされたのは 2006 年 3 月のことです 最新版の Oracle SQL Developer リリース 1.2 は 2007 年 6 月より提供が開始されています このホワイト ペーパーは Oracle SQL Developer で利用できる多くの機能の概要を紹介します 対象者 Oracle SQL Developer は 業務のほとんどをデータベースに費やしているデータベース開発者のために設計されました また アプリケーション開発者および DBA もサポートします Oracle SQL Developer は データベース開発作業を簡素化し 開発者の生産性を向上させることができます おもな利点 Java で開発された Oracle SQL Developer は Windows Linux および Mac OS X 上で稼働します これは さまざまなプラットフォームを使用する開発者が増えている現状での大きな利点となります また 複数のプラットフォームをサポートすることで ユーザーはデータベース サーバーに Oracle SQL Developer をインストールし デスクトップからリモート接続してクライアント サーバーのネットワーク トラフィックを回避することも可能になります データベースへのデフォルト接続は JDBC Thin ドライバ経由となります そのため Oracle Home は必要ありません Oracle SQL Developer のインストールは ダウンロードした zip ファイルを解凍するだけです データベース開発者のための Oracle SQL Developer 3
ツールは Oracle Database 10g および Oracle9i DatabaseRelease 2 (9.2.0.1) 以降のすべてのリリースで利用できます さらに Oracle SQL Developer は Oracle Database 10g Enterprise Edition Standard Edition Standard Edition One といった Oracle Database 10g の全エディションでの稼働が保証されています アーキテクチャ Oracle SQL Developer は Oracle JDeveloper IDE を使用して Java で開発されました その意味で Oracle JDeveloper IDE に基づいて独自にブランド化された初めての製品と言えます この他 Windows クライアントをサポートする tools.jar が追加された JRE 1.5 をバンドルした別のディストリビューションも提供しています Windows 以外のクライアントであれば JDK 1.5 だけが必要です Oracle SQL Developer 1.2 は JDK 1.5(5.0) または JDK 6.0 での実行が保証されています おもな特長 接続の管理 Oracle SQL Developer では シンプルなダイアログを通じて格納されたデータベー ス接続を作成できます この接続を使用して データベースの参照 スキーマ オブジェクトの作成 非定型の SQL 文の実行と調整 データ ディクショナリに対するレポートの実行 PL/SQL の作成 実行 およびデバッグを行います データベースへのデフォルト接続は JDBC Thin ドライバ経由となります 接続ダイアログの Basic タブにあるフィールドにデータベースの詳細を入力するだけです ただし tnsnames.ora ファイルを設定している場合は 接続ダイアログの TNS タブにあるエイリアスを代わりに使用することもできます 図 1: 接続の管理接続数が多い場合は XML ファイルをエクスポートできます これは特に 別のクライアントに接続を複製する際に便利です インポートまたはエクスポートする場合 接続を複数またはすべて選択できます データベース開発者のための Oracle SQL Developer 4
新しいデータベース接続を作成する場合は パスワードを保存するか選ぶことができます パスワードは暗号化されますが マシン上のファイルと同様に 通常のファイル システムでのセキュリティ リスクが存在します その点ではパスワードを保存しない方が良い場合があります SQL Worksheet での構文の実行データベース接続を作成し それを用いて接続すると SQL Worksheet ウィンドウが自動的に開きます SQL Worksheetは SQL PL/SQL およびSQL * Plusコマンドの作成をサポートします 表の作成 データの挿入 トリガーの作成と編集 表からのデータの選択 データのファイルへの保存など SQL Worksheetと関連したデータベース接続で処理できる動作すべてを指定できます 複数の SQL 文を記述し 個別または同時に実行することもできます 文にカーソルを置き Execute Statement (F9) を選択すると 単一の文が実行され Results タブに結果が表示されます Run Script (F5) オプションを選択すると 選択ボックス内のすべての SQL 文が実行され 結果が Script Output タブの下に表示されます DBMS Output 文および OWA 文を含むすべてのスクリプトの出力結果は DBMS Output ペインおよび OWA Output ペインにそれぞれ表示されます Execute 文を用いて最後に実行されたコマンドのすべては SQL History リストに保存され 呼び出すことができます SQL History リストはセッション以外でも参照でき Oracle SQL Developer を再起動する際に再度開くことができます このほか SQL Worksheet では Autotrace 機能および Explain Plan 機能も提供されています Explain Plan アイコンからは 選択した SQL 文の実行計画を参照できます 追加調整を行う場合は Code Snippets ウィンドウが提供するオプティマイザ ヒントの一覧からワークシートにドラッグします スニペットとは SQL ファンクション オプティマイザ ヒント またはさまざまな PL/SQL プログラミング手法のようなコード片のことで ユーザーはこれらを PL/SQL エディタや SQL Worksheet にドラッグできます データベース開発者のための Oracle SQL Developer 5
図 2:Explain Plan の表示 データベースの参照データベース接続を作成すると Database Navigator を使ってデータベース スキーマ内のさまざまなオブジェクトを参照できるようになります たとえば 表 ビュー インデックス パッケージ プロシージャ ファンクション トリガー 型 シーケンス マテリアライズド ビューとマテリアライズド ビュー ログ シノニムとパブリック シノニム データベース リンク ディレクトリがあります また データベース接続では その他のユーザーやリサイクル ビン内のコンテンツを表示できます データベースを参照する重要な側面は 一目でオブジェクトの定義を確認できることにあります たとえば ナビゲータ内の表を選択すると 列 制約 権限 統計 トリガー およびその他多くの詳細すべてが タブ化されたウィンドウに分かりやすく表示されます また 詳細な検証をするために 表からデータを素早く取得できます 図 3: 表ビューアを使用したデータベースの参照 データベース開発者のための Oracle SQL Developer 6
Data タブでは 新しい列を追加したり データを更新して変更をデータベースに送信したりできます データ グリッドからのデータの更新には LOB 列の更新も含まれます 製品全体にあるすべてのデータ グリッドは INSERT 文 SQL Loader CVS テキスト XML HTML XLS など さまざまな形式にデータをエクスポートするオプションを提供します このほか XLS 形式でもデータをインポートできます スキーマ オブジェクトの作成および編集 Oracle SQL Developer では SQL Worksheet の SQL 文を実行することで さまざまなスキーマ オブジェクトを作成できます 他に コンテキスト メニューからもスキーマ オブジェクトを作成できます オブジェクトを作成すると エディット ダイアログまたは数あるコンテキスト関連のメニューで編集できます 図 4: オブジェクトの作成 SQL 文の生成前述したとおり Connections Navigator ではデータベース オブジェクトの作成 編集 および更新を行うことができます 新しいオブジェクトが作成されるか既存のオブジェクトが編集されると それらを DDL から確認できます スキーマ内で 1 つ以上のオブジェクトに対して完全な DDL を作成する場合は Export DDL オプションを利用します PL/SQL 開発 コード エディタでの PL/SQL の作成および編集 Oracle SQL Developer は カスタマイズ可能な PL/SQL 構文の強調表示機能に加えて ブックマーク コード コンプリーション コード フォールディング 検索 置換などの一般的なエディタ機能を含む PL/SQL プログラム ユニットで使用する全機能が搭載されたエディタが含まれています エディタで提供されるコンプリーション インサイトは 部分的に記述されたコードに対してポップアップ リストを表示し 選択しながら完成することができる機能です データベース開発者のための Oracle SQL Developer 7
たとえば [Ctrl] キーを押しながら [Space] キーを押し DBMS_OUTPUT. と入力すると そのパッケージ内のメンバーのリストから選択できるようになります デフォルトでは ピリオド (.) を入力してから 1 秒以上が経過すると コード インサイトは ([Ctrl] キー +[Space] キーを押さなくても ) 自動的に起動します 図 5: コード コンプリーションを表示する PL/SQL エディタコード エディタで PL/SQL コードを編集すると コンパイルまたはデバッグ用のコンパイルができます ( コンパイル用デバッグは デバッグ用にコンパイルされた PL/SQL ライブラリ付き PL/SQL をコンパイルします ) コンパイルでは データベースに再コンパイルするためのソース コードを送信し プログラムを保存します コンパイル中に発生した構文エラーは Log ウィンドウに表示されます さらに ナビゲータ内のアイコンは マージン内のマーカーと同様 無効なコードを示します 構文エラーのソースへは Log ウィンドウ内のエラー メッセージをダブル クリックするか マージン内のマーカーを使用して移動します PL/SQL プロシージャ ファンクション パッケージの実行 PL/SQL プロシージャ ファンクション およびパッケージは ナビゲータ内のオブジェクトを右クリックして コンテキスト メニューから Run を選択することで実行できます ダイアログには引数の詳細が表示され ファンクションに関しては選択したオブジェクトの戻り値が表示されます 選択したオブジェクトがパッケージの場合 ダイアログにはパッケージの仕様内で定義されたプロシージャおよびファンクションのリストが表示されます これらのプロシージャまたはファンクションから選択して実行できます データベース開発者のための Oracle SQL Developer 8
図 6: プロシージャの引数を表示したダイアログ Run PL/SQL ダイアログを起動すると PL/SQL プログラム ユニットを呼び出すコードが自動的に生成されます このコードのパラメータの初期化や受け渡しなどは ダイアログ内で直接編集できます さらに 編集したコードをプログラムで次に実行する際に再利用できるよう 保存することもできます DBMS_OUTPUT を呼び出す PL/SQL プログラムを実行すると 結果は Log ウィンドウに表示されます 同じように ファンクションの戻り値や OUT パラメータの値も Log ウィンドウに表示されます PL/SQL のデバッグ Oracle SQL Developer は Oracle9i Database Release 2 および Oracle Database 10g に対して PL/SQL デバッグを完全サポートします おもな PL/SQL デバッグ機能は 次のとおりです プログラム実行の制御 :Oracle SQL Developer の PL/SQL デバッガは Step Into Step Over Step Out Run to Cursor Pause Resume および Terminate を含むプログラム実行の制御コマンドを多数提供します 変数の表示および編集 : デバッガが一時停止しているとき Smart Data ウィンドウ Data ウィンドウ Watches ウィンドウ または Inspector ウィンドウから変数を確認および編集できます カスタマイズ可能なブレーク ポイント :Oracle SQL Developer のブレーク ポイントは 高度な設定が可能です PL/SQL デバッグでは ソース ブレーク ポイント ( 特定のプログラム ユニット内にある実行可能なコードの特定の行と関連 ) および例外ブレーク ポイント ( 取り扱っていない例外 または特定の Oracle の例外と関連 ) を使用できます また PL/SQL の条件ブレーク ポイントを定義し ブレーク ポイントの動作をカスタマイズすることも可能です たとえば デバッガを一時停止したり ( デフォルト ) ビープ音を鳴らしたり テキスト ファイルに頻度をログしたり その他のブレーク ポイントを有効化または無効化したりすることができます データベース開発者のための Oracle SQL Developer 9
PL/SQL デバッグ情報は Oracle SQL Developer のいくつかのウィンドウから提供 されます 次のリストは デバッグ中に提供される情報の例を示しています コード エディタ : 実行ポイントを表示します Flyover ツール チップには ポインタの下に変数の名前と値を表示します Breakpoints ウィンドウ : 定義されたブレーク ポイントのリストです このウィンドウで新しいブレーク ポイントを追加するか または既存のブレーク ポイントの動作をカスタマイズできます Data ウィンドウ : 現在範囲となっている変数すべてを表示します 表示されるのは パッケージ変数 パッケージ ボディ変数 現在のプロシージャまたはファンクションで宣言されている変数 ローカル変数 ( ネスト化されたブロックで宣言されたもの または非明示的に宣言されたもの ) などです Watches ウィンドウ : ウィンドウのコンテキスト メニューで Add Watch を選択して式を入力したか その他のウィンドウ (Data ウィンドウなど ) から Watches ウィンドウへ変数をドラッグするなどして Watches ウィンドウに追加した式や変数を表示します Stack ウィンドウ : 実行スタックを表示します Stack ウィンドウを使用して デバッガ内のコンテキストを変更できます その他の PL/SQL デバッグ機能 PL/SQL コレクション :DBMS_DEBUG API では 表 レコード カーソルなどの PL/SQL コレクションのサポートを制限しました Oracle SQL Developer で Oracle9i Release 2 データベース内の PL/SQL をデバッグすることで コンポジット PL/SQL 構造へフル アクセスできます たとえば PL/SQL プログラムがレコード内の PL/SQL 表を使用している場合 Data ウィンドウ内の表オブジェクトを開いてレコードを表示し レコードを開いてフィールドを表示してからフィールドを選択すれば すぐに値を編集できます リモートでのデバッグ :JDWP を実装したことで Oracle SQL Developer はサーバー側のコードに対してリモートでデバッグする機能を利用できるようになりました PL/SQL をリモートでデバッグするには Oracle SQL Developer デバッガ リスナーを起動し デバッグしたいデータベース セッションからリスナーにアタッチさせます PL/SQL デバッグを有効にする場合 必要な権限を確認する必要はありません 詳しくは Oracle SQL Developer のヘルプを参照してください リモートでの PL/SQL のデバッグ Oracle SQL Developer を用いてローカルで PL/SQL をデバッグするには デバッガを一時停止させたいブレーク ポイントを設定してから PL/SQL プロシージャ ファンクション またはパッケージをナビゲータで選択し Debug ボタンを押します この場合 Oracle SQL Developer はユーザーの介入なしでデバッグ セッションを開始し 接続してからブレーク ポイントに達すると一時停止します ローカルでのデバッグを別の方面から見ると Oracle SQL Developer はデバッグを起動するクライアントと言えます データベース開発者のための Oracle SQL Developer 10
PL/SQL をリモートでデバッグするということは たとえば PL/SQL の Web アプリケーション OCI プログラム SQL*Plus セッションなど Oracle SQL Developer の外部にあるクライアントからデバッグ動作を起動することと同じです この場合 Oracle SQL Developer が実行すべき作業のいくつかをユーザーが主導で作業する必要があります データベースのレポート Oracle SQL Developer は データベースおよびそのオブジェクトに関する多くの定義済みレポートを提供します どのレポートも SQL Worksheet に渡すことで さらに編集を加えることができます ほとんどのデータベース開発者は 実行したい自分だけのレポート一式を持っています Oracle SQL Developer であれば 繰り返し使用できるユーザー定義のレポートを作成および保存できます 図 7: クリック スルー レポート Oracle Migration Workbench 概要 Oracle SQL Developer 1.2 には 直感的に操作可能な Oracle Migration Workbench が実装されています これは ポイント アンド クリックするだけで スキーマ オブジェクト トリガー ストアド プロシージャなどを含むサード パーティのデータベースを Oracle9i Database または Oracle Database 10g へ移行できるツールです データベース開発者のための Oracle SQL Developer 11
サポートするデータベース現行の Oracle Migration Workbench は Microsoft SQL Server Microsoft Access および MySQL から Oracle への移行をサポートしています これらデータベースでサポートするリリースは Microsoft Access versions 97 2000 2002/XP および 2003 Microsoft SQL Server 7 2000 および 2005 MySQL versions 3 4 5 です 移行プロセス Oracle Migration Workbench は データベース移行を簡単かつ素早く実行するためのオプションを提供しています このほか 段階的移行も提供しており ユーザーは移行プロセスの各段階を管理することができます これらの方法は いずれも移行リポジトリを利用します Oracle Migration Workbench は サード パーティのデータベースから情報を抽出し リポジトリ内に格納します それが ソース モデルです ソース モデルは Captured Objects ウィンドウから編集できます ソース モデルに問題がなければ Oracle Migration Workbench で同等の Oracle モデルを生成します これもリポジトリ内に格納されており Converted Objects ウィンドウに表示されます このソースも 必要に応じて確認したり編集したりできます ソース モデルまたは Oracle モデルに加えた変更は いずれも実行中のデータベースとは別に実行されます これは 本番環境ではなくリポジトリ内で実行されているからです Oracle モデルに問題がなければ Oracle Migration Workbench で DDL スクリプトを生成し Oracle データベースに対して実行します 最後に サード パーティのデータベースを Oracle データベースに移行するかどうかのオプションを選択します コード変換 Oracle Migration Workbench は Transact SQL または Microsoft Access SQL で定義され 格納されたプログラム プロシージャ ファンクション トリガー 制約 およびビューの変換をサポートします Translation Scratch Editor: これは Transact SQL および Microsoft Access SQL のためのインタラクティブなエディタ機能で コードを PL/SQL または SQL へ変換します 単一文または SQL スクリプト全体を変換できます Translation Difference Viewer: これは 変換した SQL を確認するためにインラインの違いを表示するビューアで 変換した SQL を色分けして比較し ソース コードと変換コードの意味類似性を表示します 拡張性 Oracle SQL Developer は Oracle JDeveloper IDE で開発されました つまり Oracle 内および Oracle 外から拡張 API を利用できるということです さらに 基本的なスペル チェッカーからより複雑な拡張まで 特定の機能の一部を利用したいチーム ユーザーまたは個人ユーザーも API を使用して希望する機能を追加できます 拡張は チーム間でのレポートの共有 コンテキスト メニューやタブの追加といった単純なものから ウィザード主導のユーティリティといった複雑なものまでさまざまです また SQL の知識しかない人も 上級者で XML の知識がある人でも ポイント アンド クリックにより簡単に拡張を作成できます データベース開発者のための Oracle SQL Developer 12
基本的な拡張機能 レポートの共有共有レポート フォルダの作成は Oracle SQL Developer に追加できる簡単な拡張です コードを記述したり この目的のための " フック " を使用したりする必要がないためです レポートを共有するには まずレポートを個別に またはレポートのフォルダをファイルへエクスポートします ファイルは レポートを再利用するユーザーの誰もがアクセスできるサーバー内に置きます Tools Preferences の順にクリックし User Defined Extension 型を REPORT に設定してファイルの場所を追加します Oracle SQL Developer を再起動すると 新しく Shared Reports ノードが表示されるようになります タブの追加 Oracle SQL Developer にコンテキスト メニューまたはタブを追加するには SQL と XML の両方の知識が必要です SQL は実行するためのコマンドを XML はコマンドのフレームワークを提供します 表定義に Column Comments を表示するためのタブを追加するには colcomm.xml というファイルを作成し 次のコードを追加します <items> <item type="editor" node="tablenode" vertical="true"> <title><![cdata[column Comments]]></title> <query> <sql><![cdata[select * from ALL_COL_COMMENTS where owner = :OBJECT_OWNER and table_name = :OBJECT_NAME]]></sql> </query> </item> </items> 同じように Preferences ダイアログを使用し User Defined Extension を新しく追加します User Defined Extension 型を EDITOR に設定します colcomm.xml ファイルの場所を設定します Oracle SQL Developer を再起動して 新しい拡張を登録します 結論 Oracle SQL Developer は データベース開発者がデータベースの参照 問合せ 更新 レポートの実行 PL/SQL の作成 編集 およびデバッグをするための堅牢なクライアント ツールです Oracle SQL Developer はすべて Java で開発されているため さまざまなプラットフォームで実行でき Windows クライアントを使用してリモート サーバーから Oracle SQL Developer へリモートでアクセスできます このように ネットワーク上ではなくサーバーで問合せを実行することで ネットワーク トラフィックを削減します このホワイト ペーパーでは データベース開発者をサポートする Oracle SQL Developer のさまざまな機能を紹介しました Oracle SQL Developer について詳しくは 以下のサイトを参照してください US OTN( 英語 ): http://www.oracle.com/technology/products/sql_developer/index.html OTN-Japan : http://www.oracle.com/technology/global/jp/products/database/sql_developer/index.html データベース開発者のための Oracle SQL Developer 13
データベース開発者のための Oracle SQL Developer 2007 年 6 月著者 :Sue Harper Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口 : 電話 :+1.650.506.7000 ファクシミリ :+1.650.506.7200 www.oracle.com Copyright 2003, Oracle. All rights reserved. 本文書は情報提供のみを目的として提供されており ここに記載される内容は予告なく変更されることがあります 本文書は一切間違いがないことを保証するものではなく さらに 口述による明示または法律による黙示を問わず 特定の目的に対する商品性もしくは適合性についての黙示的な保証を含み いかなる他の保証や条件も提供するものではありません オラクル社は本文書に関するいかなる法的責任も明確に否認し 本文書によって直接的または間接的に確立される契約義務はないものとします 本文書はオラクル社の書面による許可を前もって得ることなく いかなる目的のためにも 電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません Oracle は米国 Oracle Corporation およびその子会社 関連会社の登録商標です その他の名称はそれぞれの会社の商標です