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

相关推荐

  • 使用Python OpenCV进行图像处理

    使用Python OpenCV进行图像处理随着数字技术的不断发展,图像处理在计算机视觉、机器学习、医学影像、人脸识别等领域中得到了越来越广泛的应用。Python是一种易学且强大的编程语言,在图像处理方面有很好的支持。OpenCV是一个强大的开源计算机视觉平台,尤其擅长图像和视频处理,提供了一系列易于使用的函数和工具。本文将介绍如何使用Python和OpenCV进行图像处理。

    2024-07-09
    39
  • 2022 IDC中国未来企业大奖优秀奖颁布,华为云数据库助力德邦快递获奖「终于解决」

    2022 IDC中国未来企业大奖优秀奖颁布,华为云数据库助力德邦快递获奖「终于解决」摘要:华为云数据库助力德邦快递打造的“基于数智融合的一站式物流供应链平台”项目从500多个项目中脱颖而出,荣获2022 IDC中国未来企业大奖优秀奖“未来智能领军者”。 本文分享自华为云社区《华为云数

    2023-06-06
    141
  • Hadoop(四)C#操作Hbase「建议收藏」

    Hadoop(四)C#操作Hbase「建议收藏」Hbase Hbase是一种NoSql模式的数据库,采用了列式存储。而采用了列存储天然具备以下优势: 可只查涉及的列,且列可作为索引,相对高效 针对某一列的聚合及其方便 同一列的数据类型一致,方便压缩

    2023-05-14
    148
  • redis专项进阶课_redis项目

    redis专项进阶课_redis项目通过简单的KV数据库理解Redis 分为访问模块,操作模块,索引模块,存储模块 底层数据结构 除了String类型,其他类型都是一个键对应一个集合,键值对的存储结构采用哈希表 哈希表由多个哈希桶组成,

    2023-05-30
    147
  • mysql笔记-

    mysql笔记-用单表接近一千万数据(四列:int,两个varchar,日期时间)测,发现几个效率几乎一致 count(0)=count(1)=count(数字)=count(*)>count(primary

    2023-02-15
    143
  • Python多线程与多进程的区别

    Python多线程与多进程的区别本文讨论Python多线程与多进程的区别问题,Python作为一门解释性编程语言,具有运行效率较慢的缺点,特别是在处理大数据量或者复杂的计算任务时,使得Python多线程与多进程编程逐渐成为了Python编程的标配。

    2024-05-05
    62
  • 使用Python的Tkinter编写可编辑文本框

    使用Python的Tkinter编写可编辑文本框Python是一门广泛应用于Web开发、数据分析、人工智能等领域的高级编程语言。Tkinter是Python中的一个常用GUI库,可以用于在Python程序中创建用户界面。本文将详细讲解如何使用Python的Tkinter编写可编辑文本框。

    2023-12-27
    118
  • C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案[通俗易懂]

    C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案[通俗易懂]有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用。但在PL/SQL中正常调用返回。 于是动手一试: 1、准备函数(Oralce 11g.2.0.0.4) 正常调用返回: 2、C

    2022-12-25
    138

发表回复

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