sql >> Base de Datos >  >> RDS >> Oracle

Cómo conectarse a Oracle en go

Si aún está interesado, he estado trabajando con Go y Oracle en Windows durante algunos meses. Mi controlador favorito hasta ahora es go-oci8. Es mucho más rápido que Goracle y parece ser más activo.

Algunas de nuestras aplicaciones deben implementarse en computadoras a las que no tenemos acceso. Ambos controladores SQL nativos se compilan con la aplicación sin necesidad de ninguna configuración externa, por lo que es una gran ventaja. La computadora aún necesitará el cliente de Oracle instalado, pero esa es la única dependencia externa.

No diré que go-oci8 está listo para la producción todavía, pero es lo suficientemente estable cuando conoce sus limitaciones. Un ejemplo es que entra en pánico cuando se ejecuta en múltiples gorrutinas simultáneamente, por lo que si lo necesita, puede usar un mutex.

Básicamente he seguido este tutorial para instalarlo:https://gist.github.com/mnadel/8678269

La parte más complicada fue crear oci8.pc correctamente. El mío es:

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}

Algunas cosas pueden ser redundantes, podría intentar mejorarlas en una máquina limpia.

Una cosa importante a tener en cuenta es que debe usar la misma arquitectura para Go y el cliente de Oracle. Entonces, si desea utilizar la versión de 64 bits de Go, también necesitará la versión de 64 bits de Oracle. Tengo versiones de 32 y 64 bits de ambas, y aunque la predeterminada es de 64 bits, utilizo archivos bat para cambiar las rutas necesarias y las variables de entorno cuando necesito crear una versión de 32 bits.

Puede valer la pena invertir algo de tiempo para que funcione, probablemente obtendrá un rendimiento mucho mejor que con ODBC. Lo he estado usando con un volumen de datos algo alto (consultas que obtienen más de 5 millones de filas) y funciona muy bien.