Ruby中的Oracle连接

时间:2009-09-25 14:59:57

标签: ruby oracle

在我的ruby脚本中,我设置通过以下方式连接到oracle db: conn = OCI8.new(用户名,密码,数据库)

它在我自己的桌面(Ubuntu)上运行良好,但是,当我将它部署到实验室机器(Ubuntu VM)时,它有oracle连接错误。该机器具有所需的所有oracle驱动程序,因为我可以通过命令行sqlplus连接到它。我也回复$ ORACLE_HOME并且设置正确。 错误如下: env.c:257:在oci8lib.so中:ORA-12154:TNS:无法解析服务名称(OCIError)

当ORACLE_HOME设置不正确时,桌面上出现了同样的错误。一旦我做对了,它就开始起作用了。但是在这个实验室机器上,虽然我可以启动sqlplus w / o问题,但我无法通过ruby脚本连接。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

ORA-12154错误意味着在环境正在使用的tnsnames.ora文件中找不到OCI8.new调用中“database”参数的值。这可能是由于:

  • 通过变量传递的值不正确
  • 环境中的某些东西 指向错误的位置 tnsnames.ora中。默认情况下应该 在$ ORACLE_HOME / network / admin中,但是 这可以被覆盖 TNS_ADMIN环境变量。

您说您可以在实验室机器上启动sqlplus而没有任何问题,我认为这意味着您可以在执行此操作时连接到感兴趣的数据库。如果是这种情况,那么运行Ruby脚本时出现的环境似乎必须有所不同。