7

EasyConnect接続文字列を使用して、コード(Ruby / DBIですが、これは関係ありません)を介してOracleデータベースに接続しようとしています。Oracleのすべてのドキュメントには、接続文字列を// hostname:port/service_nameとして指定するように記載されています。接続する必要のあるデータベースのservice_nameがありません。代わりに、SIDがあります。サービス名の代わりにSIDを使用してEasyConnect接続文字列を作成する方法はありますか?

私の接続コードは次のようになります:

DBI.connect("DBI:OCI8://localhost:9000/the_sid", "username here", "password here")

私はさまざまなことを試し続けていますが、試したことに応じて、次の2つのエラーメッセージのいずれかが表示されます。

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor (DBI::DatabaseError)
ORA-12154: TNS:could not resolve the connect identifier specified (DBI::DatabaseError)
4

1 に答える 1

3

サービス名としてSIDを試しましたか?通常、サービスが要求される SID を指定できます。通常、SERVICE_NAMES はデフォルトで SID になります。SQL コマンド プロンプトで、次のように入力します。

SQL> show parameter service

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      sid

SQL> 

VALUE 列の値は、データベースが登録されているサービス名です。

于 2011-01-10T18:47:37.350 に答える