golang linux 連接oracle數(shù)據(jù)庫(kù)

connect oracle database in linux

build go file in linux server ,test connect to oracle db

在linux server上吃谣,編譯go代碼宫患,測(cè)試連接oracle數(shù)據(jù)庫(kù)。

I am coding on mac os and I will deploy it to a linux server安接。 cross compile break down! so~。

安裝golang 確保golang運(yùn)行正常护奈,可以跳過(guò)準(zhǔn)備工作次屠。

準(zhǔn)備工作

打算下載下go-oci8發(fā)現(xiàn)報(bào)錯(cuò)

go get github.com/mattn/go-oci8

嘗試了 curl,發(fā)現(xiàn)也報(bào)錯(cuò)

curl https://github.com/mattn/go-oci8
curl: (35) SSL connect error

yum安裝nss發(fā)現(xiàn)404

yum update nss

更新 yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bac
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum clean all
yum makecache

再次更新nss,成功

yum update nss

再次安裝go-oci8

go get github.com/mattn/go-oci8

下載instantclient

instantclient-basic-macos.x64-11.2.0.4.0
instantclient-sdk-macos.x64-11.2.0.4.0
download http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

解壓instantclient

unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip
[root@localhost instantclient_11_2]# pwd
/root/instantclient_11_2
[root@localhost instantclient_11_2]# ls -al
總用量 183540
drwxr-xr-x   3 root root      4096 7月  19 15:01 .
dr-xr-x---. 44 root root      4096 7月  19 15:01 ..
-rwxrwxr-x   1 root root     25420 8月  25 2013 adrci
-rw-rw-r--   1 root root       439 8月  25 2013 BASIC_README
-rwxrwxr-x   1 root root     47860 8月  25 2013 genezi
-rwxrwxr-x   1 root root  53865194 8月  25 2013 libclntsh.so.11.1
-r-xr-xr-x   1 root root   7996693 8月  25 2013 libnnz11.so
-rwxrwxr-x   1 root root   1973074 8月  25 2013 libocci.so.11.1
-rwxrwxr-x   1 root root 118738042 8月  25 2013 libociei.so
-r-xr-xr-x   1 root root    164942 8月  25 2013 libocijdbc11.so
-r--r--r--   1 root root   2091135 8月  25 2013 ojdbc5.jar
-r--r--r--   1 root root   2739616 8月  25 2013 ojdbc6.jar
drwxrwxr-x   4 root root      4096 8月  25 2013 sdk
-rwxrwxr-x   1 root root    192365 8月  25 2013 uidrvci
-rw-rw-r--   1 root root     66779 8月  25 2013 xstreams.jar
[root@localhost instantclient_11_2]#
[root@localhost instantclient_11_2]# cp libclntsh.so.11.1 libclntsh.so
[root@localhost instantclient_11_2]# ln libclntsh.so /usr/lib/libclntsh.so
[root@localhost instantclient_11_2]# ln libocci.so.11.1 /usr/lib/libocci.so
[root@localhost instantclient_11_2]# ln libociei.so /usr/lib/libociei.so
[root@localhost instantclient_11_2]# ln libnnz11.so /usr/lib/libnnz11.so

下載pkg-config

[root@localhost ~]# wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
--2018-07-19 15:21:50--  http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
正在解析主機(jī) pkgconfig.freedesktop.org... 131.252.210.176, 2610:10:20:722:a800:ff:feda:470f
正在連接 pkgconfig.freedesktop.org|131.252.210.176|:80... 已連接掀宋。
已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 301 Moved Permanently
位置:https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz [跟隨至新的 URL]
--2018-07-19 15:21:51--  https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
正在解析主機(jī) pkg-config.freedesktop.org... 131.252.210.176, 2610:10:20:722:a800:ff:feda:470f
正在連接 pkg-config.freedesktop.org|131.252.210.176|:443... 已連接盔性。
已發(fā)出 HTTP 請(qǐng)求霞丧,正在等待回應(yīng)... 200 OK
長(zhǎng)度:2016830 (1.9M) [application/x-gzip]
正在保存至: “pkg-config-0.29.2.tar.gz”

