Я установил RPM-пакет базового мгновенного клиента oracle v21 x64 на свою Ubuntu 20.04 с инструментами мгновенного запуска той же версии. Теперь я не могу запустить инструмент sqldr, sqldr: ошибка при загрузке общих библиотек: libomsodm.so: невозможно открыть файл общего объекта: такой файл или каталог не выбрасываются. Я пробовал другие инструменты, такие как sqlplus, и все в порядке. Мои envvars настроены правильно, как описано в документации Это мои переменные PATH и LD_LIBRARY_PATH Это список библиотек в папке lib, и он не содержит libomsodm.so Полное сообщение об ошибке Итак, мои вопросы: почему libomsodm.so не включен в базовый пакет и пакет инструментов, если он требуется? Откуда я могу его получить? (Установил все пакеты из здесь и libomsodm нету) Мне нужен lsqldr только потому, что у меня есть файлы .ldr и .ctl, которые содержат резервную копию данных таблицы. БД хранится на удаленном сервере. Мой последний вопрос: как восстановить данные из файлов «.ldr» и «.ctl» с помощью Linux?
Обновленный инструмент RPM был выпущен на oracle.com/database/technologies/instant-client/… с исправлением для SQL*Loader.
Обновление: новый RPM-пакет 21.1 «tools» с исправлением SQL*Loader доступен на https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
libomsodm.so включен в тот же пакет 21c, что и SQL*Loader. Предположительно, у вас есть смешанный набор пакетов Instant Client 19c и 21c.
$ 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$
Я только что столкнулся с той же проблемой. Существующая установка 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
Обычно я устанавливаю в Ubuntu, конвертируя .rpm в .deb через alien --scripts package.deb
. Это работало безупречно в течение многих лет и в версиях InstantClient до 19.10 включительно (до которых я понизился). Поэтому мне интересно, может ли это быть ошибкой / недосмотром в упаковке Oracle последней версии.
Я намеревался добавить это как комментарий к ответу @christopherjones, но вместо этого явно добавил его как ответ. Это не ответ, так что извините за это!
Отмеченный. И для этого я зарегистрировал ошибку Oracle 32422414. Спасибо, что сообщили об этом
Чтобы дополнить два других ответа Кристофера Джонса, если решение не совсем ясно:
Общая библиотека libomsodm.so отсутствует в пакете инструментов (RPM)
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
Теперь вы должны иметь возможность запускать sqldr от имени любого непривилегированного пользователя: он будет отображать синтаксис команды вместо фатальной ошибки связывания с общей библиотекой.
PS: лично я также вручную создаю программную ссылку из /usr/bin/sqlldr, указывающую на /usr/lib/oracle/21/client64/bin/sqlldr, так как это единственный инструмент, который мне нужен в пакете инструментов. Программная ссылка /usr/bin/sqlplus уже создана пакетом Sql*Plus.
Для справки будущих читателей: я понимаю, что проблема заключалась не в отсутствующей библиотеке libomsdom, а в том, что она вообще не должна была требоваться. Так что не удивляйтесь, если в будущем выпуске Oracle Instant Client эта библиотека не будет в ZIP или RPM.
Это сертифицировано для Ubuntu? Я знаю, что сама база данных НЕ сертифицирована для Ubuntu, которая является совершенно другой ветвью генеалогического древа Linux, чем та, для которой был разработан oracle.