Вопрос или проблема
Вчера я попытался импортировать другой дамп как новую схему Oracle и не смог из-за ограниченного пространства. Поэтому impdp (Data Pump Import) завершился с ошибкой. Я успешно удалил устаревшие схемы с помощью учетной записи sysadmin и затем попытался снова запустить импорт. Теперь он всегда выдает следующий код ошибки, и я пока не нашел решения; текст на немецком, так как система настроена на вывод на этом языке:
oracle@team1:~/admin/QS1/dpdump$ !impdp
impdp PARFILE=../scripts/ecg/userid.conf DUMPFILE=expdp_epl_prod__30-08-2010.dmp SCHEMAS=EPPROD REMAP_SCHEMA=EPPROD:LIVE_SQL_FINAL REMAP_TABLESPACE=EPL:USERS
Import: Release 11.1.0.7.0 - 64bit Production on Mittwoch, 01 September, 2010 9:44:44
Copyright (c) 2003, 2007, Oracle. Все права защищены.
Angemeldet bei: Oracle Database 11g Release 11.1.0.7.0 - 64bit Production
UDI-31623: Vorgang hat ORACLE-Fehler generiert 31623
ORA-31623: Ein Job ist dieser Session nicht über das angegebene Handle zugeordnet
ORA-06512: in "SYS.DBMS_DATAPUMP", Zeile 2862
ORA-06512: in "SYS.DBMS_DATAPUMP", Zeile 4052
ORA-06512: in Zeile 1
Переведенный вывод ошибки:
UDI-31623: Процесс ошибки ORACLE сгенерировал 31623
ORA-31623: Работа не назначена этой сессии через указанный дескриптор
ORA-06512: в "SYS.DBMS_DATAPUMP", строка 2862
ORA-06512: в "SYS.DBMS_DATAPUMP", строка 4052
ORA-06512: в строке 1
Есть идеи, что может быть не так и как я могу это исправить?
Вы назначили правильные права и роли?
Убедитесь, что вы назначили create session
, create table
, create procedure
, imp_full_database
пользователю, импортирующему дамп-файл.
Также назначьте права на чтение и запись для директории datapump.
grant read, write on directory <directory_name> to <user-name>
Ответ или решение
Как исправить ошибку UDI-31623 в Oracle
Ошибка UDI-31623, сопровождаемая сообщением ORA-31623, наблюдается при попытке импорта данных с помощью утилиты Data Pump Import (impdp) в Oracle. Данная ошибка возникает в том случае, если текущая сессия не может быть связана с задачей из-за указания неверного дескриптора задачи. Рассмотрим причины появления этой ошибки и процессы ее устранения.
1. Понимание ошибки
Основная причина возникновения ошибки UDI-31623 заключается в том, что попытка обратиться к заданной задаче импорта (job) не удается. Это может происходить в результате следующих обстоятельств:
- Ошибка при инициализации импорта, вызванная нехваткой ресурсов или неверными параметрами.
- Предыдущая сессия, которая не была корректно завершена.
- Неправильное назначение прав и ролей пользователю, выполняющему операцию импорта.
2. Проверка пользователя и прав
Первое, что необходимо сделать, — это убедиться в корректной настройке прав доступа:
-
Убедитесь, что у пользователя, под которым вы выполняете операцию импорта, есть необходимые привилегии. Ваш пользователь должен иметь минимально следующие права:
GRANT CREATE SESSION TO <user_name>; GRANT CREATE TABLE TO <user_name>; GRANT CREATE PROCEDURE TO <user_name>; GRANT IMP_FULL_DATABASE TO <user_name>;
-
Также необходимо предоставить разрешения на чтение и запись в директорию Data Pump:
GRANT READ, WRITE ON DIRECTORY <directory_name> TO <user_name>;
3. Проверка состояния задач
Проверьте состояние текущих задач импорта. Возможно, что предшествующая операция завершилась с ошибкой и оставила активную задачу. Для проверки состояния задач используйте следующий запрос:
SELECT * FROM DBA_DATAPUMP_JOBS WHERE JOB_NAME = '<job_name>';
Если задача активна, вы можете ее отменить командой:
EXEC DBMS_DATAPUMP.STOP_JOB('job_name', 'IMMEDIATE');
Затем проверьте, не остались ли за ней сведения:
SELECT * FROM DBA_DATAPUMP_JOBS WHERE JOB_NAME = '<job_name>';
4. Логи и очистка
Проверьте логи импорта на наличие дополнительных сообщений об ошибках, которые могут указывать на корень проблемы. В частности, ошибка может быть вызвана недостатком пространства в Tablespace, ограничениями на ресурсы, или потерей соединения.
5. Попробуйте сменить соединение
Если проблема повторяется, попробуйте сделать следующее:
- Отключитесь и подключитесь заново к базе данных, чтобы сбросить текущую сессию.
- Проверьте конфигурацию соединения. Возможно, стоит использовать другой клиент или сервер (если у вас есть несколько инстансов).
6. Перезагрузка базы данных
Если ни один из вышеперечисленных методов не помог, возможно, стоит рассмотреть перезагрузку базы данных. Это поможет очистить все зависшие задачи и сбросить состояния сессий.
Заключение
Ошибки UDI-31623 могут быть решены через систематическую проверку прав, состояния задач и перезагрузку сессий. Убедитесь, что все указанные шаги выполнены, и повторите процесс импорта данных. Если проблемы продолжаются, обязательно обратитесь к документации Oracle или технической поддержке для получения дополнительной информации.