无法使用ruby-oci8,ORA-06401连接到远程oracle db

时间:2012-06-07 16:35:35

标签: ruby-on-rails ruby oracle oci8

我正在尝试在我的rails应用程序中使用远程数据库。为了实现这一点,我按照以下说明使用ruby-oci8:http://www.pixellatedvisions.com/2009/03/26/rails-on-oracle-part-2-setting-up-rails-to-connect-to-an-oracle-database

我对第1部分没有任何问题,通过sqlplus连接到远程数据库,但是当我尝试使用oci8时:

ruby -r oci8 -e "OCI8.new('user', 'pass', 'host_ip:port/sid').exec('SELECT * FROM table') {|r| puts ' | ' r.join}"

我明白了:

oci8.c:267:in oci8lib_191.so: ORA-06401: NETCMN: invalid driver designator (OCIError)
        from -e:1:in `new'
        from -e:1:in `<main>'

谷歌搜索这个错误我读了http://www.dba-oracle.com/t_ora_06401_netcmn_invalid_driver_designator.htm这对我的情况毫无帮助。 我还读到我应该有一个TNSNAMES.ORA文件,我没有......所以我创造了一个没有任何运气。

BTW我正在使用ruby-oci8-2.0.6-x86-mingw32.gem(因为我在windows中),ruby 1.9.3和rails 3.2.3

有任何线索吗?

修改

用Google搜索了一下,发现:

  • 问题描述:无法对她的某些数据库运行运行状况检查。获取错误“ORA-06401:NETCMN:无效的驱动程序指示符”和运行状况检查然后显示“连接失败(1)”的注释。直接从Toad的连接窗口连接到此数据库没有问题。
  • 原因:特定于在9i客户端上使用直接连接并在运行状况检查中选择直接连接数据库的问题。
  • 分辨率: 解决方案1:使用其他方法连接,选择连接为TNS而不是Direct。在这种情况下,您可以使用您的9i客户端。 解决方案2:使用其他客户端连接,如果需要使用直接连接,请升级到10g或11g客户端。

0 个答案:

没有答案