sql >> データベース >  >> RDS >> Oracle

Oracle.DataaccessはGACにあります。使用するバージョンを制御できますか?

    アプリケーションに、必要なODPおよびODACバージョンを常に使用するように強制することができます。

    1. ODPバージョンを強制する:Robertによって投稿されたassemblyBindingトリックを使用して、GACのバージョンの代わりにOracle.DataAccessのバージョンを強制的に使用します。例:

      <configuration>
        <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="Oracle.DataAccess"  culture="neutral" publicKeyToken="89b483f429c47342"/>
              <codeBase version="4.112.3.0" href="FILE://Oracle.DataAccess.dll"/>
            </dependentAssembly>
          </assemblyBinding>
        </runtime>
      </configuration>
      
    2. ODACバージョンの強制:ODP DLLは、共有Oracleコンポーネントのセット(インスタントクライアント、アンマネージドOCI dll)に依存します。これらを取得する1つの方法は、ODACパッケージを使用することです。使用するODACパッケージを(アプリごとに)定義できます。従来、これはPATH env変数を介して行われていましたが、config:

      を介して定義できるようになりました。
      <configuration>
        <configSections>
          <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </configSections>
      
        <oracle.dataaccess.client>
          <settings>
            <add name="DllPath" value="C:\somefolder\ODAC_11.2.0.3.0_32bit\bin" />
          </settings>
        </oracle.dataaccess.client>
      </configuration>
      
    3. 追加の予防策として、GACの発行元ポリシーDLLをいつでも削除して、ファンキーなことが起こらないようにすることができます。



    1. Oracle PL/SQL文字列比較の問題

    2. Spring Boot、PostgreSQL、Docker-コンテナでの実行中に接続が拒否されました

    3. Postgres次/前行SQLクエリ

    4. SQLAlchemyでENUMを作成するにはどうすればよいですか?