1. 程式人生 > 其它 >linux本地安裝Oracle instantclient(Docker)

linux本地安裝Oracle instantclient(Docker)

1:下載linux Oracle client 端對應的版本

https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

找到 instantclietn-baseic-linux-xxxx.zip instantclient-sqlplus-xxxx.zip 下載並拉至linux 中

2:解壓縮

#mkdir /usr/local/oracle
#cd /usr/local/oracle
將剛才下載的兩個檔案 拉至當前檔案下
# unzip -o instantclient-basic-linux.x64-12.2.0.1.0.zip instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
更改instantclient12.2 名字 #mv instantclient12.2 instantclient 在本地目錄下新建兩級目錄 #mkdir -p ./network/admin

3: 新建配置檔案

(1) 增加連線配置檔案(可省略)

#vim tnsnames.ora
 name =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.XXX.XXX.XXX)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID =xxx)
    )
  )

(2)新增linux環境變數

在admin 資料夾中輸入以下命令(建議每個都配置一遍,樓主踩坑最多的地方)

#vim ~/.bash_profile
以及
#vim ~/.profile
以及
#vim etc/profile
以及
#vim ~/.bashrc
在以上檔案中新增如下配置code: 
export ORACLE_HOME=/usr/local/oracle/instantclient export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export LD_LIBRARY_PATH
=$ORACLE_HOME export PATH=$ORACLE_HOME:$PATH
新增完環境變數,執行
#source ~/.bash_profile
#source ~/.profile
#source etc/profile

4:配置完之後測試連線

sqlplus ugonghui/xxx@//HOST:1521/orcl;
或者
sqlplus ugonghui/xxx@name

問題總結:

(1)報錯顯示 locate 缺少 libaio 包的錯誤:

  是因為 linux 中 oracle client 需要libaio 的環境, 必須需要聯網下載

  

#sudo apt-get install libaio1

安裝完各種環境 在sqlplus 中測試連線。

(2)樓主遇到最噁心的一塊問題

環境安裝好,sqlplus 測試連線正常

報錯顯示 :DPI-1047:Cannot locate a 64-bit Oracle Client library: "libclntsh.so:xxxx

樓主的解決方案如下:

1.加入動態庫/etc/ld.so.conf

#/usr/local/oracle/instantclient

2.儲存後重新載入

#ldconfig

參考連結:https://blog.csdn.net/am540/article/details/109468414

我在docker映象中呼叫oracle DB,每次連結都會報錯:

failed to connect to database, error: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory,

即使我在profile、bashrc等檔案寫上了so檔案所在路徑/usr/local/oracle/instantclient都不行,始終都需要source一下才能識別到,

最後修改了ld.so.config才完美結局,容器第一次建立啟動或者使用者新進入容器時都能自動載入到so檔案

    樓主在公司由於網路限制 在Docker中本地安裝oracle instantclient 算是踩了很多坑,最終把問題解決,各位同學如有遇到問題可以諮詢 [email protected] ,大家一起討論!!!