使用Ruby连接到Oracle数据库

问题描述:

我一直连接到Oracle数据库,读了很多东西,但没有帮助结果。
我有远程Oracle DB,我使用这样的DBVisualizer中设置连接连接到它:使用Ruby连接到Oracle数据库

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

连接工作正常。

我在Ruby中做的是:

require 'oci8' 
require 'dbi' 
... 

conn = OCI8.new('SomeUser','SomePass','//10.10.100.10:1521/VVV.LOCALDOMAIN') 
... 

我得到的是:

ORA-12545: Connect failed because target host or object does not exist 
oci8.c:360:in oci8lib.so 

第三个参数需要是TNS主机名,如果你使用SQL再加上它也是全球第三ConnectString中的参数,你可以找到它也是在Oracle tnsnames.ora文件映射

在sqlplus 连接用户/密码@浩stname;
在OCI8:康恩= OCI8.new( '对待SomeUser', 'SomePass',主机名)

这里工作示例,当然混淆的参数

require 'oci8' 
oci = OCI8.new('****','***','****.***') 
oci.exec('select * from table') do |record| 
    puts record.join(',') 
end 
+0

这没有帮助 ORA-12504:TNS:listener没有被赋予CONNECT_DATA中的SERVICE_NAME – qwebek 2012-03-30 10:44:49

+0

你确定你的主机名?添加了一个工作示例 – peter 2012-03-30 11:41:10

+1

我创建了TNS_ADMIN变量,设置了我的TNS主机名。 我可以通过SQLPLUS和红宝石连接,我可以连接,像这样OCI = OCI8.new( '为myuser', '为mypass', '// :1521/' BUT 当我提到TNS主机它与ORA-12514失败:TNS:侦听器当前不知道在连接描述符(OCIError)中请求的服务 – 2013-08-03 00:13:25

require 'oci8' 
oci = OCI8.new('system','prasad','127.0.0.1:1521') 
oci.exec("CREATE TABLE states1 (
      id CHAR(2) PRIMARY KEY, 
      name VARCHAR2(15) NOT NULL, 
      capital VARCHAR2(25) NOT NULL)") 
+0

您可能希望包括解释您的答案的评论以及为什么您认为它会解决OP的问题。 – mustaccio 2016-02-14 20:23:54

require 'oci8' 
oci = OCI8.new('system','prasad','127.0.0.1:1521') 
oci.exec("insert into states1 values(1,'prasad','visakhapatnam')") 
oci.exec("commit") 
oci.exec('select * from states1') do |record| 
    puts record.join(',') 
end