NetBeans IDEからのOracleデータベースへの接続

NetBeans IDEには、Oracleデータベースのサポートが組み込まれています。IDE内から簡単に接続を確立してデータベースの操作を開始できます。このチュートリアルでは、無償で開発、デプロイおよび配布できる小規模なデータベースであるOracle Database 10g Express Edition (Oracle Database XE)のローカル・インストールの使用方法を説明します。

このドキュメントでは、NetBeans IDEからOracle Database XEのローカル・インストールへの接続の設定、IDEの組込みのSQLエディタを使用したデータベース・データの処理、およびOCI 8 PHP拡張を有効にして、Oracleデータベースに接続するPHPコードを記述する方法について説明します。

目次

このページの内容は、NetBeans IDE 7.0、7.1、7.2、7.3および7.4に適用されます

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE 7.1、7.2、7.3、7.4、Java EEバンドル版
Java Development Kit (JDK) バージョン6または7
Oracle Database XE 10 g Express Edition
Oracle JDBCドライバ ojdbc6.jar

始める前に

このチュートリアルを始める前に、次を考慮してください。

  • このチュートリアルでは、ローカル・システムにインストールされているOracle Database XEインスタンスに接続する方法を説明しますが、その手順は、リモート・インスタンスに接続する場合にも適用できます。ローカル・インスタンスに接続する場合、Oracle Database XEをダウンロードして、インストールする必要があります。インストール・プロセスは単純で直観的ですが、質問がある場合は、使用しているプラットフォームのOracle Database XEインストール・ガイドを参照してください。
  • Oracle JDBCドライバには、OCIとJDBC Thinの2つのカテゴリがあります。
    • OracleのJDBC Thinドライバは、Javaに基づいており、プラットフォームから独立しています。このスタンドアロン・ドライバは他のOracleライブラリの存在を必要とせず、Oracleデータベースに直接接続できます。このチュートリアルでは、このドライバを使用して、Oracleデータベースへの接続方法を説明します。チュートリアルを進める前に、ojdbc6.jarファイルをダウンロードしてシステムに保存する必要があります。

      Windowsユーザーに対する注意: Windowsでは、ダウンロード・ファイルの拡張子が.jarから.zipに変わることがあります。ただし、それは.jarファイルのままです。ファイルの名前を.jarに変更できます。

    • OracleのOCIドライバは、Oracleのネイティブ・クライアント・ライブラリを使用してデータベースと通信します。これらのライブラリは、Oracle Instant Clientの一部として取得します。ほとんどの場合はThinドライバで十分ですが、NetBeans IDEでのOCI JDBCドライバの使用の手順に従って、OCIドライバを使用する必要がある場合もあります。
      OCIドライバの使用のよい例は、Oracle Instant Clientライブラリを使用して、PHPアプリケーションからリモートOracleデータベースにアクセスすることです。PHP用にOCI 8拡張を有効にする方法については、このチュートリアルのOCI 8およびPHP向けのNetBeans IDEの項を参照してください。
  • これまでOracle Database XEを使用したことがない場合、Oracle Database XE入門チュートリアルを実行してください。

GlassFishユーザーに対する警告: データベースの管理に使用するOracle Database XEホーム・ページでは、デフォルトでポート8080を使用します。Oracle GlassFishアプリケーション・サーバーもデフォルトでポート8080を使用します。両方のプログラムを同時に実行すると、Oracle Database XEは、ブラウザがlocalhost:8080でGlassFishにアクセスしないようにブロックします。この場合、GlassFishにデプロイされたすべてのアプリケーションが404を返します。単純な解決方法は、GlassFishを実行する場合に、Oracle Database XEが必要なければ、それを停止することです。同時に両方を実行する必要がある場合は、Oracle Database XEが使用するデフォルトのポートを変更します。これは、GlassFishのデフォルトのポートを変更するよりも簡単です。Oracle Database XEのデフォルトのポートの変更についての手順は、Oracleフォーラムのものを含めて、インターネット上に多く掲載されています。

Oracleデータベースへの接続の確立

