Se sei ancora interessato, lavoro con Go e Oracle su Windows da alcuni mesi ormai. Il mio pilota preferito finora è go-oci8. È molto più veloce di goracle e sembra essere più attivo.
Alcune delle nostre applicazioni devono essere distribuite su computer a cui non abbiamo accesso. Entrambi i driver SQL nativi sono compilati con l'applicazione senza la necessità di alcuna configurazione esterna, quindi questo è un enorme vantaggio. Il computer avrà ancora bisogno dell'installazione del client Oracle, ma questa è l'unica dipendenza esterna.
Non dirò che go-oci8 è ancora pronto per la produzione, ma è abbastanza stabile quando conosci i suoi limiti. Un esempio è che va nel panico quando viene eseguito su più goroutine contemporaneamente, quindi se ne hai bisogno potresti voler usare un mutex.
Fondamentalmente ho seguito questo tutorial per installarlo:https://gist.github.com/mnadel/8678269
La parte più complicata è stata creare correttamente oci8.pc. Il mio è:
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}
Alcune cose potrebbero essere ridondanti, potrei provare a migliorarlo su una macchina pulita.
Una cosa importante da tenere a mente è che dovresti usare la stessa architettura per Go e il client Oracle. Quindi, se desideri utilizzare la versione a 64 bit di Go, avrai bisogno anche della versione a 64 bit di Oracle. Ho entrambe le versioni a 32 e 64 bit di entrambi e, sebbene 64 bit sia la mia impostazione predefinita, utilizzo i file bat per modificare i percorsi e le variabili di ambiente necessari quando devo creare una versione a 32 bit.
Potrebbe valere la pena investire del tempo per farlo funzionare, probabilmente otterrai prestazioni molto migliori rispetto all'utilizzo di ODBC. L'ho usato con un volume di dati piuttosto elevato (query che recuperano oltre 5 milioni di righe) e funziona molto bene.