2012-03-27 21 views
7

Oracle DB'ye bağlanmaktan sıkıldım, çok fazla şey okudum ama sonuçta yardım yok.
Ben böyle dbvisualizer ayarı bağlantısı kullanarak ona bağlanma ediyorum, uzak Oracle DB vardır:Ruby kullanarak Oracle DB'ye bağlanma

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

Bağlantı Tamam çalışır.

Ne Ruby yapmak geçerli:

require 'oci8' 
require 'dbi' 
... 

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

Ne olsun şudur: SQL kullanırsanız

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

cevap

8

Üçüncü parametre TNS hostname olması gerekiyor artı o da üçüncü connectstring parametresinde, aynı zamanda, oracle haritalarındaki tnsnames.ora dosyasında da bulabilirsiniz:

SQLPlus: bağlantı kullanıcı/parola @ ho stname; OCI8 içinde
: bağl = OCI8.new ('SomeUser', 'somepass', ana bilgisayar adı) İşte

bir çalışma örneği

elbette parametrelerini

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

bu karartılmış ORA-12504'e yardımcı olmuyor: TNS: CONNECT_DATA – qwebek

+0

'da SERVICE_NAME adlı kişiye hostname verilmediğinden emin değil misiniz? Bir çalışma örneği eklendi – peter

+1

TNS_ADMIN değişkeni oluşturdum, TNS ana bilgisayarımı ayarla. ben, bu yüzden oci = OCI8.new ('MyUser', 'mypass' gibi bağlanabilir, SQLplus içinden ve yakut içinde bağlanabilir '// : 1521/' AMA Ben TNS ev sahibi denince ORA-12514 ile başarısız: TNS: dinleyici şu anda bağlantı tanımlayıcısında (OCIError) istenen hizmeti bilmemektedir –

-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

Cevabınızı açıklayan bir yorumu ve OP'nin sorununu neden çözeceğini düşündüğünüzü düşünebilirsiniz. – mustaccio

-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