【问题标题】:Oracle Instant Client SQL*Loader tool doesn't start because of missing libomsodm.so由于缺少 libomsodm.so,Oracle Instant Client SQL*Loader 工具无法启动
【发布时间】:2021-06-02 10:50:52
【问题描述】:

我在我的 ubuntu 20.04 上使用相同版本的即时工具安装了 oracle 基本即时客户端 v21 x64 RPM 包。现在我无法运行 sqlldr 工具,sqlldr:加载共享库时出错:libomsodm.so:无法打开共享对象文件:没有抛出这样的文件或目录。我尝试了 sqlplus 等其他工具,没关系。如documentation 中所述,我的环境变量已正确设置 这是我的 PATH 和 LD_LIBRARY_PATH 变量 这是 lib 文件夹中的库列表,它不包含 libomsodm.so 完整的错误信息 所以我的问题是,如果需要,为什么 libomsodm.so 不包含在基本和工具包中? 我从哪里可以得到它? (我从here 安装了所有包,没有libomsodm) 我需要 lsqldr 只是因为我有 .ldr 和 .ctl 文件,其中包含表数据的备份。数据库存储在远程服务器上。我的最后一个问题是如何使用linux从“.ldr”和“.ctl”文件中恢复数据?

【问题讨论】:

  • 这是为 Ubuntu 认证的吗?我知道数据库本身没有经过 ubuntu 认证,它是 Linux 家族树的一个完全不同的分支,与为 oracle 设计的分支完全不同。
  • 更新的工具 RPM 已在 oracle.com/database/technologies/instant-client/… 上发布,修复了 SQL*Loader。

标签: database oracle sql-loader


【解决方案1】:

更新:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html 上提供了带有 SQL*Loader 修复的新 21.1“工具”RPM 包

libomsodm.so 包含在与 SQL*Loader 相同的 21c 包中。猜测您有一组 19c 和 21c Instant Client 软件包。

$ wget https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-tools-linux.x64-21.1.0.0.0.zip
--2020-12-16 08:52:58--  https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-tools-linux.x64-21.1.0.0.0.zip
Resolving download.oracle.com (download.oracle.com)... 104.80.236.93
Connecting to download.oracle.com (download.oracle.com)|104.80.236.93|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1167332 (1.1M) [application/zip]
Saving to: ‘instantclient-tools-linux.x64-21.1.0.0.0.zip’

instantclient-tools-linux.x64-21.1.0.0.0.zip     100%[==========================================================================================================>]   1.11M  1.12MB/s    in 1.0s    

2020-12-16 08:53:01 (1.12 MB/s) - ‘instantclient-tools-linux.x64-21.1.0.0.0.zip’ saved [1167332/1167332]

$ unzip instantclient-tools-linux.x64-21.1.0.0.0.zip
Archive:  instantclient-tools-linux.x64-21.1.0.0.0.zip
  inflating: instantclient_21_1/exp  
  inflating: instantclient_21_1/expdp  
  inflating: instantclient_21_1/imp  
  inflating: instantclient_21_1/impdp  
  inflating: instantclient_21_1/libnfsodm.so  
  inflating: instantclient_21_1/libomsodm.so  
  inflating: instantclient_21_1/libopcodm.so  
  inflating: instantclient_21_1/sqlldr  
  inflating: instantclient_21_1/TOOLS_LICENSE  
  inflating: instantclient_21_1/TOOLS_README  
  inflating: instantclient_21_1/wrc  
cjones@mac:/tmp$ 

【讨论】:

    【解决方案2】:

    为了补充 Christopher Jones 的其他两个回复,以防解决方案不完全清楚:

    工具包 (RPM) 中缺少共享库 libomsodm.so
    oracle-instantclient-tools-21.1.0.0.0-1.x86_64.rpm,所以这确实是一个 Oracle 错误/疏忽。

    幸运的是,该文件已提供并存在于工具包 (ZIP) instantclient-tools-linux.x64-21.1.0.0.0.zip中。

    所以要解决,安装 RPM 后,您需要下载并解压 ZIP 存档,然后以 root 身份安装缺少的库

    # install -m 755 -o root -g root instantclient_21_1/libomsodm.so /usr/lib/oracle/21/client64/lib/libomsodm.so
    # ldconfig
    

    您现在应该能够以任何非特权用户身份运行 sqlldr:它将显示命令语法而不是共享库链接致命错误。

    PS:就个人而言,我还手动创建了一个从 /usr/bin/sqlldr 指向 /usr/lib/oracle/21/client64/bin/sqlldr 的软链接,因为这是我在工具包中需要的唯一工具。 Sql*Plus 包已经创建了一个 /usr/bin/sqlplus 软链接。

    【讨论】:

    • 为了将来的读者参考,我知道问题不在于缺少 libomsdom 库,而在于它本来就不应该被需要。因此,如果未来的 Oracle Instant Client 版本在 ZIP 或 RPM 中没有此库,请不要感到惊讶。
    【解决方案3】:

    我刚刚遇到了同样的问题。 Instantclient 的现有安装已预先从系统中完全清除,因此这不是由于版本 19.x 和 21.1 库之间的混淆。 .rpm 包中实际上缺少库文件:

    $ wget "https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-tools-21.1.0.0.0-1.x86_64.rpm"
    ...
    
    $ rpm -qlp oracle-instantclient-tools-21.1.0.0.0-1.x86_64.rpm 
    /usr/lib/oracle
    /usr/lib/oracle/21
    /usr/lib/oracle/21/client64
    /usr/lib/oracle/21/client64/bin
    /usr/lib/oracle/21/client64/bin/exp
    /usr/lib/oracle/21/client64/bin/expdp
    /usr/lib/oracle/21/client64/bin/imp
    /usr/lib/oracle/21/client64/bin/impdp
    /usr/lib/oracle/21/client64/bin/sqlldr
    /usr/lib/oracle/21/client64/bin/wrc
    /usr/lib/oracle/21/client64/lib
    /usr/lib/oracle/21/client64/lib/libnfsodm.so
    /usr/lib/oracle/21/client64/lib/libopcodm.so
    /usr/share/oracle
    /usr/share/oracle/21
    /usr/share/oracle/21/client64
    /usr/share/oracle/21/client64/doc
    /usr/share/oracle/21/client64/doc/TOOLS_LICENSE
    /usr/share/oracle/21/client64/doc/TOOLS_README
    

    我通常通过alien --scripts package.deb 将 .rpm 转换为 .deb 来安装到 Ubuntu。多年来,instantclient 版本(包括 19.10)(我已降级到)都可以完美运行。因此,我想知道这是否可能是 Oracle 最新版本打包中的错误/疏忽。

    【讨论】:

    • 我打算将此添加为对@christopherjones 响应的评论,但显然我将其添加为答案。虽然这不是一个答案,很抱歉!
    • 注明。我为此记录了 Oracle 错误 32422414。感谢举报
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2018-10-24
    • 2015-03-19
    • 2015-07-20
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多