linux 环境配置 go-oci8

使用 https://github.com/mattn/go-oci8 库连接oralce,以下主要记录环境配置过程:

1. 安装oracle客户端

下载路径:https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下载文件:

  • oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
  • oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
  • oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

rpm -ivh 依次安装,默认安装路径:/usr/lib/oracle/11.2/client64

2. 配置oci8.pc
  • 新建/usr/lib/pkg-config文件夹
  • 在文件夹下新建oci8.pc
    1
    2
    3
    4
    5
    6
    7
    8
    9
    prefix=/usr/lib/oracle/11.2/client64
    libdir=${prefix}/lib
    includedir=/usr/include/oracle/11.2/client64

    Name: oci8
    Description: Oracle Instant Client
    Version: 11.2
    Cflags: -I${includedir}
    Libs: -L${libdir} -lclntsh
3. 配置环境变量

编辑 /etc/profile

1
2
3
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export PKG_CONFIG_PATH=/usr/lib/pkg-config/

执行source /etc/profile 生效

4. 相关报错
  • go run main.go 报错:
    1
    2
    3
    4
    # command-line-arguments
    /root/go1.11.1/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
    /usr/bin/ld: cannot find -lclntsh
    collect2: error: ld returned 1 exit status

解决办法:

1
ln -s /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1  /usr/lib/libclntsh.so