60% [==============================================================================>                                                     ] 1,212,416    389K/s eta(英國(guó)中部時(shí)64% [====================================================================================>                                               ] 1,310,720    393K/s eta(英國(guó)中部時(shí)70% [============================================================================================>                                       ] 1,425,408    401K/s eta(英國(guó)中部時(shí)76% [===================================================================================================>                                ] 1,540,096    408K/s eta(英國(guó)中部時(shí)82% [===========================================================================================================>                        ] 1,654,784    414K/s eta(英國(guó)中部時(shí)87% [==================================================================================================================>                 ] 1,769,472    419K/s eta(英國(guó)中部時(shí)93% [==========================================================================================================================>         ] 1,884,160    424K/s eta(英國(guó)中部時(shí)99% [=================================================================================================================================>  ] 1,998,848    428K/s eta(英國(guó)中部時(shí)100%[===================================================================================================================================>] 2,016,830    432K/s   in 4.6s

2018-07-19 15:21:58 (432 KB/s) - 已保存 “pkg-config-0.29.2.tar.gz” [2016830/2016830])

[root@localhost ~]# tar xvf pkg-config-0.29.2.tar.gz

[root@localhost ~]# cd pkg-config-0.29.2
[root@localhost pkg-config-0.29.2]# ./configure  --with-internal-glib
[root@localhost pkg-config-0.29.2]# make
[root@localhost pkg-config-0.29.2]# make install

新建oci8.pc

[root@localhost instantclient_11_2]# touch oci8.pc

設(shè)置環(huán)境變量

[root@localhost ~]# vi .bash_profile

增加如下內(nèi)容

PKG_CONFIG_PATH=/root/instantclient_11_2
LD_LIBRARY_PATH=/root/instantclient_11_2
export PKG_CONFIG_PATH
export LD_LIBRARY_PATH

測(cè)試pkg-config oci8

[root@localhost instantclient_11_2]# source ~/.bash_profile
[root@localhost instantclient_11_2]# pkg-config --modversion oci8
12.2
[root@localhost instantclient_11_2]# pkg-config  oci8
[root@localhost instantclient_11_2]# pkg-config --libs oci8
-L/root/instantclient_11_2 -lclntsh

編寫(xiě)oracle_db.go

package main

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

func main() {
    db, err := sql.Open("oci8", "username/pwd@ip:1521/dbname")
    if err != nil {
        fmt.Println("abc", 123, err)
        return
    }
    defer db.Close()

    if err = db.Ping(); err != nil {
        fmt.Printf("Error connecting to the database: %s\n", err)
        return
    }

    rows, err := db.Query("select 2+2 from dual")
    if err != nil {
        fmt.Println("Error fetching addition")
        fmt.Println(err)
        return
    }
    defer rows.Close()

    for rows.Next() {
        var sum int
        rows.Scan(&sum)
        fmt.Printf("2 + 2 always equals: %d\n", sum)
    }
}

直接運(yùn)行g(shù)o文件

[root@localhost ~]# go run oracle_db.go
2 + 2 always equals: 4

build,運(yùn)行可執(zhí)行文件

[root@localhost ~]# go build oracle_db.go
[root@localhost ~]# file oracle_db
oracle_db: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
[root@localhost ~]# ./oracle_db
2 + 2 always equals: 4
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冕香,隨后出現(xiàn)的幾起案子蛹尝,更是在濱河造成了極大的恐慌后豫,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件突那,死亡現(xiàn)場(chǎng)離奇詭異挫酿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)愕难,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)早龟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人务漩,你說(shuō)我怎么就攤上這事拄衰。” “怎么了饵骨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵翘悉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我居触,道長(zhǎng)妖混,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任轮洋,我火速辦了婚禮制市,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弊予。我一直安慰自己祥楣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布汉柒。 她就那樣靜靜地躺著误褪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碾褂。 梳的紋絲不亂的頭發(fā)上兽间,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音正塌,去河邊找鬼嘀略。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乓诽,可吹牛的內(nèi)容都是我干的帜羊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸠天,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讼育!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤窥淆,失蹤者是張志新(化名)和其女友劉穎卖宠,沒(méi)想到半個(gè)月后谒出,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赌躺,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年窒百,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了词裤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刺洒。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吼砂,靈堂內(nèi)的尸體忽然破棺而出逆航,到底是詐尸還是另有隱情,我是刑警寧澤渔肩,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布因俐,位于F島的核電站,受9級(jí)特大地震影響周偎,放射性物質(zhì)發(fā)生泄漏抹剩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一蓉坎、第九天 我趴在偏房一處隱蔽的房頂上張望澳眷。 院中可真熱鬧,春花似錦蛉艾、人聲如沸钳踊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拓瞪。三九已至,卻和暖如春罐监,著一層夾襖步出監(jiān)牢的瞬間吴藻,已是汗流浹背瞒爬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工弓柱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侧但。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓矢空,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親禀横。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屁药,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Astronomygonova - A wrapper for libnova -- Celestial Mech...
    JumboWu閱讀 8,624評(píng)論 0 41
  • 目的 搭建一個(gè)Oracle 11gR2支持?jǐn)?shù)據(jù)熱備份的驗(yàn)證環(huán)境,對(duì)應(yīng)用系統(tǒng)進(jìn)行集群部署驗(yàn)證柏锄。 準(zhǔn)備 1酿箭、CentO...
    席理加閱讀 6,896評(píng)論 1 8
  • 引言 cx_Oracle是Python環(huán)境下的一個(gè)(好像也是唯一的一個(gè))用于操作Oracle的第三方模塊复亏。最近在寫(xiě)...
    bluexiii閱讀 9,525評(píng)論 3 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)缭嫡,斷路器缔御,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • 近兩天在CentOS7上安裝了oracle,在網(wǎng)上找了一些資料妇蛀,發(fā)現(xiàn)不是很全面耕突,為了方便以后再次安裝,所以...
    即墨雨閱讀 6,104評(píng)論 1 11