sqlplus:加载共享库时出错:libsqlplus.so:无法打开共享对象文件:没有这样的文件或目录

时间:2014-12-31 06:46:32

标签: linux oracle installation sqlplus oracleclient

请建议解决此问题的解决方案?在给出命令sqlplus /nolog时发生错误是

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

14 个答案:

答案 0 :(得分:11)

从shell正常运行sqlplus的最低配置是设置ORACLE_HOMELD_LIBRARY_PATH。为了便于使用,您可能还需要相应地设置PATH

假设您已在/opt/oracle/instantclient_11_1中解压缩所需的档案:

sh$ export ORACLE_HOME=/opt/oracle/instantclient_11_1
sh$ export LD_LIBRARY_PATH="$ORACLE_HOME"
sh$ export PATH="$ORACLE_HOME:$PATH"

sh$ sqlplus

SQL*Plus: Release 11.1.0.7.0 - Production on Wed Dec 31 14:06:06 2014
...

答案 1 :(得分:5)

sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf";sudo ldconfig

来自https://help.ubuntu.com/community/Oracle%20Instant%20Client

答案 2 :(得分:4)

我确实通过设置

解决了这个错误
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME

是的,不仅$ ORACLE_HOME / lib而且$ ORACLE_HOME。

答案 3 :(得分:3)

权限: 我想强调权限对于" sqlplus"的重要性。

  1. 对于任何"其他"除了Owner / Group以外的UNIX用户能够运行sqlplus并访问ORACLE数据库,这些4个目录需要读取/执行权限(rx):

    $ ORACLE_HOME / bin,$ ORACLE_HOME / lib,$ ORACLE_HOME / oracore,$ ORACLE_HOME / sqlplus

  2. 环境。正确设置:

    一个。 ORACLE_HOME      (例如:ORACLE_HOME=/u01/app/oranpgm/product/12.1.0/PRMNRDEV/

    B中。 LD_LIBRARY_PATH (例如:ORACLE_HOME=/u01/app/oranpgm/product/12.1.0/PRMNRDEV/lib

    ℃。 ORACLE_SID

    d。 PATH

     export PATH="$ORACLE_HOME/bin:$PATH"
    

答案 4 :(得分:2)

我知道它是一个旧线程,但我再次使用Oracle 12c和LD_LIBRARY_PATH设置正确。 我使用了strace来查看它究竟在寻找什么以及它失败的原因:

 strace sqlplus /nolog

sqlplus尝试从不同的目录加载此lib,有些在我的安装中不存在。然后它尝试了我在LD_LIBRARY_PATH上的那个:

  

打开(" /oracle/product/12.1.0/db_1/lib/libsqlplus.so",O_RDONLY)= -1   EACCES(许可被拒绝)

所以在我的情况下,lib有740个权限,并且因为我的用户不是所有者或者没有分配oracle组,所以我无法读取它。如此简单的chmod +r有所帮助。

答案 5 :(得分:1)

您应该已经在/etc/profile.d/oracle.sh中拥有所有需要的变量。确保你采购它:

$ source /etc/profile.d/oracle.sh

PS:此文件的内容如下:

ORACLE_HOME=/usr/lib/oracle/11.2/client64
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_HOME
export LD_LIBRARY_PATH
export PATH

如果您没有,请创建并获取它。

答案 6 :(得分:1)

您可以尝试使用:

# echo "/usr/lib/oracle/12.2/client64/lib" > /etc/ld.so.conf.d/oracle.conf
# ldconfig

此问题是因为oracleinstant客户端未配置共享库。

答案 7 :(得分:1)

在 Ubuntu Server 20.04 和使用即时客户端版本 19.10.0.0 上,我使用了 Alien 来安装 rpm 包。刚使用 -i 选项时出现此错误。但是,当我添加 -c 时,我没有这个问题。来自外星人的手册页:

<块引用>

-c, --scripts
尝试转换要在安装和删除包时运行的脚本。谨慎使用, 因为这些脚本可能被设计为在不同的系统上工作 你自己的,可能会导致问题。建议您 手动检查脚本并在使用前检查它们的作用 这个选项。

因此,这些脚本中似乎设置了正确的配置(在 19c 中)或环境变量(在早期版本中),除非您像这样运行外星人,否则不会生成这些脚本。 (感谢@Christopher Jones 纠正我这一点)

sudo alien -i -c BasicPackage.rpm
sudo alien -i -c SqlPlus.rpm

答案 8 :(得分:0)

这意味着您没有设置ORACLE_HOME和ORACLE_SID变量。请设置正确的工作$ ORACLE_HOME和$ ORACLE_SID,然后执行sqlplus / nolog命令。它会起作用。

答案 9 :(得分:0)

请检查LD_LIBRARY_PATH是否指向oracle libs

答案 10 :(得分:0)

在Oracle自己的Linux上(版本PRETTY_NAME="Oracle Linux Server 7.7" 中的/etc/os-release,版本7.7),如果您安装了18.3客户端库,

sudo yum install oracle-instantclient18.3-basic.x86_64
sudo yum install oracle-instantclient18.3-sqlplus.x86_64

然后,您需要在.bash_profile中添加以下内容:

export ORACLE_HOME=/usr/lib/oracle/18.3/client64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME

以便能够调用SQLPlus客户端,该客户端在此平台上被称为sqlplus64

答案 11 :(得分:0)

@ laryx-decidua:我想您只会看到ol7_oci_included存储库中的18.x即时客户端版本。目前,19.x即时客户端RPM仅在ol7_oracle_instantclient存储库中。访问该存储库的最简单方法是:

yum install oracle-release-el7

答案 12 :(得分:0)

这对我有用:sudo dnf install libnsl

答案 13 :(得分:-1)

别忘了

apt-get install libaio1 libaio-dev

yum install libaio