web-dev-qa-db-ja.com

ORA-12504:TNS:リスナーにCONNECT_DATAのSERVICE_NAMEが指定されていません

Visual Studio 2010のサーバーエクスプローラを使用してローカルのOracle11gデータベースに接続しようとしています。指示に従ってすべてをセットアップしようとしましたが、ORA-12504エラーが発生します。

エラーは次のとおりです。

enter image description here

これが私のtnsnames.oraの内容です:

# tnsnames.ora Network Configuration File: C:\app\rsahi\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.


VENUS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = SPRPRG020)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = VENUS)
    )
  )

LISTENER_VENUS =
  (ADDRESS = (PROTOCOL = TCP)(Host = SPRPRG020)(PORT = 1521))

listener.oraファイルの内容、

# listener.ora Network Configuration File: C:\app\rsahi\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(Host = SPRPRG020)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\app\rsahi
8
Rishi

Oracle 11gでLinkedServerを作成しようとしたときに、同じ問題が発生しました。 Oracleインスタンス名はPC-2.my.xgenで、リスナー名は "[〜#〜] nb [〜#〜]"でした。最初のステートメントの最後のパラメーターは、実際にはOracleサーバーインスタンスとリスナー名の連結です。

だから私はSQLサーバーで次のステートメントを書き留めました。

--add a linked server into SQL server
--last parameter contains OracleInstance / Listener Name of desired database
EXEC sp_addlinkedserver   'OracleLinkedServer4', 'Oracle',   'MSDAORA', 'PC-2.my.xgen/nb'

--add login information into linked server
EXEC sp_addlinkedsrvlogin 'OracleLinkedServer4', false,  Null, 'system',  '123456'

Oracleデータベース「NB」には、CRD_CIL_NOTIFICATION_TYPEという名前のテーブルがあります。そこで、レコードを取得するために次のステートメントを書き留めました。

select * from OracleLinkedServer4..SYSTEM.CRD_CIL_NOTIFICATION_TYPE
0
Mansoor Gee

VisualStudioのサーバーエクスプローラーのデータ接続パネルでこれを試してください。

Data source name: SPRPRG020/VENUS

つまり、データソース名の形式はSERVER_NAME_OR_IP/DATABASE_NAMEです。

18
Rene Luna

ODP.NETをOracleDBに接続する知識があまりない場合は、接続パラメータでSERVICE_NAME(VENUSなど)の使用を開始することをお勧めします。

オラクルは次のように述べています。

11g以降、エイリアス/サービス名として/ etc/hostsファイルで提供されるホスト名を使用する機能が変更されました。その結果、ユーザーは接続時にサービス名を指定する必要がありますORデフォルトのサービス名でターゲットリスナーを設定します。

SERVICE_NAMEクライアント側の要件を回避する1つの方法は、リスナーにtnsnames.oraで送信するように指示することにより、常に同じSERVICEで送信するように強制することです。

DEFAULT_SERVICE_LISTENER =  VENUS

しかし、それはかなり制限されているので、そうすることはお勧めしません。

1
sokratisg

[データソース]フィールドで設定された[接続プロパティ]-> [詳細]で、Host/SERVICE_NAMEの形式の情報。例えば。 127.0.0.1/TEST

1
BolandT