#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.