ubuntu oracle 工具,ubuntu16.04搭建oracle环境用于golang开发

镜像版本

在docker hub上搜索oracle,随便找了一个xe 11版本的镜像。

docker pull deepdiver/docker-oracle-xe-11g

镜像大小在1G左右,下载完成解压后大约2.7GB。

运行

docker run -d -p 1522:22 -p 1521:1521 --name oracle deepdiver/docker-oracle-xe-11g

使用以上命令运行oracle。等1分钟左右,使用ssh root@localhost -p 1522可进入该容器,密码是admin。

进入bash环境后,执行如下命令,可解决中文乱码问题。

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

镜像已经安装了sqlplus工具,可直接使用该工具进行连接,默认的system用户的密码是oracle。登录时会提示密码即将获取,改下密码即可。

# 使用sqlplus连接oracle

sqlplus system/oracle@//localhost/xe

# 修改密码

alter user system identified by oracle;

ubuntu16.04安装client

下载

在页面下载当前版本的basic和sdk client包,我这边下载的是19.3版本,文件是instantclient-basic-linux.x64-19.3.0.0.0dbru.zip , instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip。

创建/opt/oracle目录,将上面两个文件移动到/opt/oracle目录并解压,将得到/opt/oracle/instantclient_19_3目录

配置oci8

可通过/usr/lib/pkgconfig目前是否存在确定当前ubuntu16.04已经安装过pkg_config,直接在该目录下新增oci8.pc,内容如下:

prefix=/opt/oracle/instantclient_19_3

exec_prefix=${prefix}

libdir=${exec_prefix}

includedir=${prefix}/sdk/include

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: 19.3

配置环境变量

配置如下环境变量,不然golang执行会报错

export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_3

golang

编写单元测试用于oracle连接测试,先import驱动

import(

_ "github.com/mattn/go-oci8"

)

获取连接

func getConn() (*sql.DB, error) {

db, err := sql.Open("oci8", "system/oracle@localhost/xe")

if err != nil {

logrus.Errorf("init sql connection error:%s", err.Error())

return db, err

}

// defer db.Close()

if err = db.Ping(); err != nil {

logrus.Errorf("open sql connection error:%s", err.Error())

return db, err

}

return db, err

}

调用存储过程

func TestOracleV2(t *testing.T) {

db, err := getConn()

if err != nil {

return

}

loginStmt, err := db.Prepare(`begin PKG_SMS_INTERFACE.send_sms('ms','短信平台密码',:1,:2,1,sysdate,:3);end;`)

var result string

defer loginStmt.Close()

_, err = loginStmt.Exec("181027", "回家吃饭了", sql.Out{Dest: &result})

if err != nil {

logrus.Errorf("exec error:%s", err.Error())

return

}

fmt.Println(result)

}

调用结果:

=== RUN TestOracleV2

success

--- PASS: TestOracleV2 (0.03s)

通过sqlplus查询表中的数据:

PHONE

--------------------

CONTENT

--------------------------------------------------------------------------------

SEND_TIME

--------------

10.20.0.5:3906,2019-05-17 08:55:06

17-5月 -19

181027

回家吃饭了

17-5月 -19

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值