Connecting Go to Oracle gives a bit more work than other databases. This is because the Oracle drivers not just link to C code, but also depend on specific environment settings. This post was first written with Windows in mind, but I added a section with Linux specific instructions below. This was tested with the following drivers:
First, remember, you will need the 32-bits version of everything (This works on 64-bits Windows, though). This is because some of the tools you will need are available just as 32-bits for Windows. So, first thing, check if the Go version you have is 32-bits.
/binPATH
C:\pkg-config
C:\instantclient_11_2C:\instantclient_11_2\sdkC:\instantclient_11_2PATH
C:\pkg-config\PKG_CONFIG_PATHoci8.pc
prefix=/devel/target/XXXXXXXXXXXXXXXXXXXXXXXXXX
exec_prefix=${prefix}
libdir=C:/instantclient_11_2/sdk/lib/msvc
includedir=C:/instantclient_11_2/sdk/include
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Version: 11.2
Description: oci8 library
Libs: -L${libdir} -loci
Cflags: -I${includedir}
C:\pkg-config\binPATHC:\pkg-config\PKG_CONFIG_PATHPKG_CONFIG_PATH
Restart any command prompt to make sure the new environment variables were reconized. If everything is OK, you should be able to properly install one of the Oracle packages:
go install -v github.com/rana/ora
# or
go install -v github.com/mattn/go-oci8
On Linux
This was tested on Ubuntu 16.04, x64 version. First, make sure you installed these tools:
sudo apt-get install build-essential pkg-config
For installing Oracle Client + SDK on Ubuntu, please carefully read and follow this guide on the oficial Ubuntu Wiki. This post won’t cover the SDK installation because it’s very well covered there.
PKG_CONFIG_PATHPKG_CONFIG_PATHoci8.pc
prefix=/devel/target/XXXXXXXXXXXXXXXXXXXXXXXXXX
exec_prefix=${prefix}
libdir=/usr/lib/oracle/11.2/client64/lib
includedir=/usr/include/oracle/11.2/client64
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh
Cflags: -I${includedir}
Version: 11.2
And try compile to see if everything is OK:
go install -v github.com/mattn/go-oci8
# or
go install -v github.com/rana/ora