使用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
答
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
这没有帮助 ORA-12504:TNS:listener没有被赋予CONNECT_DATA中的SERVICE_NAME – qwebek 2012-03-30 10:44:49
你确定你的主机名?添加了一个工作示例 – peter 2012-03-30 11:41:10
我创建了TNS_ADMIN变量,设置了我的TNS主机名。 我可以通过SQLPLUS和红宝石连接,我可以连接,像这样OCI = OCI8.new( '为myuser', '为mypass', '//:1521/' BUT 当我提到TNS主机它与ORA-12514失败:TNS:侦听器当前不知道在连接描述符(OCIError)中请求的服务 –
2013-08-03 00:13:25