镜像版

在 docker hub 上搜索 oracle,找到一个 xe 11 镜像。

搬运工拉深潜水员/搬运工-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环境后,执行以下命令解决中文乱码问题。

导出 NLS_LANGu003d"SIMPLIFIED CHINESE_CHINA.AL32UTF8"

镜像已经安装了sqlplus工具,可以直接连接。系统用户的默认密码是 oracle。登录时会提示即将获取密码。只需更改密码。

连接oracle和sqlplus

sqlplus 系统/oracle@//localhost/xe

更改密码

更改由 oracle 识别的用户系统;

Ubuntu 16.04 安装客户端

下载

在页面下载当前版本的basic和sdk客户端包。我在我这边下载版本 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

配置oci8

可以使用 /usr/lib/PKG config 来判断 Ubuntu 16.04 是否已经安装了 PKG config。直接在目录下添加oci8.pc。内容如下:

前缀u003d/opt/oracle/instantclient_19_3

exec_prefixu003d${前缀}

libdiru003d${exec_prefix}

includeiru003d${prefix}/sdk/include

glib_genmarshalu003dglib-genmarshal

gobject_queryu003dgobject 查询

glib_mkenumsu003dglib-mkenums

名称:oci8

说明:oci8库

库:-L${libdir} -lclntsh

Cflags:-I${includedir}

版本:19.3

配置环境变量

配置如下环境变量,否则golang执行会报错

导出 LD_LIBRARY_PATHu003d/opt/oracle/instantclient_19_3

golang

编写oracle连接测试的单元测试,先导入驱动

进口(

_“github.com/mattn/go-oci8”

)

获取连接

func getConn() (*sql.DB, 错误) {

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

如果错误 !u003d nil {

logrus.Errorf("初始化 sql 连接错误:%s", err.Error())

返回数据库,错误

}

// 延迟 db.Close()

如果错误 u003d db.Ping();错误!u003d无{

logrus.Errorf("打开 sql 连接错误:%s", err.Error())

返回数据库,错误

}

返回数据库,错误

}

zoz100027`

调用存储过程

func TestOracleV2(t *testing.T) {

分贝,错误 :u003d getConn()

如果错误 !u003d nil {

返回

}

begin PKG_SMS_INTERFACE.send_sms('ms','SMS platform password',:1,:2,1,sysdate,:3);end;

是结果字符串

推迟 loginStmt.Close()

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

如果错误 !u003d nil {

logrus.Errorf("执行错误:%s", err.Error())

返回

}

fmt.Println(结果)

}

调用结果:

u003du003du003d 运行测试OracleV2

成功

--- PASS:TestOracleV2 (0.03s)

通过sqlplus查询表中的数据:

祖兹 100033-

电话


内容


SEND_TIME


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

17-5月-19

181027

//回家吃饭

17-5月-19