golang 连接oracle 11g数据库

1.安装Oracle的OCI套件(确定系统是否安装gcc和libaio1) 下载地址:

Instant Client for Linux x86-64 (64-bit)

2.下载版本实例 

instantclient-basic-linux.x64-12.2.0.1.0.zip

instantclient-sdk-linux.x64-12.2.0.1.0.zip

instantclient-sqlplus-linux.x64-12.2.0.1.0.zip

3.按顺序解压到同一目录

11g: instantclient_12_2

4.root权限移动文件夹到目录 /usr/lib 下

5.root权限执行以下命令 11g:

ln /usr/lib/instantclient_12_2/libclntsh.so.12.1 /usr/lib/libclntsh.so

ln /usr/lib/instantclient_12_2/libocci.so.12.1 /usr/lib/libocci.so

ln /usr/lib/instantclient_12_2/libociei.so /usr/lib/libociei.so

ln /usr/lib/instantclient_12_2/libnnz12.so /usr/lib/libnnz12.so

以下两条是为了运行sqlplus

ln /usr/lib/instantclient_12_2/libsqlplusic.so /usr/lib/libsqlplusic.so

ln /usr/lib/instantclient_12_2/libsqlplus.so /usr/lib/libsqlplus.so

6.把 OCI路径加入系统加载动态库的路径中,并重新加载一次 11g:

echo /usr/lib/instantclient_12_2 >> /etc/ld.so.conf ldconfig

7.安装pkg-config

8.在/usr/lib 目录下创建pkgconfig 目录

9..在/usr/lib/pkgconfig 目录下创建文件oci8.pc,内容如下 11g:

prefix= /usr/lib/instantclient_12_2
libdir=${prefix}
includedir=${prefix}/sdk/include/
Name: oci8
Description: Oracle database engine
Version: 12.2
Libs: -L${libdir} -lclntsh
Libs.private:
Cflags: -I${includedir}

10.在~/.bashrc 文件中添加环境变量 11g:

# OCI安装目录
export ORACLE_HOME=/usr/lib/instantclient_12_2
#tnsnames.ora 文件地址需要创建network和admin目录(此步骤也可以省略)
#export TNS_ADMIN=$ORACLE_HOME/network/admin
#OCI安装目录加入动态库加载路径
export LD_LIBRARY_PATH=$ORACLE_HOME
#oci8.pc文件所在路径
export PKG_CONFIG_PATH=/usr/lib/pkgconfig

11.tnsnames.ora 文件的内容(如果export TNS_ADMIN=$ORACLE_HOME/network/admin 没有设置则不需操作此步骤)内容如下:

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)
    )
  )

12.安装go-oci8 (准备条件为:安装了git和go语言运行环境)

可连接网络:

go get github.com/mattn/go-oci8

不可连接网络:

13.在Gopath 下创建sql.go 测试连接文件

Sql.go

package main

import (
        "database/sql"
        "fmt"
        _ "github.com/mattn/go-oci8"
        "log"
        "os"
)

func main() {
        if len(os.Args) != 2 {
                log.Fatalln(os.Args[0] + " user/password@host:port/sid")
        }
        db, err := sql.Open("oci8", os.Args[1])
        if err != nil {
                log.Fatalln(err)
        }
        defer db.Close()
        rows, err := db.Query("select user from dual")
        if err != nil {
                log.Fatalln(err)
        }
        defer rows.Close()
        for rows.Next() {
                var data string
                rows.Scan(&data)
                fmt.Println(data)
        }
        if err = rows.Err(); err != nil {
                log.Fatalln(err)
        }
}

14.编译并运行测试文件

编译:go build –o sql sql.go

运行:./sql system/oracle@192.168.0.150:1521/testpdb

错误提示处理

1 error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

sudo yum install libaio

相关推荐

  1. golang 连接oracle 11g数据库

    2024-04-20 17:36:07       39 阅读
  2. 26.Oracle11g数据装载

    2024-04-20 17:36:07       61 阅读
  3. RMAN oracle 11g

    2024-04-20 17:36:07       29 阅读
  4. Oracle数据库连接方式

    2024-04-20 17:36:07       41 阅读
  5. Oracle 10g字符编码

    2024-04-20 17:36:07       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 17:36:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 17:36:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 17:36:07       82 阅读
  4. Python语言-面向对象

    2024-04-20 17:36:07       91 阅读

热门阅读

  1. 安卓手机APP开发__媒体开发部分__媒体源

    2024-04-20 17:36:07       40 阅读
  2. 蓝桥杯备考随手记: practise08

    2024-04-20 17:36:07       33 阅读
  3. 基于Python的招聘岗位数据分析系统的设计与实现

    2024-04-20 17:36:07       38 阅读
  4. QC、QA、SQC、SQA

    2024-04-20 17:36:07       43 阅读
  5. 签到接口流程总结

    2024-04-20 17:36:07       31 阅读
  6. Python3中的时间应用 (代码)

    2024-04-20 17:36:07       35 阅读
  7. 某互联网公司c++笔试题1

    2024-04-20 17:36:07       32 阅读
  8. 如何正确设计 TCP/IP 流式应用层网络协议

    2024-04-20 17:36:07       38 阅读
  9. coco128数据对象类别中英文对照json格式

    2024-04-20 17:36:07       37 阅读