この課題では、データベースへの新しい接続をテストし、作成します。

  1. Oracleデータベースを起動します。
  2. 「サービス」ウィンドウ(「ウィンドウ」>「サービス」またはCtrl-5、Macの場合は⌘-5)を開きます。「サービス」ウィンドウで、「データベース」ノードを右クリックし、「新規接続」を選択します。
    「データベース」ノードのポップアップ・メニューにある「新規接続」項目
  3. 新規接続ウィザードで、「ドライバ」ドロップダウン・リストの「Oracle Thin」を選択します。
  4. 「追加」をクリックし、前にダウンロードしたojdbc6.jarファイルを見つけます。「次」をクリックします。
  5. ウィザードの「接続をカスタマイズ」パネルで、次の値を入力して、「次」をクリックします。
    名前
    ドライバ名 Oracle Thin (サービスID (SID))
    ホスト localhostまたは127.0.0.1
    注意: リモート接続の場合、データベースがインストールされているマシンのIPアドレスまたは解決可能なホスト名を指定します。
    ポート 1521 (デフォルト)
    サービスID (SID) XE (Oracle Database XEのデフォルトのSID)
    注意: リモート・データベースに接続する場合、データベース管理者に、データベースSIDの提供を依頼します。
    ユーザー名

    ユーザー名を入力してください。
    チュートリアルの目的のため、「system」(デフォルトのデータベース管理者アカウント)と、データベースのインストール時に使用したパスワードを入力します。

    パスワード 選択したユーザー名のパスワードを入力します。
  6. 「接続をテスト」をクリックし、IDEがデータベースに接続できることを確認します。「次」をクリックします。

    成功した場合、ウィザードにメッセージ「接続に成功しました」が表示されます。

    確立された接続
  7. 「スキーマを選択」ドロップダウン・リストの「HR」を選択します。「終了」をクリックします。

    注意: NetBeansでHRスキーマにアクセスする前に、それをロック解除する必要があります。HRデータベースのロック解除については、Oracle Database XE入門チュートリアルで説明されています。

「サービス」ウィンドウの「データベース」ノードの下に新しい接続が表示されます。それを展開し、データベース・オブジェクトの構造の参照を開始できます。
接続ノードの表示名を変更します。ノードのポップアップ・メニューから「プロパティ」を選択し、「表示名」プロパティの省略符号ボタンをクリックします。「表示名」として「OracleDB」と入力し、「OK」をクリックします。

確立された接続

注意:前述の手順では、ローカル・データベース・インスタンスに接続する場合について説明していますが、リモート・データベースに接続する場合の手順も同じです。唯一の違いは、ホスト名としてlocalhostを指定するかわりに、Oracleデータベースがインストールされているリモート・マシンのIPアドレスまたはホスト名を入力することです。

Oracleデータベースのデータの操作

データベースと対話する一般的な方法は、SQLエディタまたはデータベース管理インタフェースを使用して、SQLコマンドを実行することです。たとえば、Oracle Database XEにはブラウザ・ベースのインタフェースがあり、データベースの管理、データベース・オブジェクトの管理、およびデータの操作を行うことができます。

Oracleデータベース管理インタフェースから、ほとんどのデータベース関連タスクを実行できますが、このチュートリアルでは、NetBeans IDEでSQLエディタを使用して、これらのタスクの一部を実行する方法を説明します。次の課題では、新しいユーザーを作成し、表をすばやく再作成して、表データをコピーする方法を説明します。

ユーザーの作成

新しいデータベース・ユーザー・アカウントを作成して、データベースの表とデータを操作します。新規ユーザーを作成するには、データベース管理者アカウント、この例では、データベースのインストール時に作成したデフォルトのsystemアカウントでログインする必要があります。

  1. 「サービス」ウィンドウで、OracleDB接続ノードを右クリックし、「コマンドの実行」を選択します。これにより、NetBeans IDEのSQLエディタが開き、データベースに送信するSQLコマンドを入力できます。
    「サービス」ウィンドウの「コマンドの実行」メニュー項目
  2. 新しいユーザーを作成するには、SQLエディタ・ウィンドウで次のコマンドを入力し、ツールバーの「SQLの実行」ボタンをクリックします。
    ユーザーの作成コマンド
    create user jim
    identified by mypassword
    default tablespace users
    temporary tablespace temp
    quota unlimited on users;

    このコマンドは、新規ユーザーjimをパスワードmypasswordで作成します。デフォルトの表領域はusersで、割り当てられる領域は無制限です。

  3. 次のステップは、jimユーザー・アカウントに、データベースのアクションを実行する権限を与えることです。ユーザーがデータベースに接続し、ユーザーのデフォルトの表領域で表を作成して変更し、サンプルhrデータベースのEmployees表にアクセスできるようにする必要があります。

    実際には、データベース管理者がカスタム・ロールを作成し、各ロールの権限を微調整します。ただし、チュートリアルの目的のため、CONNECTなどの定義済のロールを使用できます。ロールと権限の詳細は、Oracle Databaseセキュリティ・ガイドを参照してください。

    grant connect to jim;
    grant create table to jim;
    grant select on hr.departments to jim;

