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 コードを記述する方法について説明します。
目次
このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
はじめに
このチュートリアルを始める前に、次を考慮してください。
- このチュートリアルでは、ローカルシステムにインストールされている Oracle Database XE インスタンスに接続する方法を説明しますが、その手順は、リモートインスタンスに接続する場合にも適用できます。ローカルインスタンスに接続する場合、Oracle Database XE をダウンロードして、インストールする必要があります。インストールプロセスは簡単で直観的ですが、疑問がある場合は、使用しているプラットフォームの Oracle Database XE インストールガイドを参照してください。
- Oracle JDBC ドライバには、OCI と JDBC Thin の 2 つのカテゴリがあります。
- これまで 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 データベースへの接続の確立
この課題では、データベースへの新しい接続をテストし、作成します。
- Oracle データベースを起動します。
- 「サービス」ウィンドウ (「ウィンドウ」>「サービス」または Ctrl-5、Mac の場合は ⌘-5) を開きます。「サービス」ウィンドウで、「データベース」ノードを右クリックし、「新規接続」を選択します。

- 「新規接続」ウィザードで、「ドライバ」ドロップダウンリストの「Oracle Thin」を選択します。
- 「追加」をクリックし、前にダウンロードした ojdbc6.jar ファイルを見つけます。「次へ」をクリックします。
- ウィザードの「接続をカスタマイズ」パネルで、次の値を入力して、「次へ」をクリックします。
| ドライバ名 |
Oracle Thin (サービス ID (SID)) |
| ホスト |
localhost または 127.0.0.1
注: リモート接続の場合、データベースがインストールされているマシンの IP アドレスまたは解決可能なホスト名を指定します。 |
| ポート |
1521 (デフォルト) |
| サービス ID (SID) |
XE (Oracle Database XE のデフォルトの SID)
注: リモートデータベースに接続する場合、データベース管理者に、データベース SID の提供を依頼します。 |
| ユーザー名 |
ユーザー名を入力してください。
チュートリアルの目的のため、「system」(デフォルトのデータベース管理者アカウント) と、データベースのインストール時に使用したパスワードを入力します。 |
| Password |
選択したユーザー名のパスワードを入力します。 |
- 「接続をテスト」をクリックし、IDE がデータベースに接続できることを確認します。「次へ」をクリックします。
成功した場合、ウィザードにメッセージ「接続に成功しました」が表示されます。

- 「スキーマを選択」ドロップダウンリストの「HR」を選択します。「完了」をクリックします。
注: NetBeans で HR スキーマにアクセスする前に、それをロック解除する必要があります。HR データベースのロック解除については、Oracle Database XE 入門チュートリアルで説明されています。
「サービス」ウィンドウの「データベース」ノードの下に新しい接続が表示されます。それを展開し、データベースオブジェクトの構造の参照を開始できます。
接続ノードの表示名を変更します。ノードのポップアップメニューから「プロパティー」を選択し、「表示名」プロパティーの省略符号ボタンをクリックします。「表示名」として「OracleDB」と入力し、「了解」をクリックします。
注: 上の手順では、ローカルデータベースインスタンスに接続する場合を説明していますが、リモートデータベースに接続する場合の手順も同じです。唯一の違いは、ホスト名として localhost を指定する代わりに、Oracle データベースがインストールされているリモートマシンの IP アドレスまたはホスト名を入力することです。
Oracle データベースのデータの操作
データベースと対話する一般的な方法は、SQL エディタまたはデータベース管理インタフェースを使用して、SQL コマンドを実行することです。たとえば、Oracle Database XE にはブラウザベースのインタフェースがあり、データベースの管理、データベースオブジェクトの管理、およびデータの操作を行うことができます。
Oracle データベース管理インタフェースから、ほとんどのデータベース関連タスクを実行できますが、このチュートリアルでは、NetBeans IDE で SQL エディタを使用して、これらのタスクの一部を実行する方法を説明します。次の課題では、新しいユーザーを作成し、表をすばやく再作成して、表データをコピーする方法を説明します。
ユーザーの作成
新しいデータベースユーザーアカウントを作成して、データベースの表とデータを操作しましょう。新規ユーザーを作成するには、データベース管理者アカウント、この例では、データベースのインストール時に作成したデフォルトの system アカウントでログインする必要があります。
- 「サービス」ウィンドウで、OracleDB 接続ノードを右クリックし、「コマンドを実行」を選択します。これにより、NetBeans IDE の SQL エディタが開き、データベースに送信する SQL コマンドを入力できます。

- 新しいユーザーを作成するには、SQL エディタウィンドウで次のコマンドを入力し、ツールバーの「SQL を実行」ボタンをクリックします。

