Oracle Instant Client for Linux を試してみる
Linux に Oracle データベースへのアクセス環境を構築するには、Oracle Client をインストールすればよいのですが、OracleInstaller は X Window 必須ですし、インストール用ユーザを作ったりなど、結構手間がかかります。そこで、Oracle が公開している 10g 用の Oracle Instant Client というパッケージを使って Oracle のデータベースへのアクセスが可能かどうか試してみました。
Oracle Instant Client はインストールが簡単で、自由にダウンロードできますし、開発用であれば無償で利用できます。今回使用したのはクライアントが RHEL 互換の WhiteBox Linux 3、サーバ側は Windows 2000 Server + Oracle 8i (8.1.7.4) です。
Oracle Instant Client のダウンロード
x86 Linux 用のパッケージをダウンロードします。ダウンロードには、OTN のアカウントが必要です。これは日本の OTN のアカウントとは別です。最低限必要なのは、Basic ですが、動作確認のために SQL*Plus のパッケージもインストールします。また、PHP などからアクセスするには SDK (devel) を使って PHP を再構築させる必要があります(次回執筆予定)。 JDBC ドライバはお好みでどうぞ。
rpm -ivh oracle-instantclient-basic-10.1.0.3-1.i386.rpm \ oracle-instantclient-sqlplus-10.1.0.3-1.i386.rpm \ oracle-instantclient-devel-10.1.0.3-1.i386.rpm
これだけで Oracle Client が利用可能になります。tsnnames.ora の設定もありません。ずいぶん楽ですね。もちろんここのアプリケーションで Oracle データベースへのアクセス設定が必要になります。
SQL*Plus のエラー
いきなり PHP を構築する前に、SQL*Plus が使えるかどうか試します。SQL*Plus は sqlplus コマンドで実行できますが、最初は次のようなエラーが出てしまいました。
# sqlplus sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
このエラーは、共有ライブラリが見つからないときに発生します。今回は libsqlplus.so が見つからないというエラーです。/usr/lib/oracle/10.1.0.3/client/lib/ の下に Oracle Instant Client 関連の共有ライブラリがあります。このファイルが見えるように LD_LIBRARY_PATH に追加します。
$ export LD_LIBRARY_PATH=/usr/lib/oracle/10.1.0.3/client/
これで sqlplus コマンドを実行してもエラーは出なくなりました。
SQL*Plus でのアクセス
sqlplus コマンドは、次のようにパラメータを付けて実行します。
$ sqlplus username/password@server.example.com:1521/sid
ただし、今回のように Linux (EUC)→ Windows (SJIS) の環境だと文字化けが発生してしまいます。これは環境変数で NLS_LANG に JAPANESE_JAPAN.JA16EUC を指定すれば OK です。
$ export NLS_LANG=JAPANESE_JAPAN.JA16EUC
もちろん、環境変数の設定は .bashrc などに書いておいた方が便利だと思います。
続・Oracle Instant Client を使って PHP をコンパイル
以前、Oracle Instant Client を使って PHP をコンパイルという記事を書きました。これは、Red Hat Enterprise Linux (正確にはクローンの White Box でしたが)にて、PHP の Oracle 関数を利用できるように再構築する方法を書いたものです。 当時のバージョンでは、Ora…
トラックバック by 津田ふみかの日記 — 2005-05-6 20:42
貴重な情報に感謝いたします。
私の環境では、DBサーバ(win2k,oracle9i)にAdvanced Securityオプションが設定されているため、linux clientにおいて暗号の設定等が必要と思われます。このあたり、どうしたらよいか御存じでしょうか?
コメント by まつむら — 2006-01-27 22:26