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 算是踩了很多坑,最终把问题解决,各位同学如有遇到问题可以咨询 suwhatsu@163.com ,大家一起讨论!!!