create user jim
identified by mypassword
default tablespace users
temporary tablespace temp
quota unlimited on users;
このコマンドは、新規ユーザー jim をパスワード mypassword で作成します。デフォルトの表領域は users で、割り当てられる領域は無制限です。
- 次の手順は、jim ユーザーアカウントに、データベースの操作を実行する権限を与えることです。ユーザーがデータベースに接続し、ユーザーのデフォルトの表領域で表を作成して変更し、サンプル hr データベースのEmployees 表にアクセスできるようにする必要があります。
実際には、データベース管理者がカスタムロールを作成し、各ロールの権限を微調整します。ただし、チュートリアルの目的のため、CONNECT などの定義済みのロールを使用できます。ロールと権限の詳細については、『Oracle Database セキュリティガイド』を参照してください。
grant connect to jim;
grant create table to jim;
grant select on hr.departments to jim;
Oracle データベースの表領域
表領域は、Oracle データベースの論理データベース記憶単位です。実際に、データベースのすべてのデータが表領域に保存されます。割り当てられた表領域内に表を作成します。デフォルトの表領域が明示的にユーザーに割り当てられていない場合、システムの表領域がデフォルトで使用されます (この状況は避けたほうが得策です)
表領域の概念について詳しくは、Oracle FAQ: 表領域を参照してください。
表の作成
NetBeans IDE からデータベースに表を作成する方法は複数あります。たとえば、SQL ファイルを実行する (ファイルを右クリックし、「ファイルを実行」を選択)、SQL コマンドを実行する (接続ノードを右クリックし、「コマンドを実行」を選択)、または「表を作成」ダイアログボックスを使用する (「表」ノードを右クリックし、「表を作成」を選択) ことができます。この課題では、別の表の構造を使用して、表を再作成します。
この例では、ユーザー jim で、hr データベースから表を再作成して、そのスキーマに Departments 表のコピーを作成します。表を作成する前に、サーバーから切断し、ユーザー jim としてログインする必要があります。
- 「サービス」ウィンドウで OracleDB 接続ノードを右クリックし、「接続を解除」を選択します。
- 「OracleDB」接続ノードを右クリックし、「接続」を選択して、jim としてログインします。
- HR スキーマの下の「表」ノードを展開し、ユーザー jim から Departments 表にのみアクセスできることを確認します。
ユーザー jim の作成時に、選択権限が Departments 表にのみ制限されています。

- 「Departments」表ノードを右クリックし、「構造を保存」を選択します。ディスクに .grab ファイルを保存します。
- JIM スキーマを展開し、「表」ノードを右クリックして、「表を再作成」を選択します。
作成した .grab ファイルをポイントします。

- 表の作成に使用する SQL スクリプトを確認します。「了解」をクリックします。

「了解」をクリックすると、新しい DEPARTMENTS 表が作成され、JIM スキーマノードの下に表示されます。表ノードを右クリックし、「データを表示」を選択すると、表が空であることがわかります。
元の Departments 表から新しい表にデータをコピーする場合、表エディタでデータを手動で入力するか、新しい表に対して SQL スクリプトを実行して、表に入力できます。
データを手動で入力するには、次の手順を実行します。
- JIM スキーマの下の DEPARTMENTS 表を右クリックし、「データを表示」を選択します。
- 「データを表示」ツールバーの「レコードを挿入」アイコンをクリックし、「レコードを挿入」ウィンドウを開きます。

- フィールドにデータを入力します。「了解」をクリックします。
たとえば、元の DEPARTMENTS 表から取得した次の値を入力できます。
| DEPARTMENT_ID |
10 |
| DEPARTMENT_NAME |
Administration |
| MANAGER_ID |
200 |
| LOCATION_ID |
1700 |
SQL スクリプトを使用して表に入力するには、次の手順を実行します。
- JIM スキーマの下の DEPARTMENT 表を右クリックして、「コマンドを実行」を選択します。
- 「SQL コマンド」タブでスクリプトを入力します。ツールバーの「実行」ボタンをクリックします。
次のスクリプトによって、新しい表の 1 行目に元の表のデータが入力されます。
INSERT INTO JIM.DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (10, 'Administration', 200, 1700);
元の表から表に入力するための SQL スクリプトを取得するには、次の手順を実行します。
- HR スキーマの下の DEPARTMENTS 表を右クリックし、「データを表示」を選択します。
- 「データを表示」ウィンドウのすべての行を選択し、表を右クリックして、ポップアップメニューから「INSERT の SQL スクリプトを表示」を選択し、スクリプトを含む「SQL を表示」ダイアログを開きます。
スクリプトをコピーし、それを必要に応じて変更して、データを表に挿入できます。
SQL エディタの操作について詳しくは、ヒントを参照してください。
表データの操作
表データの操作には、NetBeans IDE の SQL エディタを利用できます。SQL クエリーを実行することによって、データベース構造内で保持されているデータを追加、変更、および削除できます。
最初に、jim スキーマに Locations という 2 つ目の表を作成します (jim のユーザーアカウントでログインしたまま)。今回は、IDE ですぐに使用できる SQL ファイルを実行するだけです。
- locations.sql ファイルをコンピュータ上の USER_HOME ディレクトリにダウンロードして保存します。
- IDE の「お気に入り」ウィンドウを開き、locations.sql ファイルを見つけます。
「お気に入り」ウィンドウを開くには、メインメニューの「ウィンドウ」>「お気に入り」をクリックします (Ctrl-3 キーを押します)。デフォルトで、「お気に入り」ウィンドウに USER_HOME ディレクトリが表示されます。
- locations.sql ファイルを右クリックし、「ファイルを実行」を選択します。
注: IDE に複数のデータベース接続が登録されている場合、IDE によって正しい接続を選択するように求められることがあります。
- 「サービス」ウィンドウで、「表」ノードを右クリックし、ポップアップメニューの「再表示」を選択します。
データを含む Locations 表が JIM スキーマに追加されたことがわかります。

