本文參考了以下地址的文章:
https://github.com/Centny/Centny/blob/master/Articles/How%20build%20github.com%3amattn%3ago-oci8.md
Golang通過Thrift框架完美實現跨語言調用 http://www.linuxidc.com/Linux/2013-09/90748.htm
golang裡如何將一個struct指針轉換成slice http://www.linuxidc.com/Linux/2013-04/83106.htm
Ubuntu 安裝Go語言包 http://www.linuxidc.com/Linux/2013-05/85171.htm
《Go語言編程》高清完整版電子書 http://www.linuxidc.com/Linux/2013-05/84709.htm
Go語言並行之美 -- 超越 “Hello World” http://www.linuxidc.com/Linux/2013-05/83697.htm
一、安裝Oracle的OCI套件
1、OCI下載鏈接頁面下載(instantclient-basic,instantclient-sdk)
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
2、解壓縮到同一個目錄下,比如:instantclient_12_1
3、root權限移動文件夾到目錄 /usr/lib 下
2、root權限執行以下命令
## 其實直接cp拷貝過去也是一樣的
ln /usr/lib/instantclient_12_1/libclntsh.so.12.1 /usr/lib/libclntsh.so
ln /usr/lib/instantclient_12_1/libocci.so.12.1 /usr/lib/libocci.so
ln /usr/lib/instantclient_12_1/libociei.so /usr/lib/libociei.so
ln /usr/lib/instantclient_12_1/libnnz12.so /usr/lib/libnnz12.so
## 以下兩條是為了運行sqlplus命令
ln /usr/lib/instantclient_12_1/libsqlplusic.so /usr/lib/libsqlplusic.so
ln /usr/lib/instantclient_12_1/libsqlplus.so /usr/lib/libsqlplus.so
## 把 OCI路徑加入系統加載動態庫的路徑中,並重新加載一次
echo /opt/oracle/instantclient >> /etc/ld.so.conf
ldconfig
3、安裝pkg-config
4、在 /usr/lib/pkgconfig 目錄下創建文件 oci8.pc,內容如下:
prefix=<replace instantclient path>
// 路徑改為/usr/lib/instantclient_12_1
libdir=${prefix}
includedir=${prefix}/sdk/include/
Name: OCI
Description: Oracle database engine
Version: 12.1
// 版本改為實際的版本號
Libs: -L${libdir} -lclntsh
Libs.private:
Cflags: -I${includedir}
5、直接運行步驟6會報libaio不存在的錯誤,安裝libaio庫
sudo apt-get install libaio1
6、安裝go-oci8
go get github.com/mattn/go-oci8
7、.bashrc 文件中添加系統變量
# OCI安裝目錄
export ORACLE_HOME=/usr/lib/instantclient_12_1
# tnsnames.ora 文件地址
export TNS_ADMIN=$ORACLE_HOME/network/admin
# OCI安裝目錄加入動態庫加載路徑
export LD_LIBRARY_PATH=$ORACLE_HOME
# oci8.pc文件所在路徑
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
8、 tnsnames.ora 文件的內容
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)
)
)
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/102787p2.htm