表の作成

NetBeans IDEからデータベースに表を作成する方法は複数あります。たとえば、SQLファイルを実行する(ファイルを右クリックし、「ファイルを実行」を選択)、SQLコマンドを実行する(接続ノードを右クリックし、「コマンドの実行」を選択)、または「表を作成」ダイアログ・ボックスを使用する(「表」ノードを右クリックし、「表を作成」を選択)ことができます。この課題では、別の表の構造を使用して、表を再作成します。

この例では、ユーザーjimで、hrデータベースから表を再作成して、そのスキーマにDepartments表のコピーを作成します。表を作成する前に、サーバーから切断し、ユーザーjimとしてログインする必要があります。

  1. 「サービス」ウィンドウでOracleDB接続ノードを右クリックし、「切断」を選択します。
  2. OracleDB」接続ノードを右クリックし、「接続」を選択して、jimとしてログインします。
  3. HRスキーマの下の「表」ノードを展開し、ユーザーjimからDepartments表にのみアクセスできることを確認します。

    ユーザーjimの作成時に、選択権限がDepartments表にのみ制限されています。

    表の構造の保存
  4. Departments」表ノードを右クリックし、「構造を保存」を選択します。ディスクに.grabファイルを保存します。
  5. JIMスキーマを展開し、「」ノードを右クリックして、「表を再作成」を選択します。
    作成した.grabファイルをポイントします。
    別のユーザーのスキーマでの表の再作成
  6. 表の作成に使用するSQLスクリプトを確認します。「OK」をクリックします。
    別のユーザーのスキーマでの表の再作成
    「OK」をクリックすると、新しいDEPARTMENTS表が作成され、JIMスキーマ・ノードの下に表示されます。表ノードを右クリックし、「データを表示」を選択すると、表が空であることがわかります。

元のDepartments表から新しい表にデータをコピーする場合、表エディタでデータを手動で入力するか、新しい表に対してSQLスクリプトを実行して、表に入力できます。

データを手動で入力するには、次の手順を実行します。

  1. JIMスキーマの下のDEPARTMENTS表を右クリックし、「データを表示」を選択します。
  2. 「データを表示」ツールバーの「レコードを挿入」アイコンをクリックし、「レコードを挿入」ウィンドウを開きます。
    「レコードを挿入」アイコン
  3. フィールドにデータを入力します。「OK」をクリックします。

    たとえば、元のDEPARTMENTS表から取得した次の値を入力できます。

    DEPARTMENT_ID 10
    DEPARTMENT_NAME Administration
    MANAGER_ID 200
    LOCATION_ID 1700

SQLスクリプトを使用して表に入力するには、次の手順を実行します。

  1. JIMスキーマの下のDEPARTMENT表を右クリックして、「コマンドの実行」を選択します。
  2. 「SQLコマンド」タブでスクリプトを入力します。ツールバーの「実行」ボタンをクリックします。

    次のスクリプトによって、新しい表の1行目に元の表のデータが入力されます。

    INSERT INTO JIM.DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (10, 'Administration', 200, 1700);

元の表から表に入力するためのSQLスクリプトを取得するには、次の手順を実行します。

  1. HRスキーマの下のDEPARTMENTS表を右クリックし、「データを表示」を選択します。
  2. 「データを表示」ウィンドウのすべての行を選択し、表を右クリックして、ポップアップ・メニューから「INSERTのSQLスクリプトを表示」を選択し、スクリプトを含む「SQLを表示」ダイアログを開きます。

    スクリプトをコピーし、それを必要に応じて変更して、データを表に挿入できます。

SQLエディタの操作の詳細は、ヒントを参照してください。

表データの操作

表データの操作には、NetBeans IDEのSQLエディタを利用できます。SQL問合せを実行することによって、データベース構造内で保持されているデータを追加、変更および削除できます。

