sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory「建议收藏」

sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory「建议收藏」在Zabbix Server服务器上安装oracle-instantclient11.2后,结果使用sqlplus命令时遇到“sqlplus: error while loading shared l

sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

在Zabbix Server服务器上安装oracle-instantclient11.2后,结果使用sqlplus命令时遇到sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory错误,下面总结一下解决过程。希望对以后遇到的人有所帮助.

 

操作系统版本 :CentOS Linux release 8.2.2004 (Core)

Oracle Client:oracle-instantclient11.2

 

从官方网址下载这些安装包:

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

 

安装过程非常简单,如下所示:

# rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 

代码100分

代码100分# rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 

# rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm 

 

定位这些包的安装路径:

 

代码100分# rpm -ql oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

/usr/lib/oracle/11.2/client64/bin/adrci

/usr/lib/oracle/11.2/client64/bin/genezi

/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1

/usr/lib/oracle/11.2/client64/lib/libnnz11.so

/usr/lib/oracle/11.2/client64/lib/libocci.so.11.1

/usr/lib/oracle/11.2/client64/lib/libociei.so

/usr/lib/oracle/11.2/client64/lib/libocijdbc11.so

/usr/lib/oracle/11.2/client64/lib/ojdbc5.jar

/usr/lib/oracle/11.2/client64/lib/ojdbc6.jar

/usr/lib/oracle/11.2/client64/lib/xstreams.jar

# rpm -ql  oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

/usr/bin/sqlplus64

/usr/lib/oracle/11.2/client64/bin/sqlplus

/usr/lib/oracle/11.2/client64/lib/glogin.sql

/usr/lib/oracle/11.2/client64/lib/libsqlplus.so

/usr/lib/oracle/11.2/client64/lib/libsqlplusic.so

 

配置环境变量

 

# vi /etc/profile 增加下面配置

 

#Add by kerry

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export PATH=$PATH:$ORACLE_HOME/bin

 

执行下面的命令使配置生效

 

#source /etc/profile

 

添加动态库配置文件

 

# vi /etc/ld.so.conf.d/oracle.conf

/usr/lib/oracle/11.2/client64/lib

~

 

 

执行命令

# ldconfig

 

关于ldconfig命令的用途介绍如下:

 

ldconfig是一个动态链接库管理命令。

为了让动态链接库为系统所共享,需运行动态链接库的管理命令

主要是在搜寻默认目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件,缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。linux下的共享库机制采用了类似高速缓存机制,将库信息保存在/etc/ld.so.cache,程序连接的时候首先从这个文件里查找,然后再到ld.so.conf的路径中查找。为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin目录下。

 

 

也可以使用下面shell脚本进行配置

 

sh -c “echo /usr/lib/oracle/11.2/client64/lib > /etc/ld.so.conf.d/oracle.conf”;sudo ldconfig

 

 

验证测试时,sqlplus出现下面问题:

 

# sqlplus /nolog

sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

 

出现这个错误的可能情况非常多,例如,环境变量配置有问题,缺少依赖包等等。这里前面的环境变量配置正常,排查依赖的库是否有问题,发现libnsl.so.1找不到。

 

 

# ldd /usr/lib/oracle/11.2/client64/bin/sqlplus

        linux-vdso.so.1 (0x00007ffd0b7a5000)

        libsqlplus.so => /usr/lib/oracle/11.2/client64/lib/libsqlplus.so (0x00007f927b563000)

        libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f9278bb3000)

        libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f92787e6000)

        libdl.so.2 => /lib64/libdl.so.2 (0x00007f92785e2000)

        libm.so.6 => /lib64/libm.so.6 (0x00007f9278260000)

        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9278040000)

        libnsl.so.1 => not found

        libc.so.6 => /lib64/libc.so.6 (0x00007f9277c7e000)

        libnsl.so.1 => not found

        libnsl.so.1 => not found

        libaio.so.1 => /lib64/libaio.so.1 (0x00007f9277a7b000)

        /lib64/ld-linux-x86-64.so.2 (0x00007f927b522000)

 

clip_image001

 

根据下面命令判断依赖的libnsl包没有安装。

 

# yum list installed | grep libnsl

# yum list | grep   libnsl

libnsl2.x86_64                                       1.2.0-2.20180605git4a062cf.el8                   @anaconda                 

libnsl.i686                                          2.28-101.el8                                     BaseOS                    

libnsl.x86_64                                        2.28-101.el8                                     BaseOS                    

libnsl2.i686                                         1.2.0-2.20180605git4a062cf.el8                   BaseOS      

 

# yum install libnsl.x86_64

 

安装缺失的依赖包后,测试验证问题解决。

 

# sqlplus /nolog

 

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 23 20:29:49 2020

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

SQL> 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7156.html

(0)
上一篇 2023-03-26 10:00
下一篇 2023-03-26

相关推荐

  • Mysql基础02-约束「建议收藏」

    Mysql基础02-约束「建议收藏」约束与索引 概念 1、数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。 实体完整性(Entity Integrity):例如,同一个表

    2022-12-26
    118
  • 干货丨分布式数据库DDM Sidecar模式负载均衡「建议收藏」

    干货丨分布式数据库DDM Sidecar模式负载均衡「建议收藏」简介01分布式数据库中间件DDM分布式数据库中间件(DistributedDatabaseMiddleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩…

    2023-04-06
    109
  • 优化Python代码性能的技巧

    优化Python代码性能的技巧Python已成为最受欢迎的编程语言之一,但是它的执行速度比C++或Java慢很多。好消息是,Python社区提供了许多工具和技术,可以提高Python代码的性能。本文将介绍几种提高Python代码性能的技巧。

    2024-04-06
    19
  • 数据库基本知识点总结(二)[云图智联][通俗易懂]

    数据库基本知识点总结(二)[云图智联][通俗易懂]数据库知识-范式 一、相关概念和知识点 1.数据依赖:反映一个关系内部属性与属性之间的约束关系,是现实世界属性间相互联系的抽象,属于数据内在的性质和语义的体现。 2. 规范化理论:是用来设计良好的关…

    2023-03-17
    103
  • 使用Python正则表达式匹配字符串

    使用Python正则表达式匹配字符串正则表达式是一种强大的工具,可以在文本中搜索、匹配、替换特定的模式。Python的re模块提供了处理正则表达式的基本方法,使得我们能够高效地使用正则表达式进行字符串匹配。

    2024-05-08
    14
  • mysql中Base64编码与解码[通俗易懂]

    mysql中Base64编码与解码[通俗易懂]在mysql中,有些数据我们不想让别人直观的看到,这时可以使用Base编码与解码。 MySQL在5.6版本的时候增加了to_base64和from_base64函数,在此之前没有内部函数, 用法举例…

    2023-02-09
    121
  • python字符串的操作函数(python字符串操作方法)

    python字符串的操作函数(python字符串操作方法) 字符串 :在python中是作为序列存在的,序列中的元素具有从左到右的顺序,并根据他们的相对位置进行读取和储存。严格意义来说,字符串是一系列单个字符组成的序列,其他类型的序列还包括列表和元组。在一串字符两侧加上双引号或者单引号即可创建字符串。

    2023-12-01
    87
  • b树b-树b+树区别_B树的高度

    b树b-树b+树区别_B树的高度今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片

    2023-02-26
    97

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注