Golang 在 Ubuntu 14.04 上使用 Oracle 数据库

本文参考了以下地址的文章:
 
https://github.com/Centny/Centny/blob/master/Articles/How%20build%20github.com%3amattn%3ago-oci8.md​

一、安装Oracle的OCI套件

1、OCI下载链接页面下载(instantclient-basic,instantclient-sdk)
 
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
 
2、解压缩到同一个目录下,比如:instantclient_12_1

3、root权限移动文件夹到目录 /usr/lib 下

2、root权限执行以下命令

      ##​ 其实直接cp拷贝过去也是一样的
 
      ln /usr/lib/instantclient_12_1/libclntsh.so.12.1 /usr/lib/libclntsh.so
        ln /usr/lib/instantclient_12_1/libocci.so.12.1 /usr/lib/libocci.so
        ln /usr/lib/instantclient_12_1/libociei.so /usr/lib/libociei.so
 
      ln /usr/lib/instantclient_12_1/libnnz12.so /usr/lib/libnnz12.so
 
      ## 以下两条是为了运行sqlplus命令
 
      ln /usr/lib/instantclient_12_1/​libsqlplusic.so /usr/lib/libsqlplusic.so​
 

      ln /usr/lib/instantclient_12_1/libsqlplus.so /usr/lib/libsqlplus.so​
 ​
        ##​ 把 OCI路径加入系统加载动态库的路径中,并重新加载一次
        ​echo /opt/oracle/instantclient >> /etc/ld.so.conf
        ​ldconfig
 
  3、安装pkg-config
 
  4、在 /usr/lib/pkgconfig 目录下创建文件 oci8.pc,内容如下:
 
                prefix=<replace instantclient path>   
 // 路径改为/usr/lib/instantclient_12_1
              libdir=${prefix}
              includedir=${prefix}/sdk/include/
 
              Name: OCI
              Description: Oracle database engine
              Version: 12.1                                           
 // 版本改为实际的版本号
              Libs: -L${libdir} -lclntsh
              Libs.private:
              Cflags: -I${includedir}
 

5、直接运行步骤6会报libaio不存在的错误,安装libaio库

sudo apt-get install libaio1

6、安装go-oci8

go get github.com/mattn/go-oci8​

7、.bashrc 文件中添加系统变量

# OCI安装目录​
export ORACLE_HOME=/usr/lib/instantclient_12_1
# ​tnsnames.ora 文件地址​
​export TNS_ADMIN=$ORACLE_HOME/network/admin
# OCI安装目录加入动态库加载路径​
​export LD_LIBRARY_PATH=$ORACLE_HOME
#  oci8.pc文件所在路径
export PKG_CONFIG_PATH=/usr/lib/pkgconfig

8、 tnsnames.ora 文件的内容

​awsdb=
 (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.126)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = awsdb)
    )
 )
 

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

相关推荐