8

ASPクラシックアプリケーションからOracleDBに接続しようとしていますが、ORA-12154エラーが発生し続けます。

  1. TNSNAMES.ORAが正しく構成されている

    DBSOURCE.ABcom =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = CDBcom)(PORT = 1231)))(CONNECT_DATA =(SERVICE_NAME = DBSOURCE)))

  2. TNSPINGできます

    C:\ Documents and Settings \ USERID.A> tnsping DBSOURCE

    32ビットWindows用のTNSPingユーティリティ:バージョン10.2.0.4.0-09-MAR-2011での本番09:12:31

    Copyright(c)1997、2007、Oracle。全著作権所有。

    使用されるパラメータファイル:C:\ oracle \ product \ 10.2.0 \ client_1 \ NETWORK \ ADMIN \ sqlnet.ora

    TNSNAMESアダプターを使用してエイリアスを解決しました(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = CDBcom)(PORT = 1231)))(CONNECT_DATA =(SERVIC E_NAME = DBSOURCE)))OK(30 msec)

  3. ODBC接続を作成でき、成功する接続をテストしました。

  4. ヒキガエルを介してOracleデータベースに接続できます。
  5. sqlnet.oraファイルを確認しました

    NAMES.DEFAULT_DOMAIN = ABcom

    SQLNET.AUTHENTICATION_SERVICES =(なし)

    NAMES.DIRECTORY_PATH =(TNSNAMES、EZCONNECT)

  6. また、システムパスの1つとしてTNSNAMES.ORAを確認しました。

  7. SQLPLUSでDBに接続できます

エラーをスローするコードは次のとおりです

dim CnnStr

Set Cnn = Server.CreateObject("ADODB.Connection")

CnnStr="Provider=MSDAORA.1;Password=pass;User ID=user;Data Source=DBSOURCE"

Cnn.Open CnnStr

Windows XPPro32ビットSP3を実行しています

同僚のマシンでこれをテストしましたが、aspアプリに問題はありません。どこかに構成がありませんか、それとも構成を台無しにしましたか?

みんな助けてくれてありがとう!

4

7 に答える 7

4

すべての設定がチェックされているようですが、トラブルシューティングのための私の提案は次のとおりです。

  • IISが実行されているアカウントの制限はどうですか?TNSNAMESを読み取るためのファイル権限がありますか?ユーザーにより多くの権限を与えようとしましたか。ローカルをシステムアカウントとしてIISを実行することもできますか?元の状態に戻すことを忘れないでください。
  • アクセスに影響を与えたりブロックしたりする可能性のあるアンチウイルスやファイアウォールなどのサードパーティ製アプリはないと確信しています。(テストのためにそれらを無効にしますが、再度有効にすることを忘れないでください:)

(それを解決するために最終的に何をしましたか?)

于 2011-03-14T19:06:13.543 に答える
2

「これは同僚のマシンでは機能しますが、私のものでは機能しません。」

通常、ORA-12154は構成の問題であり、あなたの場合は確かにそう思われます。簡単な答えは、自分のマシンを同僚のマシンと比較して、違いが何であるかを理解することです。

チェックするものは次のとおりです。

  • TNANAMES.ORAファイル
  • SQLNET.ORAファイル
  • LISTENER.ORAファイル(ローカルデータベースを使用している場合)
于 2010-08-13T13:55:49.717 に答える
2

複数のOracleホームがありますか?IISが他のORA_HOMEを指していないことを確認します(したがって、tnsnames.oraエントリが見つかりません)。私はIISの構成にあまり詳しくないので、PC上のすべてのtnsnames.oraにTNSエントリを追加してこれをテストします。

于 2011-03-10T01:09:00.263 に答える
1

64ビットOSとOracle10を実行している場合は、Oracleのすべてのパッチをインストールしてみてください。私にも同様のことが起こりました。SQLplusと、.NETプログラムを除く他のすべてが機能しました。「プログラムファイル(x86)」フォルダから.Netプログラムを実行していました。パッチをインストールすると修正されました。

于 2010-08-18T20:55:53.930 に答える
1

考えられる問題は、IISが実行されているユーザーによるOracleディレクトリへの読み取り権限の欠如です。

@Derickが言うように、一時的に$ ORACLE_HOMEディレクトリ(Everyone = Full Control)でアクセス許可をワイドオープンに設定し、IISを再起動してテストします。それが機能する場合は、IISユーザーにそのディレクトリに対する読み取り権限を付与します。

この問題は、MicrosoftSysInternalsのProcessMonitorを使用して確認し、CreateFile(...)API呼び出し中にDLLを開くか、TNSNAMES.ORAファイルを読み取るときに失敗メッセージを確認することもできます。カーソルで選択するときに一時ファイルが機能する方法を考えると、IISユーザーに一部のディレクトリへの書き込みアクセス許可を与える必要がある場合もあります。

于 2011-03-14T19:48:07.263 に答える
0

問題のあるマシンの環境変数TNS_ADMINの値を/network/ admin(またはtnsnames.oraファイルが存在する場所)に設定してみて、それが役立つかどうかを確認してください。

于 2010-08-13T14:13:41.280 に答える
0

私も同様の問題を抱えていて、簡単な解決策を見つけました。構成ファイルを変更する必要はありません。これがお役に立てば幸いです。

CREATE DATABASE LINK server2_db
  CONNECT TO dbuser IDENTIFIED BY pwd USING
 '(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = server_2)(PORT = port_num))
   )
   (CONNECT_DATA =
     (SERVICE_NAME = server2_db)
   )
 )';

解決策はここからです:http://oraclequirks.blogspot.com/2008/11/ora-12154-tnscould-not-resolve-service.html

于 2014-09-05T13:53:37.620 に答える