LoginSignup
0

More than 5 years have passed since last update.

mac - rails - AWS RDS Oracle

Last updated at Posted at 2017-04-18

OracleをRailsでつないだのでメモ

環境

  • macOS Sierra 10.12.2
  • ruby 2.4.1
  • rails 5.0.2
  • activerecord-oracle_enhanced-adapter 1.7.10
  • ruby-oci8 2.2.3

AWSにOracle入れたけどAWSのSDKは使ってない

下準備

SQL DEVELOPER入れた

SQLDeveloper
- GUIのOracleクライアント
- railsとoracleを繋ぐだけなら入れる必要はなし

SQL*Plus入れた

ダウンロードと解凍

SQLPlus
- mac用のbasic,sqlplus,sdkをダウンロード
- 適当なパスに解凍(ここでは$HOME/lib/instantclient_12_1)

$ cd ~/lib
$ mkdir instantclient_12_1
$ unzip instantclient-basic-macos.x64-12.1.0.2.0.zip 
$ unzip instantclient-sqlplus-macos.x64-12.1.0.2.0.zip 
$ unzip instantclient-sdk-macos.x64-12.1.0.2.0.zip

シンボリックリンクを貼っておく

$ cd ~/lib/instantclient_12_1
$ ln -s libclntsh.dylib.12.1 libclntsh.dylib
$ ln -s libocci.dylib.12.1 libocci.dylib

環境変数設定

.bash_profile
export PATH=$HOME/lib/instantclient_12_1:$PATH
export OCI_DIR=$HOME/lib/instantclient_12_1
export TNS_ADMIN=$HOME/lib/oracle/network/admin
export NLS_LANG=Japanese_Japan.UTF8

tnsnames.ora

  • ローカル・ネーミング・パラメータ構成ファイル (tnsnames.ora)
  • tnsnames.oraをTNS_ADMINに設定したパスに作成
  • SERVICE_NAMEにはRDSの「DB名」を入れる
tnsnames.ora
net_service_name =
(DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)
    (HOST=servername)
    (PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=ORCL))
)

sqlplusで接続確認

  • パスは通ったけどコマンドを叩いたらエラー
$ which sqlplus
/Users/myname/lib/instantclient_12_1/sqlplus
$ sqlplus username/password@net_service_name
ERROR:
ORA-21561: OID generation failed
  • hostnameをhostsに書いたらつながった
$ sudo sh -c "echo '127.0.0.1 `hostname`' >> /etc/hosts"
$ sqlplus username/password@net_service_name
SQL*Plus: Release 12.1.0.2.0 Production on Fri Mar 24 18:51:34 2017
...
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production

SQL>

Railsの設定

Gemfile

Gemfile
gem rails 5.0
gem activerecord-oracle_enhanced-adapter
gem ruby-oci8 

bundle install

database.yml

tnsnames.oraで設定したネットサービス名をdatabaseに設定

database.yml
development:
  adapter: oracle_enhanced
  database: net_service_name
  username: username
  password: password  

接続確認

console
[1] pry(main)> ActiveRecord::Base.connection.current_database
=> ORCL

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0