Pokud máte stále zájem, už pár měsíců pracuji s Go a Oracle na Windows. Můj oblíbený ovladač je zatím go-oci8. Je mnohem rychlejší než goracle a zdá se, že je aktivnější.
Některé z našich aplikací je třeba nasadit na počítačích, ke kterým nemáme přístup. Oba nativní SQL ovladače jsou kompilovány s aplikací bez nutnosti jakékoli externí konfigurace, což je obrovské plus. Počítač bude stále potřebovat nainstalovaného klienta Oracle, ale to je jediná externí závislost.
Neříkám, že go-oci8 je ještě připraven na výrobu, ale je dostatečně stabilní, když znáte jeho omezení. Jedním z příkladů je, že při běhu na více goroutech současně zpanikaří, takže pokud potřebujete, možná budete chtít použít mutex.
Při instalaci jsem v podstatě postupoval podle tohoto návodu:https://gist.github.com/mnadel/8678269
Nejsložitější částí bylo správné vytvoření oci8.pc. Můj je:
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}
Některé věci mohou být nadbytečné, mohl bych to zkusit vylepšit na čistém počítači.
Důležité je mít na paměti, že byste měli používat stejnou architekturu pro Go a klienta Oracle. Pokud tedy chcete používat 64bitovou verzi Go, budete potřebovat také 64bitovou verzi Oracle. Mám 32bitovou i 64bitovou verzi obou, a přestože je 64bitová verze moje výchozí, používám soubory bat ke změně nezbytných cest a proměnných prostředí, když potřebuji vytvořit 32bitovou verzi.
Možná by stálo za to investovat nějaký čas, aby to fungovalo, pravděpodobně získáte mnohem lepší výkon než pomocí ODBC. Používám jej s poněkud vysokým objemem dat (dotazy, které načítají více než 5 milionů řádků) a funguje velmi dobře.