2016-04-21 3 views
0

Я пытаюсь использовать команду Ruby on Rails Rake для миграции в базу данных Oracle. Мой database.yml файл содержит следующее:Ошибка Oracle TNS с помощью команды Ruby on Rails Rake

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

На моем компьютере я установить ORACLE_SID=orcl.

Когда я бегу Рейк, мигрировать, я получаю следующее сообщение об ошибке:

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 

Можете ли вы сказать мне, если Мне нужно изменить файл listener.ora, чтобы заставить его работать? Мой listener.ora файл выглядит следующим образом:

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) 

Выход команды LSNRCTL состояния выглядит следующим образом:

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 

Может кто-нибудь помочь/сделать предложение?

+0

Вы пытались подключиться к xe, а не к orcl e.g sid: xe –

+0

Да, я пробовал с sid: xe Он не работает ни – Sean

+0

typo orc1 \ orcl ??? –

ответ

0

во-первых, вы можете проверить, что база данных доступна с помощью команды TNSPING

например: TNSPING xe

это может быть, вы использовали один, а не L SID: ORC1 должен быть с.и.д.: ORCL возможно?

+0

Kevin, Спасибо за ваш ответ. Я выполнил команду, и результаты были следующими: Утилита TNS Ping для 32-разрядной версии Windows: версия 11.2.0.2.0 - производство на 21-APR-2016 13:04:16 Copyright (c) 1997, 2010, Oracle. Все права защищены. используемых файлы параметры: C: \ oraclexe \ приложение \ оракул \ продукт \ 11.2.0 \ сервер \ сеть \ админ \ sqlnet.ora Используется TNSNAMES адаптер для разрешения псевдонима Попытки связаться (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = Lenovo-PC) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE))) OK (10 мс) – Sean

+0

если вы изменили database.yml, чтобы указать на xe, а не orcl, это сработает? –

0

Kevin,

Благодарим за помощь. Я изменил мой database.yml на:

development: 

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

Это позволило мне подключиться к базе данных. У меня теперь есть еще одна проблема, но я думаю, что смогу решить эту проблему. С уважением, Sean