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] ,大家一起討論!!!