Wie haben Sie den 32-Bit- und 64-Bit-Oracle-Client installiert?
Bitte sehen Sie sich diese Anleitung an:BadImageFormatException. Dies tritt auf, wenn im 64-Bit-Modus ausgeführt wird und die 32-Bit-Oracle-Clientkomponenten installiert sind
Kurzfassung:
Ihr Excel ist 32-Bit und Sie versuchen, das 32-Bit-Oracle zu verwenden. Ich nehme an, Sie starten die 64-Bit-Version von "ODBC Administrator" - es könnte eine Diskrepanz geben. Oder Sie haben ein Problem in Ihrem PATH
bezüglich %ORACLE_HOME%
und/oder %ORACLE_HOME%\bin
Ordner
Langfassung:
Ihr Excel ist 32-Bit, also haben Sie im Allgemeinen den richtigen Ansatz gewählt, indem Sie den 32-Bit-Client in PATH
eingefügt haben und für ORACLE_HOME
, können Sie 32-Bit- und 64-Bit-Assemblys nicht in einem Prozess mischen. Übrigens, wenn Sie den obigen Anweisungen folgen, wird Ihr Windows dies automatisch verwalten.
Ich nehme an, Sie haben den Oracle Instant Client installiert. Der standardmäßige Instant Client enthält weder ODBC-Treiber noch Oracle Data Provider (ODP.NET, Oracle.DataAccess.Client
)
ODBC
Möglicherweise haben Sie 2 ODBC-Treiber, einen von Oracle, der normalerweise als Oracle in OraClient12_home1 bezeichnet wird und eine von Microsoft namens Microsoft ODBC for Oracle (das standardmäßig bei der Windows-Installation installiert werden sollte, aber auch einen Oracle-Client benötigt).
Der ODBC-Treiber von Oracle ist für 32bit und 64bit verfügbar, der Microsoft-Treiber existiert nur für 32bit. Sie haben 2 ODBC-Administratoren, 32 Bit (führen Sie c:\Windows\SysWOW64\odbcad32.exe
aus ) und 64-Bit (führen Sie c:\Windows\System32\odbcad32.exe
aus ). Dort sollten Sie installierte Treiber für 32 bzw. 64-Bit.
Oracle-Datenanbieter
Für den Datenanbieter haben Sie eine ähnliche Situation. Sie haben einen von Microsoft (Microsoft .NET Framework Data Provider for Oracle , System.Data.OracleClient
) und von Oracle (Oracle Data Provider for .NET , Oracle.DataAccess.Client
, mehrere Versionen). Beide sind für 32-Bit und 64-Bit verfügbar.
Prinzipiell ist es egal, mit welchem Treiber/Anbieter Sie sich mit Oracle verbinden – lediglich die Architektur (also 32 vs. 64 Bit) muss passen. Jeder Treiber/Anbieter erfordert eine entsprechende Oracle Client-Installation. Alle Treiber/Anbieter von Microsoft sind veraltet, Sie sollten die von Oracle bevorzugen (wie in der Warnmeldung angegeben)
Andere
Oracle stellt auch den ODP.NET, Managed Driver bereit die keine weitere Oracle-Client-Installation erfordert und sowohl auf 32-Bit als auch auf 64-Bit läuft. Ich weiß jedoch nicht, ob Sie dies in Excel verwenden können.
Zu guter Letzt haben Sie auch OLE DB-Anbieter. Wieder eine von Microsoft (Microsoft OLE DB Provider for Oracle ) und eine von Oracle (Oracle Provider for OLE DB ). Der Microsoft-Anbieter existiert nur für 32-Bit und ist veraltet.