読者です 読者をやめる 読者になる 読者になる

一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

Ruby on RailsでOracleにtnsnames.oraを使わずに接続する

rails oracle install

 RoR+Oracle・・・あまり無いパターンなので、情報が少ない。なのでメモっておくことにしました。

実行環境

OS CentOS 5.4
Shell bash
Oracle関連ソフト 無償のパッケージのみを使用する
接続先DBサーバ 自サーバ以外で稼働している
インストール済み Ruby, Ruby on Rails
rubygems activerecord-oracle_enhanced-adapter, ruby-oci8

環境構築手順

 Instant Clientのダウンロードより、該当するパッケージをダウンロードし、インストールを行う。

$ wget http://download.oracle.com/otn/linux/instantclient/112010/oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
$ wget http://download.oracle.com/otn/linux/instantclient/112010/oracle-instantclient11.2-devel-11.2.0.1.0-1.i386.rpm
$ sudo rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
$ sudo rpm -ivh oracle-instantclient11.2-devel-11.2.0.1.0-1.i386.rpm

 .bashrcの末尾に以下の環境変数を追加する。

export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export PATH=${ORACLE_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}

 環境変数を反映し、gemをインストールする。

$ source ~/.bashrc
$ gem install activerecord-oracle_enhanced-adapter -v=1.2.3
$ gem install ruby-oci8 -v=1.0.7

 以上でRoRからOracleに接続出来るようになります。ちなみにdatabase.ymlの設定はこちら。database:の部分を「IPアドレスorホスト名/サービス名」のようなフォーマットで書くと、tnsnames.oraがいらなくなります。

development:
  adapter: oracle_enhanced
  database: IPアドレスorホスト名/サービス名
  username: hogehoge
  password: hogehoge