Visual Studio 2010のサーバーエクスプローラを使用してローカルのOracle11gデータベースに接続しようとしています。指示に従ってすべてをセットアップしようとしましたが、ORA-12504エラーが発生します。
エラーは次のとおりです。
これが私の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
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
VisualStudioのサーバーエクスプローラーのデータ接続パネルでこれを試してください。
Data source name: SPRPRG020/VENUS
つまり、データソース名の形式はSERVER_NAME_OR_IP/DATABASE_NAMEです。
ODP.NETをOracleDBに接続する知識があまりない場合は、接続パラメータでSERVICE_NAME(VENUSなど)の使用を開始することをお勧めします。
オラクルは次のように述べています。
11g以降、エイリアス/サービス名として/ etc/hostsファイルで提供されるホスト名を使用する機能が変更されました。その結果、ユーザーは接続時にサービス名を指定する必要がありますORデフォルトのサービス名でターゲットリスナーを設定します。
SERVICE_NAMEクライアント側の要件を回避する1つの方法は、リスナーにtnsnames.oraで送信するように指示することにより、常に同じSERVICEで送信するように強制することです。
DEFAULT_SERVICE_LISTENER = VENUS
しかし、それはかなり制限されているので、そうすることはお勧めしません。
[データソース]フィールドで設定された[接続プロパティ]-> [詳細]で、Host/SERVICE_NAMEの形式の情報。例えば。 127.0.0.1/TEST