Не удалось выполнить команду impdp из команды docker exec

#oracle #docker #impdp

#Oracle #docker #impdp

Вопрос:

У меня есть контейнер docker oracle 12, в котором я выполнил команду «impdp» из команды docker exec для импорта данных, но это не удается. Ошибка гласит:

 UDI-01089: operation generated ORACLE error 1089
ORA-01089: immediate shutdown or close in progress - no operations are permitted
 

Команда:

 docker exec --tty <container_name> /bin/bash -c 'impdp <arguments>'
 

Я вижу, что импорт был запущен, но каким-то образом он был прерван, и была выдана ошибка выше. Есть идеи?

Комментарии:

1. Ошибка предполагает, что база данных завершает работу. Но я также подозреваю, что среда может быть не полностью настроена в оболочке bash, которая создается для запуска impdp Что вы видите, если вы подключаетесь к той же базе данных и пользователю через SQL * Plus или какой-либо другой клиент напрямую и через тот же docker exec механизм?

2. с помощью SQL * Plus и sql developer client я могу успешно подключиться. Еще один интересный момент: если я запускаю impdp с помощью скрипта bash внутри контейнера, он работает нормально. Единственная проблема заключается в том, что когда я запускаю impdp с помощью docker exec, он выдает мне эту ошибку.

3. Как насчет того, когда вы запускаете sqlplus с docker exec ? В любом случае, похоже, что между двумя оболочками есть разница в среде, предполагая, что вы предоставляете одни и те же аргументы при запуске команды непосредственно внутри контейнера.

4. Я не знаком с docker, но симптомы, которые вы описываете, звучат так же, как при выполнении скрипта из cron. Когда люди подключаются к серверу (через ssh или аналогичный), выполняется их .bash_profile, устанавливающий их среду. Этот механизм не применяется, когда cron запускает сеанс, поэтому скрипты должны заботиться о своей собственной среде. Похоже, механизм docker может быть таким же, к чему, похоже, клонит @AlexPoole.