2012-03-21 9 views
8

Mam serwer z uruchomioną usługą Oracle, IP to 192.168.1.50.Nie mogę połączyć aplikacji mojej szyny z Oracle

Na moim komputerze z linuxem muszę się połączyć z tym serwerem Oracle. I wtedy zainstalowany Oracle Instant Client i ustawić zmienne środowiskowe, odpowiednio:

OCI_INCLUDE_DIR =/home/luc/instantclient_11_2/sdk/include
LD_LIBRARY_PATH =/home/luc/instantclient_11_2
DYLD_LIBRARY_PATH =/home/luc/instantclient_11_2/
OCI_LIB_DIR =/home/luc/instantclient_11_2
ORACLE_HOME =/home/luc/instantclient_11_2

mam również zainstalowany odpowiedni gEM:

ruby-oci8 (2.1.0) 

Raz mam zdefiniowane moje modele i pobiegł rake db: migrować mam następujący komunikat o błędzie:

rake aborted! 
ORA-12154: TNS:could not resolve the connect identifier specified 
oci8.c:360:in oci8lib_191.so 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/ruby-oci8-2.1.0/lib/oci8/oci8.rb:123:in `initialize' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:319:in `new' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:319:in `new_connection' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:429:in `initialize' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:24:in `new' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:24:in `initialize' 
/home/luc/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-oracle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanced_connection.rb:9:in `new' 
.... 

mój database.yml jest:

development: 
    adapter: oracle_enhanced 
    host: 192.168.1.50:1521/orcl 
    username: USER 
    password: PASS 

połączenie SQLPLUS działa idealnie choć:

sqlplus USER/[email protected]:1521/orcl 

SQL*Plus: Release 11.2.0.3.0 Production on Wed Mar 21 17:34:26 2012 

Copyright (c) 1982, 2011, Oracle. All rights reserved. 


Connected to: 
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

SQL> 

Czy czegoś nie brakuje w tym konfigurze?

UPDATE

Ja testowałem z linii poleceń i połączenie działa prawidłowo:

rubin -rubygems -e „require 'oci8; OCI8.new ('user', 'pass' ., '192.168.1.50/Oracle') exec ('select * from użytkowników') zrobić | r | stawia r.join (''); end”

=> OK

samo z IRB :

ActiveRecord::Base.establish_connection(:adapter => "oracle_enhanced", :database => "//192.168.1.50/orcl",:username => "USER",:password => "PASS") 

=> OK

ale nadal nie działa z moim szynach aplikacji.

UPDATE 2

Korzystanie z bazy danych zamiast przyjmującym stałe rzeczy:

development: 
    adapter: oracle_enhanced 
    database: //192.168.1.50:1521/orcl 
    username: USER 
    password: PASS 

Odpowiedz

9

Korzystanie z bazy danych zamiast przyjmującym stałe rzeczy:

development: 
    adapter: oracle_enhanced 
    database: //192.168.1.50:1521/orcl 
    username: USER 
    password: PASS 
+1

miałem zarówno zdefiniowane; usunięcie hosta rozwiązało problem. – tamersalama

2

Jeśli chcesz użyć składni EZConnect połączyć się Oracle, host w pliku database.yml musiałby obejmują wiodące ukośniki, tj.

host: //192.168.1.50:1521/orcl 

Istnieją przykłady innych sposobów konfigurowania Railsów w celu uzyskania dostępu do bazy danych Oracle w tym artykule OTN pod numerem Connecting to Oracle in Ruby on Rails.

Powiązane problemy