2012-03-27 4 views
7

Я застрял с подключением к Oracle DB, прочитал много вещей, но не получил помощи по результату.
У меня есть удаленный сервер Oracle, я подключаю к нему с помощью DbVisualizer настройки соединения, как это:Подключение к Oracle DB с использованием Ruby

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

третий параметр должен быть TNS имя хоста, если вы используете SQL плюс это также третий параметр в строке соединения, вы можете найти его также в файле tnsnames.ora на картах oracle

in SQLPlus: connect user/password @ ho stname;
в OCI8: Conn = OCI8.new ('SomeUser', 'SomePass', имя хоста)

Здесь рабочий образец, затемненный параметры конечно

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

это не помогает ORA-12504: TNS: слушателю не было предоставлено SERVICE_NAME в CONNECT_DATA – qwebek

+0

Вы уверены, что знаете свое имя? добавлен рабочий пример – peter

+1

Я создал переменную TNS_ADMIN, задаю имя моего TNS. я могу подключиться через SQLPLUS и рубин, я могу подключить как так OCI = OCI8.new ('MyUser', 'mypass', '// : 1521/' НО Когда я упоминаю хозяина TNS, он не работает с ORA-12514: TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения (OCIError) –

-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

-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 
Смежные вопросы