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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...