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

在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錯誤,下面總結一下解決過程。但願對之後遇到的人有所幫助.html

 

操做系統版本 :CentOS Linux release 8.2.2004 (Core)linux

Oracle Client:oracle-instantclient11.2git

 

從官方網址下載這些安裝包:sql

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

 

安裝過程很是簡單,以下所示:緩存

# 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

 

配置環境變量oracle

 

# 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

 

執行下面的命令使配置生效spa

 

#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>
相關文章
相關標籤/搜索