Jeśli nadal jesteś zainteresowany, od kilku miesięcy współpracuję z Go i Oracle w systemie Windows. Moim ulubionym kierowcą do tej pory jest go-oci8. Jest znacznie szybszy niż goracle i wydaje się być bardziej aktywny.
Niektóre z naszych aplikacji muszą zostać wdrożone na komputerach, do których nie mamy dostępu. Oba natywne sterowniki SQL są kompilowane z aplikacją bez potrzeby jakiejkolwiek zewnętrznej konfiguracji, więc jest to ogromny plus. Komputer nadal będzie wymagał zainstalowanego klienta Oracle, ale jest to jedyna zewnętrzna zależność.
Nie powiem, że go-oci8 jest jeszcze gotowe do produkcji, ale jest wystarczająco stabilne, gdy znasz jego ograniczenia. Jednym z przykładów jest panika, gdy działa na wielu gorutynach jednocześnie, więc jeśli potrzebujesz, możesz użyć mutexa.
Zasadniczo skorzystałem z tego samouczka, aby go zainstalować:https://gist.github.com/mnadel/8678269
Najtrudniejszą częścią było poprawne stworzenie oci8.pc. Mój to:
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}
Niektóre rzeczy mogą być zbędne, mogę spróbować je ulepszyć na czystej maszynie.
Ważną rzeczą, o której należy pamiętać, jest użycie tej samej architektury dla Go i klienta Oracle. Jeśli więc chcesz korzystać z 64-bitowej wersji Go, będziesz potrzebować również 64-bitowej wersji Oracle. Mam zarówno 32-, jak i 64-bitową wersję obu, i chociaż 64-bitowa jest moją domyślną wersją, używam plików bat do zmiany niezbędnych ścieżek i zmiennych środowiskowych, gdy potrzebuję zbudować wersję 32-bitową.
Może warto zainwestować trochę czasu, aby to zadziałało, prawdopodobnie uzyskasz znacznie lepszą wydajność niż przy użyciu ODBC. Używam go z dość dużą ilością danych (zapytania, które pobierają ponad 5 milionów wierszy) i działa bardzo dobrze.