【问题标题】:Error while loading shared libraries while running sqlplus运行 sqlplus 时加载共享库时出错
【发布时间】:2017-11-09 13:12:19
【问题描述】:

我正在尝试在我的 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 可执行文件,并将 ORACLE_HOME 设置为客户端解压缩的路径,并将 LD_LIBRARY_PATH 设置为 $ORACLE_HOME/lib?

标签: oracle ubuntu sqlplus


【解决方案1】:

这是我在我的机器上安装 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 超出了这个问题的范围。

祝你好运!

【讨论】:

    【解决方案2】:

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

    请在您要运行 sqlplus 的终端中执行:

    echo $ORACLE_HOME
    echo $LD_LIBRARY_PATH
    

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

    【讨论】:

    • 是的,所有者是 root。改了还是报错:(
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2011-05-29
      • 2019-11-27
      • 1970-01-01
      • 2017-11-05
      相关资源
      最近更新 更多