sql >> Databáze >  >> RDS >> Oracle

Oracle.Dataaccess je v GAC. Mohu ovládat verzi, kterou používám?

Je možné přinutit vaši aplikaci, aby vždy používala verzi ODP a ODAC, kterou chcete.

  1. Vynutit verzi ODP:použijte trik AssemblyBinding, který zveřejnil Robert, k vynucení použití vaší verze Oracle.DataAccess místo verze GAC'd. Např.:

    <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. Vynutit verzi ODAC:DLL ODP závisí na sadě sdílených součástí Oracle (okamžitý klient, nespravované knihovny DLL OCI). Jedním ze způsobů, jak je získat, je prostřednictvím balíčku ODAC. Můžete definovat (na základě aplikace), který balíček ODAC chcete použít. Tradičně se to dělalo pomocí proměnné PATH env, ale nyní ji lze definovat pomocí 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. Jako další preventivní opatření můžete vždy smazat knihovnu DLL zásad vydavatele GAC, abyste zajistili, že se nikdy nebude dít nic neobvyklého.



  1. Příklady PLSQL kurzorů – Explicitní, implicitní a referenční kurzory

  2. SQL:Kde mezi dvěma daty bez roku?

  3. Oracle Trigger pro aktualizaci stejné tabulky

  4. Práce kolem zmeškaných optimalizací