それでも興味があれば、私はWindowsでGoとOracleを数か月間使用しています。これまでの私のお気に入りのドライバーはgo-oci8です。 goracleよりもはるかに高速で、よりアクティブになっているようです。
一部のアプリケーションは、アクセスできないコンピューターにデプロイする必要があります。両方のネイティブSQLドライバーは、外部構成を必要とせずにアプリケーションでコンパイルされるため、これは大きなプラスです。コンピュータには引き続きOracleクライアントをインストールする必要がありますが、それが唯一の外部依存関係です。
go-oci8はまだ本番環境に対応しているとは言いませんが、その制限を知っていれば十分に安定しています。 1つの例は、複数のゴルーチンで同時に実行するとパニックになるため、必要に応じてミューテックスを使用することをお勧めします。
私は基本的にこのチュートリアルに従ってインストールしました: https://gist.github.com/mnadel/8678269
最もトリッキーな部分は、oci8.pcを正しく作成することでした。私のは:
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}
冗長なものもあるかもしれませんが、クリーンなマシンで改善しようとするかもしれません。
覚えておくべき重要なことは、GoとOracleクライアントに同じアーキテクチャを使用する必要があるということです。したがって、64ビットバージョンのGoを使用する場合は、64ビットバージョンのOracleも必要になります。私は両方の32ビットバージョンと64ビットバージョンの両方を持っています。64ビットがデフォルトですが、32ビットバージョンをビルドする必要がある場合は、batファイルを使用して必要なパスと環境変数を変更します。
それを機能させるために時間を費やす価値があるかもしれません。おそらくODBCを使用するよりもはるかに優れたパフォーマンスが得られるでしょう。やや大量のデータ(500万行以上をフェッチするクエリ)で使用しており、非常にうまく機能します。