0

データベースにオラクルを使用するレールアプリがあります。

以前は、古いマシンで oracle virtualbox と Oracle Developer Day kit を使用して実行していました。オラクルが提供するパックには Oracle データベース 11g が含まれていました。新しいラップトップを手に入れたので、すべてを再インストールする必要がありますが、うまくいきましたが、オラクル パック 'OTN dev day' はオラクル データベース 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>'

VM でリスナーを確認すると、すべて正常に動作しています。

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 の間に大きな変化はありますか? または、インストール中に何かを見逃しましたか?

前もって感謝します!

4

2 に答える 2

0

通常、ora-12537 の場合、エラー メッセージのスタックが表示されます。前のエラー メッセージの方が重要です。Ruby がそれらを抑制しているように見えます (良くない)。

マシンのファイアウォールを無効にしましたか?

それ以外の場合は、listener.ora、sqlnet.ora、および protocol.ora ファイルを送信してください。

于 2014-03-12T04:43:52.787 に答える
0

VM の構成が間違っていて、リスナーが適切に定義されていなかったことが判明しました。それがあなたに起こった場合、これが私がそれを修正した方法です:

仮想ボックス アプリの設定 > ネットワーク。[ホストオンリー ネットワーク] をクリックします。1 つ追加し、すべてデフォルトのままにします。

以下のようにネットワークを設定します。

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

サーバーで、1 行のコマンドを使用して接続を確認します。

$> sqlplus system/oracle@orcl

以下のgemをインストールしたら、以下を使用して接続する必要があります。

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

また、しばらくすると、サーバーのサイズによってデータベースの起動が回避されたり、移行がブロックされたり、サーバーの再起動がバグったりすることがありました。これに直面した場合は、サーバー上の次のディレクトリに移動してみてください/u01/app/oracle/oradata/ORCL/datafile/.tmpファイルが非常に大きい (10G) 場合は、破棄してサーバーを再起動してください。

于 2015-03-01T16:11:47.617 に答える