2016-04-21 14 views
0

Ich versuche, den Ruby Rails Rake Befehl zu verwenden, um zu einer Oracle-Datenbank zu migrieren. Meine database.yml Datei enthält folgende Komponenten:Oracle TNS Fehler mit Ruby on Rails Rake-Befehl

development: 
    adapter: oracle 
    database: album_development 
    sid: orc1   
    username: system 
    password: root 

Auf meinem PC ich gesetzt haben ORACLE_SID=orcl.

Wenn ich Rake laufen, wandern, erhalte ich folgende Fehlermeldung:

rake aborted! 
The driver encountered an error: java.sql.SQLException: Listener refused the connection with the following error: 
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 

Können Sie mir sagen, ob Ich muss meine listener.ora Datei ändern, um das zu funktionieren? Meine listener.ora Datei ist wie folgt:

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) 
     (PROGRAM = extproc) 
    ) 
    (SID_DESC = 
     (SID_NAME = CLRExtProc) 
     (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) 
     (PROGRAM = extproc) 
    ) 
) 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = Lenovo-PC)(PORT = 1521)) 
    ) 
) 

DEFAULT_SERVICE_LISTENER = (XE) 

Der Ausgang des lsnrctl Status-Befehl lautet wie folgt:

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for 32-bit Windows: Version 11.2.0.2.0 - Production 
Start Date    21-APR-2016 11:14:15 
Uptime     0 days 0 hr. 7 min. 43 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Default Service   XE 
Listener Parameter File C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\listener.ora 
Listener Log File   C:\oraclexe\app\oracle\diag\tnslsnr\Lenovo-PC\listener\alert\log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Lenovo-PC)(PORT=1521))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Lenovo-PC)(PORT=8080))(Presentation=HTTP)(Session=RAW)) 
Services Summary... 
Service "CLRExtProc" has 1 instance(s). 
    Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "PLSExtProc" has 1 instance(s). 
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "XEXDB" has 1 instance(s). 
    Instance "xe", status READY, has 1 handler(s) for this service... 
Service "xe" has 1 instance(s). 
    Instance "xe", status READY, has 1 handler(s) for this service... 
The command completed successfully 

Kann jemand Hilfe/einen Vorschlag machen?

+0

Haben Sie versucht, eine Verbindung zu Xe anstatt orcl. Z. B. sid: xe –

+0

Ja, ich habe versucht mit sid: xe Es funktioniert nicht – Sean

+0

typo orc1 \ orcl ??? –

Antwort

0

erstens können Sie überprüfen die Datenbank mithilfe des TNSPING Befehl

z zugänglich ist: TNSPING xe

könnte es sein, Ihnen eine verwendet haben, anstatt eine L sid: ORC1 sollte sid sein: orcl vielleicht?

+0

Kevin, Vielen Dank für Ihre Antwort. Ich habe den Befehl ausgeführt, und die Ergebnisse sind wie folgt; TNS Ping-Dienstprogramm für 32-Bit-Windows: Version 11.2.0.2.0 - Produktion am 21-APR-2016 13:04:16 Copyright (c) 1997, 2010, Oracle. Alle Rechte vorbehalten. -Nutzungs-Parameter-Dateien: C: \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ network \ admin \ sqlnet.ora Gebrauchte TNSNAMES Adapter den Alias ​​ Der Versuch, in Verbindung (DESCRIPTION = (ADDRESS zu lösen = (PROTOCOL = TCP) (HOST = Lenovo-PC) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE))) OK (10 ms) – Sean

+0

wenn Sie database.yml so ändern, dass sie auf zeigt xe anstatt orcl funktioniert es? –

0

Kevin,

Vielen Dank für Ihre Hilfe. Ich änderte meine database.yml zu:

development: 

    adapter: oracle 
    database: xe 
    username: system 
    password: root 

Das erlaubte mir, in die Datenbank zu verbinden. Ich habe jetzt ein anderes Problem, aber ich denke, dass ich das angehen kann. Mit freundlichen Grüßen, Sean