2010年2月3日水曜日

oracleインスタントクライアントのインストール

ubuntuで、PHPからoracleに接続するために、oracleインスタントクライアントをインストールします。

まず、OTNから以下のファイルをダウンロードします。
  • Instant Clientパッケージ - Basic
  • Instant Clientパッケージ - SDK
  • Instant Clientパッケージ - SQL*Plus

次の手順でインストールします。
$ sudo mkdir -p /opt/oracle
$ cd /opt/oracle
$ sudo unzip ダウンロードしたInstant Clientパッケージ - Basic
$ sudo unzip ダウンロードしたInstant Clientパッケージ - SDK
$ sudo unzip ダウンロードしたInstant Clientパッケージ - SQL*Plus
$ sudo mv instantclient_10_2 instantclient
$ cd instantclient
$ sudo ln -s libclntsh.so.10.1 libclntsh.so
$ sudo ln -s libocci.so.10.1 libocci.so
$ sudo su -
# echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient
# exit
$ sudo pecl install oci8
画面に
 1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : autodetect

1-1, 'all', 'abort', or Enter to continue:
と表示されるので、all と入力します。

続いて、
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :
と表示されるので、 instantclient,/opt/oracle/instantclient と入力します。

続いて、
 1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : instantclient,/opt/oracle/instantclient

1-1, 'all', 'abort', or Enter to continue:
と表示されるので、エンターキーを押します。

しばらくすると、
Build process completed successfully
Installing '/usr/lib/php5/20060613/oci8.so'
install ok: channel://pecl.php.net/oci8-1.3.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini
と表示されればOK。

PHPから利用できるように
$ sudo su -
# echo extension=oci8.so >> /etc/php5/apache2/php.ini
# exit
$ sudo /etc/init.d/apache2 restart
を行い、apacheを再起動します。

tnsnames.oraにサーバー情報を追加します。
$ cd /opt/oracle
$ sudo vi tnsnames.ora

環境変数の設定を追加します。
$ cd ~/
$ vi .profile
末尾に
LD_LIBRARY_PATH=/opt/oracle/instantclient
PATH=/opt/oracle/instantclient:$PATH
NLS_LANG=JAPANESE_JAPAN.AL32UTF8
TNS_ADMIN=/opt/oracle
export LD_LIBRARY_PATH PATH TNS_ADMIN NLS_LANG
を追加します。
$ source ~/.profile
を行って環境変数を設定してから
$ sqlplus ユーザー/パスワード@接続文字
で接続できれば完了!

[補足]
phpinfo()の結果を見ると、NLS_LANGとLD_LIBRARY_PATH等の環境変数の設定が反映されていないので、
$ sudo vi /etc/init.d/apache2
で、
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"


ENV="env -i LANG=C PATH=/opt/oracle/instantclient:/usr/local/bin:/usr/bin:/bin NLS_LANG=JAPANESE_JAPAN.AL32UTF8 LD_LIBRARY_PATH=/opt/oracle/instantclient TNS_ADMIN=/opt/oracle"

と修正して、apacheを再起動した。

あと、もしかしたら
$ sudo dpkg-reconfigure apache
したかも。

0 コメント :

コメントを投稿