最初に、jimスキーマにLocationsという2つ目の表を作成します(jimのユーザー・アカウントでログインしたまま)。今回は、IDEですぐに使用できるSQLファイルを実行するのみです。

  1. locations.sqlファイルをコンピュータ上のUSER_HOMEディレクトリにダウンロードして保存します。
  2. IDEの「お気に入り」ウィンドウを開き、locations.sqlファイルを見つけます。

    「お気に入り」ウィンドウを開くには、メイン・メニューの「ウィンドウ」>「お気に入り」をクリックします(Ctrl-3キーを押します)。デフォルトで、「お気に入り」ウィンドウにUSER_HOMEディレクトリが表示されます。

  3. locations.sqlファイルを右クリックし、「ファイルを実行」を選択します。
    「レコードを挿入」アイコン

    注意:IDEに複数のデータベース接続が登録されている場合は、IDEによって正しい接続を選択するように求められます。

  4. 「サービス」ウィンドウで、「表」ノードを右クリックし、ポップアップ・メニューの「リフレッシュ」を選択します。

    データを含むLocations表がJIMスキーマに追加されたことがわかります。

    jimスキーマに追加された2番目の表
  5. 「Locations」表ノードを右クリックし、「データを表示」を選択して、表の内容を確認します。「Locations」表の内容を確認します。
    この表示ウィンドウで直接、新しいレコードを挿入したり、既存のデータを変更したりできます。
    「Locations」表のすべてのデータの表示
  6. 次に、DepartmentsとLocationsの2つの表の情報を表示する問合せを実行します。

    この例では、両方の表に同じデータ型の値を保持する同じ「location_id」列があるため、単純な「自然結合」を使用します。この結合では、一致するlocation_id列に等しい値を持つ行のみが選択されます。

    「SQLコマンド」ウィンドウを開き(JIMスキーマの下の「」ノードを右クリックし、「コマンドの実行」を選択)、次のSQL文を入力して、「SQLの実行」アイコンをクリックします。

    SELECT DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE 
    FROM departments NATURAL JOIN locations
    ORDER by DEPARTMENT_NAME;

    このSQL問合せは、location_id値がLocations表の一致する列の値に等しいDepartments表の行を、Department名で順序付けられた結果で返します。この問合せの結果には、単一の表の表現で実行できるように、直接新しいレコードを挿入することはできません。

    複数の場所にあるデータの結合

    ビューとしてSQL結合問合せを保存(「ビュー」ノードを右クリックし、「ビューの作成」を選択)して、必要なときにいつでも便利に実行できます。このため、データベース・ユーザーには、サンプル・ユーザーが持たないビューを作成する権限を付与するようにしてください。システム・アカウントでログインし、jimにビューの作成権限を付与し(SQL文「grant create view to jim;」で)、独自のビューを作成してみます。


OCI 8およびPHP向けのNetBeans IDE

OCI 8 PHP拡張およびPHP向けのNetBeans IDEを使用して、Oracleデータベースと通信するPHPコードを記述できます。PHP向けのNetBeans IDEおよびOracleデータベースを使用するには:

  1. PHPの学習のPHP開発のための環境の構成の項で説明されているように、PHP環境を設定します。NetBeans IDEではPHP 5.2または5.3のみをサポートしています。
  2. エディタでphp.iniファイルを開きます。extension_dirプロパティがPHP拡張のディレクトリに設定されていることを確認します。このディレクトリは通常PHP_HOME/extです。たとえば、PHP 5.2.9がC:のルート・ディレクトリにインストールされている場合、extension_dir設定はextension_dir="C:\php-5.2.9\ext"になります。
  3. extension=php_oci8_11g.dll (Oracle 11gの場合)またはextension=php_oci8.dll (Oracle 10.2またはXEの場合)を見つけてコメントを解除します。これらの拡張のうち一度に有効にできるのは1つのみです。

    重要: php.iniにそのような行がない場合、拡張フォルダでOCI 8拡張ファイルを探してください。拡張フォルダにOCI 8拡張ファイルがない場合、OCI 8のダウンロードとインストールについては、LinuxおよびWindowsへのPHPおよびOracle Instant Clientのインストールを参照してください。

  4. Apacheを再起動します。(Windowsユーザーはコンピュータを再起動するようにしてください。)
  5. phpinfo()を実行します。OCI 8を正常に有効にすると、phpinfo()の出力にOCI 8セクションが表示されます。

