Document

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 ,大家一起讨论!!!

 

posted @ 2021-10-11 14:33  苏什么苏  阅读(798)  评论(1编辑  收藏  举报