2017-10-02 18 views
1

RubyでOracle DBに接続しようとしていますが、エラーが発生しました: OCIError:ORA-12514:ORA-12514:oci8.c:659:in oci8lib_240.so リスナーは、接続記述子で実際に要求されたサービスを認識しません。ルーブルでoracle dbに接続しようとしたときにエラーが発生しました

  • インスタントクライアント12_2とodbcをw7 64bに、oci.dllをw7 32bにダウンロードしてrubyフォルダに入れました。 (http://www.oracle.com/technetwork/topics/winx64soft-089540.html
  • db 11gリリース2をw7 64bにダウンロードし、セットアップを実行しました。私はNET MANAGER以来リスナーを設定しています。 (http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
  • 私はsql開発者を持っており、接続とクエリーは正常です。

    SERVICE_PODVCT_ORCL = 
        (DESCRIPTION = 
        (ADDRESS_LIST = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = podvct.x.com)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
         (SID = PODVCT) 
         (SERVICE_NAME = PODVCT) 
         (SID = PODVCT) 
        ) 
    ) 
    

    リスナー:

    LISTENER_PODVCT_ORCL = 
        (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = podvct.x.com)(PORT = 1521)) 
        (CONNECT_DATA = 
        (SERVICE_NAME = PODVCT) 
        (SID = PODVCT) 
        ) 
    ) 
        sid_list_LISTENER_PODVCT_ORCL= 
        (sid_list= 
        (sid_desc= 
        (oracle-home=C:\app\user\product\11.2.0\dbhome_1) 
        (sid_name=PODVCT))) 
    ADR_BASE_LISTENER_PODVCT_ORCL = C:\app\user 
    

    SQLNET:

    AMES.TRACE_DIRECTORY = C:\app\user\product\11.2.0\dbhome_1\NETWORK\trace 
    SQLNET.AUTHENTICATION_SERVICES= (NTS) 
    NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME) 
    NAMES.TRACE_FILE = names.trc 
    NAMESCTL.TRACE_FILE = namesctl.trc 
    NAMES.PREFERRED_SERVERS = 
        (address_list = 
        (address = (protocol = tcp)(host = podvct.x.com)(port = 1521)) 
    ) 
    NAMES.LOG_FILE = names.log 
    NAMESCTL.TRACE_LEVEL = ADMIN 
    NAMES.LOG_DIRECTORY = C:\app\user\product\11.2.0\dbhome_1\NETWORK\log 
    NAMES.DEFAULT_DOMAIN = world 
    NAMESCTL.TRACE_DIRECTORY = C:\app\user\product\11.2.0\dbhome_1\NETWORK\trace 
    NAMES.TRACE_LEVEL = ADMIN 
    ADR_BASE = C:\app\user 
    

  • 私は、tnsnames.ora、listener.oraおよびSQLNET.ORA

tnanamesを構成しました私configu赤の環境変数:ルビーで

PATH: ...;C:\Ruby24-x64\bin\oci.dll;C:\Oracle_odbc;%ORACLE_HOME%/network/bin;C:\app\PRIVE2\product\11.2.0\dbhome_1\bin; 
ORACLE_HOME:C:\app\user\product\11.2.0\dbhome_1 
ORACLE_SID:podvct 
NLS_LANG: SPANISH_SPAIN.WE8MSWIN1252 
TNS_ADMIN: C:\app\USER\product\11.2.0\dbhome_1\NETWORK\ADMIN 
  • そして私は置く:

    は 'OCI8'

    // DBH = OCI8.new(ユーザー、パスワードを必要と 'DBI' が必要です、 'podvct.x.com:1521/PODVCT')

    DBH = DBI.connect( "DBI:OCI8:podvct.x.com:1521/PODVCT"、ユーザー、パスワード)

  • 私はルビー以来とSQLPLUS以来の接続をチェックし、エラーがある:

    DBH = DBI.connect( "DBI:OCI8:podvct.monsanto.com:1521/PODVCT"、ユーザー、パスワード)

OCIError:ORA-12514:TNS:エルリスナーなしconoceのactualmenteエルSERVICIO solicitadoエン・エル・ディスクリプタ・デconexión oci8.c:659:oci8lib_240.so にリスナーが実際にある要求されたサービスを知りません接続記述子。

+0

dbとリスナーのどちらが実行されていますか? – Ravi

+0

dbはリモートdbであり、サーバー内で実行されており、リスナーは自分のPCにあります。 – user8609295

+0

サーバー上のリスナーもアップしていれば確認しましたか? – Ravi

答えて

0

は、私はすべてをしようとすると、応答は次のようにルビー文を入れている:

DBH = DBI.connect( "DBI:OCI8:SERVICE_PODVCT_ORCL"、利用者は、合格)

SERVICE_PODVCT_ORCLが名前でありますtnsnames.ora内のサービス

ありがとう!

関連する問題