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

来源:https://www.cnblogs.com/kerrycode/archive/2020/07/23/13368640.html
-Advertisement-
Play Games

在Zabbix Server伺服器上安裝oracle-instantclient11.2後,結果使用sqlplus命令時遇到“sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object f... ...


在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 
# 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 

 

定位這些包的安裝路徑:

 

# 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> 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Ubuntu 18.04上搭建開發學習常用的軟體環境(git、中文輸入法、qq、微信、Android Studio、Intellij Idea、Pycharm、Electron、Eclipse、Firefox、Chrome、MySQL、Tomcat、Sublime、Typora、WPS、Java、... ...
  • 在Ubuntu上安裝QQ、微信、TIM等軟體一直是一個老大難的問題,網上搜集到的博客也比較零散,本篇博客較詳細地記錄了Wine系列軟體的安裝以及托盤圖標功能的安裝過程,同時記錄了幾種常見的問題 ...
  • 在vmware虛擬機環境下: 實驗環境: 1,CentOS7伺服器,ip地址192.168.118.10/24 2,win7客戶端,ip地址192.168.118.100/24 一,搭建伺服器 1,配置本地yum源 [root@localhost ~]# cd /etc/yum.repos.d [r ...
  • session複製集群的原理就是通過多播通信的方式,把節點的session信息發送給集群其他節點;這種session複製集群有一個缺陷,如果後端tomcat server 一旦增多,那麼對於後端用於發送session信息的網路會非常擁擠,到達一定的量以後,後端網路就可能癱瘓,這樣一來session... ...
  • 安裝自動補齊需要依賴工具 yum install -y bash-completion docker命令補齊: 執行下列命令 sh /usr/share/bash-completion/bash_completion sh /usr/share/bash-completion/completions ...
  • 我對ubuntu的紫色不太喜歡,我比較喜歡黑色;雖然20.04版本換成了黑色,登錄界面也很好看;但是我用的是舊版本ubuntu,所以只能動手改了; grub界面顏色設置: vim /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.grub; 結束後 ...
  • 近期,重新玩了玩kali下的airmon-ng等一套工具“破解”自家wifi密碼。 首先,有關處理2.4Ghz的wifi,在網上講解詳細且含圖文搭配的教程有許多,所以在這裡就不多贅述了。 這裡,主要說明一下處理5Ghz的wifi,在鎖定目標wifi後使用aireplay-ng指令抓取握手包時在確定無 ...
  • 普通的存儲器器件為單埠,也就是數據的輸入輸出只利用一個埠,設計了兩個輸入輸出埠的就是雙埠sram。雖然還具有擴展系列的4埠sram,但雙埠sram已經非常不錯了。雙埠sram經常應用於cpu與其周邊控制器等類似需要直接訪問存儲器或者需要隨機訪問緩衝器之類的器件之間進行通信的情況。從存儲 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...