OCI 8を有効にする方法と特にリモートOracle DBサーバーでOCI 8を使用する方法の詳細は、LinuxおよびWindowsへのPHPおよびOracle Instant Clientのインストールを参照してください。

OCI 8を有効にすると、PHP向けのNetBeans IDEはコード補完とデバッグのためにこの拡張にアクセスします。

OCI 8コード補完オプションを備えたエディタ・ウィンドウ

NetBeans IDEでのOCI JDBCドライバの使用

OCIドライバ・パッケージは、JDBC Thinドライバと同じJARファイル(ojdbc6.jar)で利用できます。使用するドライバの選択は、インタフェースによって異なります。Thinドライバの場合はoracle.jdbc.OracleDriver、OCIドライバの場合はoracle.jdbc.driver.OracleDriverです。Oracle Database Instant Clientには、OCIドライバがデータベースと通信するために必要なすべてのライブラリが含まれているため、OCIドライバを使用するには、Oracle Database Instant Clientもインストールする必要があります。

OracleのOCIドライバを使用してNetBeans IDEからOracle Databaseに接続するには:

  1. 使用しているプラットフォームに対応するOracle Database Instant Clientの「Basic」パッケージをダウンロードします。このページのインストール手順に従います。
  2. IDEの「サービス」ウィンドウで、「データベース」ノードを右クリックし、「新規接続」を選択します。
  3. 「ドライバを検索」ステップで、「Oracle OCI」を選択し、「追加」をクリックして、ojdbc6.jarファイルを指定します。
  4. 「接続をカスタマイズ」ダイアログ・ボックスで、IPアドレス、ポート、SID、ユーザー名とパスワードなどの接続の詳細を指定します。
    OCIドライバとThinドライバのJDBC URLの違いに注意してください。
    OCI 8コード補完オプションを備えたエディタ・ウィンドウ

トラブル・シューティング

下のトラブル・シューティングのヒントでは、発生したほんの少数の例外について説明しています。質問がここで解決されない場合は、独自に検索するか、「このチュートリアルに関するご意見をお寄せください」リンクを使用して、建設的なフィード・バックを提供してください。

  • 次のようなエラーが表示されます。
    Shutting down v3 due to startup exception : No free port within range:
    >> 8080=com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectorHandler@7dedad
    これは、GlassFishアプリケーション・サーバーとOracle Databaseの両方でポート8080を使用しているために発生します。そのため、両方のアプリケーションを同時に使用する場合は、それらのどちらかのこのデフォルトのポートを変更する必要があります。Oracle Databaseのデフォルトのポートをリセットする場合は、次のコマンドを使用できます。
    CONNECT SYSTEM/password
    EXEC DBMS_XDB.SETHTTPPORT(<new port number>);
  • 次のエラーが表示されます。
    Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor.
    これは、接続ディスクリプタによって指定されたデータベース・インスタンスのサービスID (SID)がリスナーによって認識されていない場合に発生します。この例外には多くの原因があります。たとえば、Oracle Databaseが起動されていない場合に発生する可能性があります(最も単純な例)。またはSIDが正しくないか、リスナーによって認識されていません。デフォルトのSID (たとえば、Oracle Database Express Editionの場合、デフォルトのSIDはXEです)を使用する場合、この問題が発生する可能性はほとんどありません。SIDは、tnsnames.oraファイル(Windowsマシンの場合、このファイルは%ORACLE_HOME%\network\admin\tnsnames.oraにあります)のCONNECT DATA部分に含まれています。
  • 次のエラーが表示されます。
    ORA-12705: Cannot access NLS data files or invalid environment specified.

一般的な場合、これは、NLS_LANG環境変数に、言語、地域または文字セットの無効な値が含まれることを意味します。この場合は、無効なNLS_LANG設定をオペレーティング・システム・レベルで無効にするようにしてください。Windowsでは、Windowsレジストリの\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLEにあるNLS_LANGサブキーの名前を変更します。Linux/Unixでは、コマンド「unset NLS_LANG」を実行します。


関連項目

Oracle Databaseの管理と操作の詳細は、対応するOracleのドキュメントを参照してください。下に、最もよく使用されるドキュメントの簡単な一覧を示します。

NetBeans IDEで他のデータベースを操作する方法については、次を参照してください。

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo