2012-03-27 15 views
7

का उपयोग कर ओरेकल डीबी से कनेक्ट करना मैं ओरेकल डीबी से कनेक्ट होने के साथ फंस गया हूं, बहुत सी चीजें पढ़ी हैं लेकिन परिणाम पर कोई मदद नहीं है।
मैं दूरस्थ ओरेकल 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 

कनेक्शन ठीक काम करता है।

क्या मैं रूबी में क्या है:

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

तीसरे पैरामीटर, टीएनएस होस्ट नाम होने की जरूरत है अगर आप एसक्यूएल का उपयोग के साथ साथ यह भी तीसरे स्थान पर है कनेक्टस्ट्रिंग में पैरामीटर, आप ऑरैकल मानचित्रों में tnsnames.ora फ़ाइल में भी देख सकते हैं

SQLPlus में: उपयोगकर्ता/पासवर्ड @ हो stname;
oci8 में: Conn = OCI8.new ('SomeUser', 'SomePass', होस्टनाम)

यहाँ एक काम नमूना, निश्चित रूप से मापदंडों

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

इस समझ से परे ओआरए -12504: टीएनएस में मदद नहीं करता है: श्रोता को CONNECT_DATA – qwebek

+0

में SERVICE_NAME नहीं दिया गया था क्या आप अपने होस्टनाम के बारे में निश्चित हैं? एक कामकाजी नमूना जोड़ा – peter

+1

मैंने TNS_ADMIN चर बनाया है, मेरा टीएनएस होस्टनाम सेट करें। मैं sqlplus के माध्यम से और गहरे लाल रंग का में कनेक्ट कर सकते हैं, मैं, इसलिए ओसीआई = OCI8.new ('MyUser', 'mypass' की तरह कनेक्ट कर सकते हैं '// : 1521/' लेकिन जब मैं टीएनएस मेजबान का उल्लेख है, यह ओआरए-12514 के साथ विफल रहता है: टीएनएस: श्रोता वर्तमान में कनेक्ट डिस्क्रिप्टर (ओसीआईइरर) –

-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

आप अपने उत्तर को समझाते हुए एक टिप्पणी शामिल करना चाहेंगे और आपको लगता है कि यह ओपी की समस्या का समाधान क्यों करेगा। – 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