Red Hat 7.3環境におけるOracleオープンソースODBCドライバの利用

Oracle用の商用ODBCドライバとして「Easysoft ODBC-Oracle Driver」というものがあります。
この「Easysoft ODBC-Oracle Driver」は次のプラットフォームに対応しておりバイナリまたはソースで提供されています。


この商用Oracle ODBCドライバのオープンソース版Oracle ODBCドライバが「Oracle Open Source ODBC Driver Project」により公開されています。
このオープンソース版の正式名称は「Easysoft Open Source ODBC Driver for Oracle」となっています。
尚、2003年1月時点の「Easysoft Open Source ODBC Driver for Oracle」はODBCのレベル3.5サポートという観点ではまだ完全なものにはなっていないとのことです。

今回このオープンソース版Oracle ODBCドライバをRed Hat 7.3環境でビルドして利用してみましたので簡単に紹介します。
オープンソース版のOracle ODBCドライバがサポート対象にしているのはOracle8i(8.1.6)以降のようですが、今回はOracle8 Workgroup Server(8.0.5) for Linux環境でビルド&動作確認してみました。


(1)オープンソース版Oracle ODBCドライバ(以下Oracle ODBCドライバと略)導入の前提条件

「Oracle Open Source ODBC Driver Project」のWebサイトには以下の前提条件が明記されています。



(2)Oracle ODBCドライバソースとそのビルド(インストール)手順

「Oracle Open Source ODBC Driver Project」で公開されているOracle ODBCドライバのソースファイルはoracle.odbc.driver.0.5.1.tar.gzというものです。

以下にOracle ODBCドライバのソースからのインストール手順を説明します。

上記の操作により/usr/local/libにliboraodbc.so等のファイルがインストールされます。
尚、ODBCデータソースのセットアッププログラムは提供されません。

次に/etc/ld.so.confに次の2行を追加してldconfigを実行します。
/usr/local/lib
$ORACLE_HOMEの実際のパス/lib


(3)ODBCドライバの登録とODBCデータソースの登録


(4)/etc/tnsnames.oraの用意

通常tnsnames.oraファイルは$ORACLE_HOME/network/adminにありますがApache環境でphp-odbcを使用する場合にそのtnsnames.oraファイルが探し出せないケースがあります。
そのような事態を避けるために$ORACLE_HOME/network/admin/tnsnames.oraと同じものが/etc/tnsnames.oraとして参照できるようにしておきます。

DB2の場合と違って/etc/sysconfig/apacheを用意してそこにRDBMS用の特別な環境変数を設定するような必要はありません。


(5)odbctestツールによるODBCドライバの動作確認

odbctestはunixODBCソースに含まれるツールで、ODBCドライバのAPI関数(SQLAllocEnv,SQLFetch等)をGUIベースで動作検証するためのプログラムです。
Red Hat 7.3のバイナリパッケージには含まれていないようですので別途インストールする必要があります。
(無理にodbctestを導入する必要はありません)

今回は次のシーケンスでODBC API関数の動作検証をしてみました。


(6)DataManager

unixODBCのDataManagerはデータエクスプローラとも言われ、データベース中のテーブル一覧表示、テーブル定義表示の他に簡単なクエリー実行等も行えます。

DataManagerによるクエリー実行例


(7)isqlツールによるODBCデータソースアクセス

unixODBCにはisqlという対話式SQL実行ツールが付属しています。
通常コマンドラインから次のようにisqlを起動します。


下記の画像はisqlの実行例です。





(8)PHPでのOracle ODBCの利用

Red Hat 7.3にはPHPでODBCを利用するためのphp-odbcパッケージが含まれています(バージョンは4.1.2)。

  • コマンドラインからのPHPスクリプト実行例

  • Apache環境におけるPHPスクリプトの実行