Falls es dich noch interessiert, ich arbeite seit einigen Monaten mit Go und Oracle unter Windows. Mein Lieblingstreiber ist bisher go-oci8. Es ist viel schneller als Goracle und scheint aktiver zu sein.
Einige unserer Anwendungen müssen auf Computern bereitgestellt werden, auf die wir keinen Zugriff haben. Beide nativen SQL-Treiber werden mit der Anwendung kompiliert, ohne dass eine externe Konfiguration erforderlich ist, was ein großes Plus ist. Auf dem Computer muss weiterhin der Oracle-Client installiert sein, aber das ist die einzige externe Abhängigkeit.
Ich werde nicht sagen, dass go-oci8 schon produktionsreif ist, aber es ist stabil genug, wenn man seine Grenzen kennt. Ein Beispiel ist, dass es panisch wird, wenn es auf mehreren Goroutinen gleichzeitig ausgeführt wird. Wenn Sie das also brauchen, sollten Sie vielleicht einen Mutex verwenden.
Ich habe im Grunde dieses Tutorial befolgt, um es zu installieren:https://gist.github.com/mnadel/8678269
Der schwierigste Teil war die korrekte Erstellung von oci8.pc. Meine ist:
prefix=/devel/target/1.0
exec_prefix=${prefix}
libdir=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
includedir=C:/oracle/instantclient_12_1_64/sdk/include
oralib=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
orainclude=C:/oracle/instantclient_12_1_64/sdk/include
gcclib=c:/MinGW_64/mingw64/lib
gccinclude=c:/MinGW_64/mingw64/lib
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Version: 12.1
Description: oci8 library
Libs: -L${oralib} -L${gcclib} -loci
Libs.private:
Cflags: -I${orainclude} -I${gccinclude}
Einige Dinge könnten überflüssig sein, ich könnte versuchen, sie auf einer sauberen Maschine zu verbessern.
Beachten Sie unbedingt, dass Sie für Go und den Oracle-Client dieselbe Architektur verwenden sollten. Wenn Sie also die 64-Bit-Version von Go verwenden möchten, benötigen Sie auch die 64-Bit-Version von Oracle. Ich habe sowohl 32- als auch 64-Bit-Versionen von beiden, und obwohl 64-Bit meine Standardeinstellung ist, verwende ich bat-Dateien, um die erforderlichen Pfade und Umgebungsvariablen zu ändern, wenn ich eine 32-Bit-Version erstellen muss.
Es könnte sich lohnen, etwas Zeit zu investieren, damit es funktioniert, Sie werden wahrscheinlich eine viel bessere Leistung erzielen als mit ODBC. Ich habe es mit einem etwas hohen Datenvolumen verwendet (Abfragen, die mehr als 5 Millionen Zeilen abrufen) und es funktioniert sehr gut.