2012-03-27 29 views
7

Estoy atascado con la conexión a Oracle DB, he leído muchas cosas pero no he obtenido ningún resultado.
tengo remota base de datos Oracle, lo voy a conectar a él mediante el establecimiento de la conexión DBVisualizer así:Conexión a Oracle DB usando Ruby

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

conexión funciona bien.

Lo que hago en Ruby es:

require 'oci8' 
require 'dbi' 
... 

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

Lo que obtengo es:

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

Respuesta

8

el tercer parámetro debe ser el nombre de host de TNS, si se utiliza SQL además de que también es la tercera parámetro en connectstring, puede encontrarlo también en el archivo tnsnames.ora en los mapas de Oracle

en SQLPlus: connect user/password @ ho stname;
en oci8: conn = OCI8.new ('CiertoUsuario', 'SomePass', nombre de host)

Aquí una muestra de trabajo, ofuscado los parámetros de curso

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

este no ayuda ORA-12504: TNS: oyente no recibió el SERVICE_NAME en CONNECT_DATA – qwebek

+0

¿está seguro de su nombre de host? se agregó una muestra de trabajo – peter

+1

He creado la variable TNS_ADMIN, establecí mi nombre de host TNS. I puede conectar a través de sqlplus y en rubí, puedo conectar como tal oci = OCI8.new ('miusuario', 'mypass', '// : 1521/' PERO Cuando menciono el anfitrión TNS, falla con ORA-12514: TNS: el oyente no conoce el servicio solicitado en el descriptor de conexión (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

Es posible que desee incluir un comentario explicando su respuesta y por qué cree que va a resolver el problema del PO. – 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 
Cuestiones relacionadas