11
回答
golang 在 redhat linux 下如何连接 oracle?
go 语言在linux下如何连接 oracle 数据库。
举报
L11758207
发帖于5年前 11回/3K+阅
共有11个答案 最后回答: 5年前

多谢,以前看到过这个库,但举例是win下。

刚搜到一个:

http://code.google.com/p/go-db-oracle/

好像不错,用 cgo

找依照go的oracle驱动吧,如果是纯go实现的到不同的平台上编译下就ok了,如果是go调用c的lib实现的就不容易实现跨平台

在接口包

 go-db-oracle-read-only 中编译时的 Makefile 为:

# Copyright 2011 Antonio Diaz Gil. All rights reserved.


include $(GOROOT)/src/Make.inc


PKGDIR=$(GOROOT)/pkg/$(GOOS)_$(GOARCH)


TARG=go-db-oracle
CGOFILES=ColumnOracle.go StatementOracle.go ConnectionOracle.go DriverOracle.go
#CGO_LDFLAGS=-lclntsh
#INC=/opt/oracle/instantclient_11_2/sdk/include


include $(GOROOT)/src/Make.pkg

故必须下载 oracle 的 SDK.


如果使用了 tnsnames.ora 文件定义的 Oracle Net 服务名称,则将 tnsnames.ora 复制到 c:\instantclient,并添加用户环境变量 TNS_ADMIN 设置为你的解压目录如 c:\instantclient。(也可以在用户环境变量 LOCAL 中定义默认的服务名称。 )

设置必要的 Oracle 全球化语言环境变量, NLS_LANG 中文对应的字符集是

SIMPLIFIED CHINESE_CHINA.ZHS16GBK 。

一共设置以下三个环境变量(以解压缩目录c:\instantclient为例)

环境变量名                              变量值

path                                      c:\instantclient (添加 “;”分隔)


TNS_ADMIN                            c:\instantclient (新增)

 

Oracle_Name                    c:\instantclient (新增)

 

解决乱码:NLS_LANG                             SIMPLIFIED CHINESE_CHINA.ZHS16GBK  (新增)


// 数据库配置文件目录    
E:\oracle\ora92\network\admin\tnsnames.ora    
   
   
(数据库名)    
FWMSDB =    
   (DESCRIPTION =    
     (ADDRESS_LIST =                       服务器ip    
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.176.33.69)(PORT = 1521))    
     )    
     (CONNECT_DATA =    
       (SERVICE_NAME = oracleDB)    
     )    
   )



顶部