请建议解决此问题的解决方案?在给出命令sqlplus /nolog
时发生错误是
sqlplus: error while loading shared libraries:
libsqlplus.so: cannot open shared object file: No such file or directory
..
答案 0 :(得分:11)
从shell正常运行sqlplus
的最低配置是设置ORACLE_HOME
和LD_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"的重要性。
对于任何"其他"除了Owner / Group以外的UNIX用户能够运行sqlplus并访问ORACLE数据库,这些4个目录需要读取/执行权限(rx):
$ ORACLE_HOME / bin,$ ORACLE_HOME / lib,$ ORACLE_HOME / oracore,$ ORACLE_HOME / sqlplus
环境。正确设置:
一个。 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