すごく間が開いてしまいましたが生きてました。てへぺろ!
さて今回は、お金をかけずにPro*Cを使うために、Oralce11gXEと、
Oracle Instant Clinent 11g を利用したPro*Cコンパイル環境の構築をやってみます。
なお、Oracle11gXEはLinuxOSの場合64bitOSにしか対応していないので注意が必要です。
また、今回の手順を真似すれば、WindowsでもPro*Cのコンパイル環境を作ることが出来ると思いますけど、検証していないので不明です。ゴメンなすって。
<2012/11 追記>
WindowsだとPro*Cはだめっぽいです。11gはわかりませんけど。
Is Pro*C supported in Instant Client?
Yes, Pro*C is supported to run with Instant Client 10.2.0.x on Unix platforms. Pro*C is not supported with Instant Client on Windows currently.
Modified: 09-APR-07 Ref #: ID-3661
公式サイトFAQより
1. Oracle 11g XEのインストール
ほとんどここに書いてあります。
http://sweng.web.fc2.com/database/oracle/install-oracle-xe11g-on-centos5.html
まずOracle11gXEのインストールに必要なパッケージは以下です。
yum なり何なりでインストールしておきましょう。
- glibc
- make
- binutils
- gcc
- libaio
- bc
あとはrpmパッケージをインストールするだけですね。簡単です。
ただし、XEはそのままインストールすると「XE」というインスタンスしか扱うことが出来ません。
なので、もし検証環境としてOracleSIDが「hoge」というインスタンスが必要なんだ!という場合、
がんばってインスタンスを手動で作成するしかありません。
参考になりそうなサイトを以下に挙げておきます。
http://hmicchan.fc2web.com/oracle2.html
http://ameblo.jp/furseal/entry-10071133204.html
2. Oracle Instant Client 11gのインストール
OracleサーバはOracleXEさえインストールしてしまえばパスを通すことでSQL*plusも使えます。
そのため、DB用途としてはまったく問題ないのですが、如何せんPro*Cが使えません。
Pro*CをXE環境で利用するには、どうもOracle Instant Clientが必要ということが分かりました。
Oracle Instant Clientとは、Oracle XE Clientより軽量で、使い道によりパッケージを組み合わせれば
一通りのことはできる仕組みを有するクライアントツールのようです。
なんとまあ便利な世の中になりましたね。
で、Oracle Instantのインストールに必要な分のパッケージは以下です。
(OracleサーバにOracle Instant Clientをインストール場合、
今回は前提条件として64bitのLinuxOSを利用しているので、
必然的にOracle Instant Clientも64bit版になってます)
- oracle-instantclient11.2-basic-11〜.rpm
- oracle-instantclient11.2-devel-11〜.rpm
- oracle-instantclient11.2-precomp-11〜.rpm
インストールはbasic devel precompの順番にインストールしてください。
すべてのインストールが完了した後は、環境変数としてパスを通します。
ユーザはOracleユーザ(su - oracle を実行すればなれるよね?)を使います。(※1)
内容は以下のような感じ。(export PATH部分は自分の設定にプラスしてください)
$ vi ~/.bash_profile
#!/bin/bash
export PATH=$PATH:/u01/app/oracle/product/11.2.0/xe/bin
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/lib/
ここで注意してもらいたいのが、Oracle 11g XEの11.2はインストールディレクトリが /u01/app/oracleにであり、ORACLE_HOMEがOracle Instant Clientとは異なっている点です。
XEもInstant Clientもデフォルトのインストール位置は変更できないので、事前に対策しようがありません。
さらに、OracleのEEやSEでのPro*Cが、そのままOracle Instant Clientで使えるわけではないようです。
あくまで「Pro*Cをサポートしている」だけで、
Oracle Instant ClientのPro*C環境は、製品版では同封されているライブラリやらメイクファイルやらを含んでいないと思われます。これはツライですね。。
※1
もし通常利用しているユーザやrootユーザもSQL*plusを使いたいとかPro*C使いたいとかある場合、
以下の作業をすると幸せになれるかもしれません。
$ su -
# usermod -G ユーザ名,dba ユーザ名
上記作業後、Oracleユーザと同様に環境変数にパスを通してください。
以上でたぶんSQL*plus、およびPro*Cが実行できる環境がOracleサーバ内に整ったと思います。
その他
今回実施したOracle Instant Clientのインストールでは、
Oracle Instant Clientにtnsnames.oraが存在しません。(なのでSQL*plusも使えないでしょう)
たぶん「oracle-instantclient11.2-sqlplus-11〜.rpm」をインストールする必要があります。
なお、Oracle 10g XE Clientにもtnsnames.oraが最初は存在しませんでしたので、
tnsnames.oraをどっかから持ってきてスクラッチするか、
最初からテキストとして書くかしないといけないようです。
書いたら書いたでそれだけでは動作しないため、環境変数(~/.bash_profileとか)に以下の行を
追記してください。
export TNS_ADMIN=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
ということで、今回も情報の断片をWebから集めまくってなんとかOracleのDBサーバおよびPro*Cを動作させることができました。
コピペプログラマな私はこうやって「出来る人を演じる」のがすごく得意です(ドヤ
そのうち綺麗な形でwikiにまとめようかなと思います。。。(これはひどい