sqlplus /nolog
发生的错误:
sqlplus: error while loading shared libraries:
libsqlplus.so: cannot open shared object file: No such file or directory
sqlplus /nolog
发生的错误:
sqlplus: error while loading shared libraries:
libsqlplus.so: cannot open shared object file: No such file or directory
正确运行sqlplus
的最小配置是设置ORACLE_HOME
和LD_LIBRARY_PATH
。为方便使用,您可能还想相应地设置PATH
。
假设您已将所需的归档文件解压缩到了/opt/oracle/instantclient_11_1
中:
$ export ORACLE_HOME=/opt/oracle/instantclient_11_1
$ export LD_LIBRARY_PATH="$ORACLE_HOME"
$ export PATH="$ORACLE_HOME:$PATH"
$ sqlplus
SQL*Plus: Release 11.1.0.7.0 - Production on Wed Dec 31 14:06:06 2014
...
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 的内容:
echo /usr/lib/oracle/18.3/client64/lib > /tmp/oracle-instantclient.conf ; sudo cp /tmp/oracle-instantclient.conf /etc/ld.so.conf.d ; sudo ldconfig
- Andrew Bealsldconfig
命令会自动运行。 - Christopher Jones我通过设置解决了这个错误
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME
是的,不仅是 $ORACLE_HOME/lib,而且还包括 $ORACLE_HOME。
您应该已经在/etc/profile.d/oracle.sh
中拥有所有必要的变量。确保您使用以下命令进行源代码:
$ source /etc/profile.d/oracle.sh
该文件的内容如下:
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
我知道这是一个旧的线程,但我再次遇到了Oracle 12c和LD_LIBRARY_PATH已经被正确设置的问题。我使用strace
查看它具体在寻找什么以及为什么失败:
strace sqlplus /nolog
sqlplus试图从不同的目录加载此库,但有些在我的安装中不存在。然后它尝试了我已经在LD_LIBRARY_PATH中设置过的那个目录:
open("/oracle/product/12.1.0/db_1/lib/libsqlplus.so", O_RDONLY) = -1 EACCES (Permission denied)
因此,在我的情况下,该库的权限为740,由于我的用户不是所有者,也没有分配oracle组,我无法读取它。所以简单的chmod +r
就解决了问题。
所以,在19c中似乎需要像这样运行alien,才能设置正确的配置,或者在早期版本中设置环境变量的脚本才会生成。(感谢@Christopher Jones纠正我关于这个问题的错误)。-c、--scripts
尝试转换设计为在安装和卸载软件包时运行的脚本。请谨慎使用此选项,因为这些脚本可能是针对不同于您自己的系统而设计的,并可能会导致问题。建议您手动检查这些脚本并检查它们的功能,然后再使用此选项。
sudo alien -i -c BasicPackage.rpm
sudo alien -i -c SqlPlus.rpm
/etc/ld.so.conf.d/oracle-instantclient.conf
并运行 ldconfig
。没有环境变量。 - Christopher Jones权限: 我想强调对“sqlplus”权限的重要性。
For any "Other" UNIX user other than the Owner/Group to be able to run sqlplus and access an ORACLE database , read/execute permissions are required (rx) for these 4 directories :
$ORACLE_HOME/bin , $ORACLE_HOME/lib, $ORACLE_HOME/oracore, $ORACLE_HOME/sqlplus
Environment. Set those properly:
A. ORACLE_HOME
(example: ORACLE_HOME=/u01/app/oranpgm/product/12.1.0/PRMNRDEV/
)
B. LD_LIBRARY_PATH
(example: ORACLE_HOME=/u01/app/oranpgm/product/12.1.0/PRMNRDEV/lib
)
C. ORACLE_SID
D. PATH
export PATH="$ORACLE_HOME/bin:$PATH"
您可以尝试使用:
# echo "/usr/lib/oracle/12.2/client64/lib" > /etc/ld.so.conf.d/oracle.conf
# ldconfig
apt-get install libaio1 libaio-dev
或者
yum install libaio
PRETTY_NAME="Oracle Linux Server 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
sqlplus64
。ldconfig
而不是LD_LIBRARY_PATH
- 请检查即时客户端安装说明。 - Christopher Jonesyum search instantclient
时只有它出现了(顺便说一下,这是Oracle Cloud中的“Always Free VM”)。我想19c即时客户端RPM必须单独下载或者必须将其他库添加到 yum
中--我还没有时间去探索这个选项。但我有些惊讶的是,在安装软件包之后需要如此多的后置配置... - András Aszódi