This is a creation in Article, where the information may have evolved or changed.
Connecting Go to Oracle gives a bit more work than other databases. This is because the Oracle drivers isn't just link to C code, but also depend on specific environment settings. This post is first written with Windows on mind, but I added a sections with Linux specific instructions below. This is tested with the following drivers:
First, remember, you'll need the 32-bits version of Everything (this works on 64-bits Windows, though). This is because some of the tools you'll need is available just as 32-bits for Windows. So, first thing, check if the Go version of you has is 32-bits.
Second, you'll need to install the Oficial MinGW package (again, 32-bits). Don ' t forget to add the /bin
folder inside the MinGW installation to the PATH
.
Now, create a folder called C:\pkg-config
, and extract these three ZIP files inside:
- Http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip
- Http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip
- Http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip
Now download the Oracle client (32-bits) and put it on C:\instantclient_11_2
. Also Download the Oracle SDK (32-bits) and put on C:\instantclient_11_2\sdk
. C:\instantclient_11_2
should is added to your PATH
.
Now create a folder C:\pkg-config\PKG_CONFIG_PATH
, and create a file called oci8.pc
inside with the following content:
prefix=/devel/target/XXXXXXXXXXXXXXXXXXXXXXXXXXexec_prefix=${prefix}libdir=C:/instantclient_11_2/sdk/lib/msvcincludedir=C:/instantclient_11_2/sdk/includeglib_genmarshal=glib-genmarshalgobject_query=gobject-queryglib_mkenums=glib-mkenumsName: oci8Version: 11.2Description: oci8 libraryLibs: -L${libdir} -lociCflags: -I${includedir}
Add to and to C:\pkg-config\bin
PATH
C:\pkg-config\PKG_CONFIG_PATH
a environment variable called PKG_CONFIG_PATH
.
Restart any command prompt to make sure the new environment variables were reconized. If Everything is OK, you should are able to properly install one of the Oracle packages:
go install -v github.com/rana/ora# orgo install -v github.com/mattn/go-oci8
On Linux
This is tested on Ubuntu 16.04, x64 version. First, make sure installed these tools:
sudo apt-get install build-essential pkg-config
For installing Oracle Client + SDK on Ubuntu, please carefully read and follow the The Oficial Ubuntu Wiki. This post won ' t cover the SDK installation because it's very well covered there.
Once you do the installation, create a folder called in a place you PKG_CONFIG_PATH
remember later, and then a environment variable Called PKG_CONFIG_PATH
pointing to this folder. Then, create a file called with the oci8.pc
following template (instead of the above for Windows):
prefix=/devel/target/XXXXXXXXXXXXXXXXXXXXXXXXXXexec_prefix=${prefix}libdir=/usr/lib/oracle/11.2/client64/libincludedir=/usr/include/oracle/11.2/client64glib_genmarshal=glib-genmarshalgobject_query=gobject-queryglib_mkenums=glib-mkenumsName: oci8Description: oci8 libraryLibs: -L${libdir} -lclntshCflags: -I${includedir}Version: 11.2
and try compile to see if everything is OK:
go install -v github.com/mattn/go-oci8# orgo install -v github.com/rana/ora