使用Ruby连接到Oracle DB

qwe*_*bek 7 ruby oracle database-connection oracle-call-interface

我很难连接到Oracle DB,已经阅读了很多东西,但没有结果的帮助.
我有远程Oracle DB,我使用DBVisualizer设置连接连接到它,如下所示:

DB Type : Oracle
Driver (jdbc) : Oracle thin
Database URL: jdbc:oracle:thin:@10.10.100.10:1521/VVV.LOCALDOMAIN
UserIdf: SomeUser
Pass: SomePass
Run Code Online (Sandbox Code Playgroud)

连接正常.

我在Ruby中做的是:

require 'oci8'
require 'dbi'
...

conn = OCI8.new('SomeUser','SomePass','//10.10.100.10:1521/VVV.LOCALDOMAIN')
...
Run Code Online (Sandbox Code Playgroud)

我得到的是:

ORA-12545: Connect failed because target host or object does not exist
oci8.c:360:in oci8lib.so
Run Code Online (Sandbox Code Playgroud)

pet*_*ter 8

第三个参数需要是TNS主机名,如果你使用SQL加上它也是连接字符串中的第三个参数,你也可以在oracle地图的tnsnames.ora文件中找到它.

在SQLPlus中: connect user/password @ hostname;
in oci8: conn = OCI8.new('SomeUser','SomePass',主机名)

这是一个工作样本,当然是模糊了参数

require 'oci8'
oci = OCI8.new('****','***','****.***')
oci.exec('select * from table') do |record|
  puts record.join(',')
end
Run Code Online (Sandbox Code Playgroud)