2012-03-27 203 views
7

我一直連接到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 

回答

8

第三個參數需要是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

-3
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

-4
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