- 「Locations」表ノードを右クリックし、「データを表示」を選択して、表の内容を確認します。「Locations」表の内容を確認します。
この表示ウィンドウで直接、新しいレコードを挿入したり、既存のデータを変更したりできます。

- 次に、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 および NetBeans IDE for PHP
OCI 8 PHP 拡張および NetBeans IDE for PHP を使用して、Oracle データベースと通信する PHP コードを記述できます。NetBeans IDE for PHP および Oracle データベースを使用するには:
- PHP の学習の「PHP 開発のための環境の構成」の節で説明されているように、PHP 環境を設定します。NetBeans IDE では PHP 5.2 または 5.3 のみをサポートしています。
- エディタで php.ini ファイルを開きます。extension_dir プロパティーが PHP 拡張のディレクトリに設定されていることを確認します。このディレクトリは通常 PHP_HOME/ext です。たとえば、PHP 5.2.9 が C: のルートディレクトリにインストールされている場合、extension_dir 設定は extension_dir="C:\php-5.2.9\ext" になるはずです。
- 行 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 のインストール」を参照してください。
- Apache を再起動します。(Windows ユーザーはコンピュータを再起動するようにしてください。)
- phpinfo() を実行します。OCI 8 を正常に有効にすると、phpinfo() の出力に OCI 8 セクションが表示されます。
OCI 8 を有効にする方法と特にリモート Oracle DB サーバーで OCI 8 を使用する方法について詳しくは、「Linux および Windows への PHP および Oracle Instant Client のインストール」を参照してください。
OCI 8 を有効にすると、NetBeans IDE for PHP はコード補完とデバッグのためにこの拡張にアクセスします。

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 に接続するには:
- 使用しているプラットフォームに対応する Oracle Database Instant Client の「Basic」パッケージをダウンロードします。このページのインストール手順に従います。
- IDE の「サービス」ウィンドウで、「データベース」ノードを右クリックし、「新規接続」を選択します。
- 「ドライバを検索」手順で、「Oracle OCI」を選択し、「追加」をクリックして、ojdbc6.jar ファイルを指定します。
- 「接続をカスタマイズ」ダイアログボックスで、IP アドレス、ポート、SID、ユーザー名とパスワードなどの接続の詳細を指定します。
OCI ドライバと Thin ドライバの JDBC URL の違いに注意してください。

トラブルシューティング
下のトラブルシューティングのヒントでは、発生したほんの少数の例外について説明しています。疑問がここで解決されない場合は、独自に検索するか、「ご意見をお寄せください」リンクを使用して、建設的なフィードバックを提供してください。
-
次のようなエラーが表示されます。
起動の例外のため v3 を終了します : 範囲内に空きポートがありません:
>> 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>);
- 次のエラーが表示されます。
リスナーは次のエラーで接続を拒否しました: ORA-12505, TNS: リスナーは接続記述子で指定された SID を現在認識していません。
これは、接続記述子によって指定されたデータベースインスタンスのサービス 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: NLS データファイルにアクセスできないか、無効な環境が指定されました。
一般的な場合、これは、NLS_LANG 環境変数に、言語、地域、または文字セットの無効な値が含まれることを意味します。この場合は、無効な NLS_LANG 設定をオペレーティングシステムレベルで無効にするようにしてください。Windows では、Windows レジストリの \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE にある NLS_LANG サブキーの名前を変更します。Linux/Unix では、コマンド「unset NLS_LANG」を実行します。
関連項目
Oracle Database の管理と操作の詳細については、対応する Oracle のドキュメントを参照してください。下に、もっともよく使用されるドキュメントの簡単な一覧を示します。
NetBeans IDE でほかのデータベースを操作する方法については、次を参照してください。