1

Rails アプリでリモート データベースを使用しようとしています。これを達成するために、次の指示に従って ruby​​-oci8 を使用しています: http://www.pixellatedvisions.com/2009/03/26/rails-on-oracle-part-2-setting-up-rails-to-connect-オラクルデータベースへ

sqlplus 経由でリモート データベースに接続するパート 1 には問題はありませんが、oci8 を使用しようとすると、次のようになります。

ruby -r oci8 -e "OCI8.new('user', 'pass', 'host_ip:port/sid').exec('SELECT * FROM table') {|r| puts ' | ' r.join}"

私は得る:

oci8.c:267:in oci8lib_191.so: ORA-06401: NETCMN: invalid driver designator (OCIError)
        from -e:1:in `new'
        from -e:1:in `<main>'

このエラーをグーグルで調べて、このhttp://www.dba-oracle.com/t_ora_06401_netcmn_invalid_driver_designator.htmを読みましたが、私の場合はまったく役に立ちません。また、TNSNAMES.ORAファイルが必要だと読んだのですが、そうではありません...なので、運が悪いので作成しました。

ところで、私は ruby​​-oci8-2.0.6-x86-mingw32.gem (私は Windows にいるため)、ruby 1.9.3 および rails 3.2.3 を使用しています。

どんな手掛かり?

編集

もう少しグーグルで見つけた:

  • 問題の説明: 一部のデータベースでヘルス チェックを実行できません。エラー「ORA-06401: NETCMN: 無効なドライバー指定子」とヘルス チェックを取得すると、「接続失敗 (1)」というメモが表示されます。Toad の接続ウィンドウからこのデータベースに直接接続しても問題はありません。
  • 原因: 9i クライアントで直接接続を使用し、ヘルス チェックで直接接続データベースを選択することに固有の問題です。
  • 解決策: 解決策 1: 別の方法を使用して接続し、直接ではなく TNS として接続することを選択します。この場合、9i クライアントを使用できます。解決策 2: 別のクライアントを使用して接続し、直接接続を使用する必要がある場合は、10g または 11g クライアントにアップグレードします。
4

0 に答える 0