Oracle VM和Rails:OCIError:ORA-12537:TNS:连接已关闭

时间:2014-03-10 00:28:19

标签: ruby-on-rails oracle oracle11g oracle12c

我有一个rails应用程序,使用oracle作为数据库。

我曾经在我的旧机器上使用oracle virtualbox和Oracle Developer Day套件运行它。 oracle提供的包包括Oracle数据库11g 现在我有一台新的笔记本电脑,需要重新安装一切,这很顺利,但现在oracle pack'OTN dev day'使用的是oracle数据库12g。

在以完全相同的方式设置所有内容后,我在通过oci8测试我的连接时遇到此错误:

1.9.3-p327 :001 > require 'oci8'
 => false
1.9.3-p327 :002 > c= OCI8.new('me', 'mypassword', '//localhost:1521/orcl')
OCIError: ORA-12537: TNS:connection closed
        from oci8.c:267:in oci8lib_191.bundle
        from (irb):2:in `new'
        from (irb):2
        from /Users/stephanethomas/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.14/lib/rails/commands/console.rb:47:in `start'
        from /Users/stephanethomas/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.14/lib/rails/commands/console.rb:8:in `start'
        from /Users/stephanethomas/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.14/lib/rails/commands.rb:41:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

在我的虚拟机中,如果我检查听众,我的一切工作正常:

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 09-MAR-2014 20:26:17

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                09-MAR-2014 19:56:48
Uptime                    0 days 0 hr. 29 min. 28 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/12.1.0/dbhome_1/log/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=80))(PROTOCOL_STACK=(PRESENTATION=HTTP)(SESSION=RAW)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=21))(PROTOCOL_STACK=(PRESENTATION=FTP)(SESSION=RAW)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

12到11之间是否有任何重大变化?或者我在安装时错过了什么?

提前致谢!

2 个答案:

答案 0 :(得分:0)

通常对于ora-12537,您应该收到一堆错误消息。以前的错误消息更重要,它看起来像ruby抑制它们(不好)。

您是否在计算机上禁用了防火墙?

否则发布listener.ora,sqlnet.ora和protocol.ora文件。

答案 1 :(得分:0)

原来我错误配置了VM,我的监听器没有正确定义。 如果你遇到了,我就是这样修理的:

在虚拟框应用程序首选项中&gt;网络。单击仅限主机网络。 添加一个,保留所有默认值。

如下设置网络:

Adapter 1: 
  - Bridge Adapter
  - en0: Wi-Fi
  - Premicious mode: deny
Adapter @:
  - Host-only Adapter
  - vboxnet0
  - Allow All

在服务器上,使用一行命令检查连接:

$> sqlplus system/oracle@orcl

在下面安装宝石之后,你应该使用它进行连接 以下内容:

OCI8.new('me', 'mypassword', '//localhost:1521/orcl')

此外,经过一段时间后,服务器大小无法启动数据库,阻止迁移或重新启动服务器错误,如果您遇到这种情况,请尝试进入服务器上的以下目录:{ {1}} 并查找非常大的/u01/app/oracle/oradata/ORCL/datafile/文件(10G),销毁它并重新启动服务器。