2

私のセットアップでは、Visual Studio 2015 で構築された .NET アプリケーションがあり、Entity Framework 6 を使用して Oracle 12c データベースのデータにアクセスしようとしています。

これを達成するために私がしたことは次のとおりです。

  • nuget を使用してOfficial Oracle ODP.NET、マネージド エンティティ フレームワーク ドライバー、およびその依存関係をインストールする方法について、oracle.com のチュートリアルに従いました。
  • tnsnames.ora と sqlnet.ora が見つかることを確認しました。(環境変数 TNS_ADMIN が正しく構成されている)
  • ここで実際に何が起こっているかを確認するために、Oracle ドライバーのトレース ログを有効にしました。
  • いくつかのエンティティをマップする EDMX ファイルを作成しました (これには、以下で説明する回避策が既に必要です)

これが私の App.config の外観です (読みやすくするために導入された改行):

  <oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="TraceLevel" value="7" />
        <setting name="TraceOption" value="0" />
        <setting name="TraceFileLocation" value="C:\Temp" />
        <setting name="TNS_ADMIN" value="c:\Temp\tns" />
      </settings>
    </version>
  </oracle.manageddataaccess.client>
  <connectionStrings>
    <add name="MyModel"  
         connectionString="metadata=res://*/UDBModel.csdl|res://*/UDBModel.ssdl|res://*/UDBModel.msl;
                           provider=Oracle.ManagedDataAccess.Client;
                           provider connection string=&quot;User Id=*****;Password=*****;Data Source=MYDATASOURCE.WORLD;&quot;" 
         providerName="System.Data.EntityClient" />

データベースにアクセスしようとすると、これは例外で失敗します:

"ORA-12533: Netzwerksession: Syntaxfehler bei Verbindungstransportadresse"

オラクルのドキュメントによると、これは次のように変換されます

"ORA-12533: TNS: 無効な ADDRESS パラメータ"

トレース ログは、tnsnames.ora が正しく解決されたことを示しています。

TNS 名の代わりに IP アドレスとポートを使用すると、接続は正常に機能します。しかし、tnsnames.ora は当社のデータベース管理者によって管理されるため、IP アドレスを使用してサーバーのアドレスを指定することはできません。

また、古いドライバ (Oracle.DataAccess.dll など) は、この設定を使用してデータベースにアクセスしても問題ありません。

編集:私が現在使用している tnsnames.ora ファイルは次のとおりです。

MYDATASOURCE.WORLD = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = IPC)(KEY = MYDATASOURCE))
    (ADDRESS = (COMMUNITY = TCP.world)(PROTOCOL = TCP)(Host = myds.example.com)(Port = 1530)))
    (CONNECT_DATA = (SID = MYDATASOURCE))
  )

ここで何が間違っていますか?

注: これに似た質問があります。ただし、その場合に役立つ解決策はここでは役に立ちませんでした。そこで発生した例外は、ここで発生したものとは異なります。

4

2 に答える 2

2

ORA-12533: TNS: ADDRESSパラメータが不正です

原因:無効なプロトコル・アダプタ・パラメータのセットが指定されました。場合によっては、プロトコル トランスポートに接続できない場合に、このエラーが返されます。

処置:指定されたプロトコルを使用して宛先に到達できることを確認してください。TNSNAMES.ORA の ADDRESS セクション内のパラメータを確認してください。有効な ADDRESS パラメータの形式は、プラットフォームの Oracle オペレーティング システム固有のドキュメントに記載されています。トランスポート層で名前を解決するプロトコル (DECnet オブジェクト名など) は、適切に構成されていないか、名前のつづりが間違っている場合、このエラーに対して脆弱です。

COMMUNITYtnsnames.oraは、Oracle バージョン 10g 以降ではサポートされていないネットワーク パラメータです。したがって、このパラメータを削除して のみを保持すると、修正さ(PROTOCOL=tcp)れるはずです。また、Oracleファイルで使用できない最初のADDRESSパラメーターを削除します。Listener.ora

サポートされていないパラメータ

于 2016-10-05T11:15:03.690 に答える