Oracle
 sql >> Database >  >> RDS >> Oracle

Problema VB.NET durante la connessione a Oracle 11g

Sento il tuo dolore, ho appena vissuto qualcosa di simile in una situazione di schieramento. Probabilmente hai più client installati e il tuo ambiente sta estraendo dll per versioni precedenti (anche se hai un oracle.dataaccess.dll più recente correttamente referenziato nel tuo progetto). Risolvere questo problema nel tuo ambiente di sviluppo è una cosa, un server di distribuzione prod è un'altra. Non sono sicuro di quale sia la tua situazione di distribuzione, ma ecco cosa ha funzionato per me.

Dopo aver lottato con il tentativo di aggiornare odp.net nella casa di oracolo esistente, aggiungendo una nuova casa di oracolo, ecc., Ho scoperto che il modo più semplice per risolvere tutto è scaricare l'ultimo odac con distribuzione xcopy da Oracle e segui il readme (e consulta qui per un vecchio articolo anche su questo). Fondamentalmente eseguirai un file install.bat per l'installazione localmente (in una cartella separata, la mia era c:\oracle_odac), quindi cambierai il riferimento del tuo progetto in modo che punti a oracle.dataaccess.dll in questa nuova cartella (ho usato 4 invece di 2.x) e aggiungi le directory bin della nuova cartella davanti al tuo percorso (c:\oracle_odac\bin e c:\oracle_odac\odp.net\bin\4). Sul tuo server di distribuzione, dovrai solo copiare l'intera cartella c:\oracle_odac (tramite xcopy o comunque) e impostare il percorso.

Detto questo, attendo con ansia il rilascio di produzione del completamente gestito odp.net da Oracle (in beta ora).

EDIT:solo per aggiungere che puoi evitare di fare confusione con i PATH se imposti nella tua app o nel file di configurazione web il dllpath. Ad esempio:

<configuration>
...
    <configSections>
      <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  
...

<oracle.dataaccess.client>
    <settings>
      <add name="DllPath" value="c:\oracle_odac\bin"/>
    </settings>
  </oracle.dataaccess.client>
...

Questo sovrascriverà altre impostazioni come registro o machine.config. E consentirà a più configurazioni di odp.net di esistere pacificamente e consentirà a ciascuna app di puntare alla versione di cui ha bisogno sullo stesso server.