运行 sqlplus 时加载共享库时出错

Error while loading shared libraries while running sqlplus

我正在尝试在我的 ubuntu 机器上安装 运行 sqlplus。我收到上述错误

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

当我运行

sudo sqlplus64 <user>/<pass>@//<ip>:<port>/db

尽管遵循了 oracle 安装客户端文档中提到的步骤 https://help.ubuntu.com/community/Oracle%20Instant%20Client

我已经正确设置了 ORACLE_HOME 和 LD_LIBRARY_PATH 我的 strace sqlplus /nolog 输出显示以下错误

write(2, "SP2-0667: Message file sp1<lang>"..., 47SP2-0667: Message file sp1<lang>.msb not found
) = 47
write(2, "SP2-0750: You may need to set OR"..., 76SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
) = 76

如果需要,我也可以附加完整的 strace。有人可以帮我解决这个问题吗?

看起来变量设置不正确,或者设置变量的文件夹中没有oracle客户端,或者它没有执行权限。

请在终端中执行 运行 sqlplus:

echo $ORACLE_HOME
echo $LD_LIBRARY_PATH

如果它们没有显示正确的值,则意味着您没有正确设置变量(要么在 运行ing sqlplus 之前导出它们,要么为每个终端会话设置它们)。
如果它们显示正确的值,请转到文件夹检查是否有 Oracle 客户端文件。如果是,请检查那里文件的执行权限 (ls -la)。如果文件没有授权可以打开并执行,请添加它 (chmod)。如果这三个都正常,客户端应该可以工作。

这是我在我的机器上安装 Oracle 即时客户端时使用的过程的简化版本:

1 - 获得外星人 sudo apt-get install alien

2 - 下载 Oracle Instant Client(下载 basic、devel 和 sqlplus)

3 - 使用 Alien 安装 .rpm 软件包

sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

4 - 导航到 sqlplus 的安装目录 $ cd /usr/lib/oracle/12.X/client64/bin/

5 - 运行 sqlplus $ ./sqlplus 看看你是否收到关于 libaio1

的错误

6 - 您可能需要安装 libaio1 ($ sudo apt-get install libaio1)

7 - 如果您仍然遇到模块错误,请尝试 运行 ldd $ ldd sqlplus。安装你需要的。

8 - 设置以下环境变量

export ORACLE_HOME=/usr/lib/oracle/12.1/client64/

export PATH=$PATH:/usr/lib/oracle/12.1/client64/bin/

export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib/

您可以为 /etc/bash.bashrc 中的所有用户设置此项。 discussion of setting environment variables 针对不同类型的 shell 的一个或多个用户不在这个问题的范围之内。

祝你好运!

或者从 link http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

从 oracle 下载并安装 sql 开发人员