rails 连接oracle

本文详细介绍如何在Windows和Linux环境下配置Rails应用以连接Oracle数据库。包括安装Oracle客户端、配置Ruby OCI8驱动、设置Rails适配器及数据库配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原以为rails连接oralce就像mysql那么简单,没想到还是费了一番周折,记录下来备忘
Windows
1)安装oralce 客户端
2下载 ruby-oci8-1.0.1-mswin32.rb
然后dos下rubyruby-oci8-1.0.1-mswin32.rb
D:/>ruby ruby-oci8-1.0.1-mswin32.rb
Copy OCI8.rb to D:/dev/ruby/lib/ruby/site_ruby/1.8/DBD/OCI8
Copy oci8.rb to D:/dev/ruby/lib/ruby/site_ruby/1.8
Copy oci8lib.so to D:/dev/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt
OK?
Enter Yes/No: yes
Copying OCI8.rb to D:/dev/ruby/lib/ruby/site_ruby/1.8/DBD/OCI8 ... done
Copying oci8.rb to D:/dev/ruby/lib/ruby/site_ruby/1.8 ... done
Copying oci8lib.so to D:/dev/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt ... done
OK
3)拷贝apdater文件
The oracle adapter does not exist on Rails 2 by default so:
  1. Check out the oracle adapter
    svn co
    http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/
  2. And move oracle_adapter.rb to your ActiveRecord adapters path
    [your ruby path]/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters
  3. Try again, it should work
4)
database.yml
development:
adapter: oracle
database: [your database as it appears on TNSNAMES.ora]
username: [your username]
password: [your password]
Linux
1)下载和安装oralce 10g 客户端
下载 oracle-instantclient-basic-10.2.0.3-1.i386.rpm
oracle-instantclient-devel-11.1.0.1-1.i386.rpm
rpm -ivh oracle-instantclient-basic-10.2.0.3-1.i386.rpm
rpm -ivh oracle-instantclient-devel-11.1.0.1-1.i386.rpm
设置环境变量
LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client/lib
export LD_LIBRARY_PATH
最好放在/etc/profile,这个不仅仅是安装时用到,程序运行时也需要用到
3)安装客户端api
cd /usr/local/src
tar xzvf ruby-oci8-1.0.1.tar.gz
cd ruby-oci8-1.0.1
make && make install
4) 拷贝apdater文件
The oracle adapter does not exist on Rails 2 by default so:
4.2) And move oracle_adapter.rb to your ActiveRecord adapters path
[your ruby path]/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters
5)
database.yml
development:
adapter: oracle
database: [your database as it appears on TNSNAMES.ora]或者[//主机名:端口/服务名]
username: [your username]
password: [your password]

注意上面的database有两种写法,如果用第一种,必须系统存在tnsnames.ora,
在一台没有安装oracle server的linux机器上是不存在这个文件到,但客户端会默认
寻找/etc/tnsnames.ora,如果没有这个文件会报错:
env.c:257:in oci8lib.so: ORA-12154: TNS:could not resolve the connect identifier specified (OCIError)
如果本来就在oralce server上,那么这么写是可以的
第二种写法通用性很强,完全无需tnsnames.ora
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值