Как исправить ошибку UDI-31623 в Oracle?

Вопрос или проблема

Вчера я попытался импортировать другой дамп как новую схему 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 или технической поддержке для получения дополнительной информации.

Оцените материал
Добавить комментарий

Капча загружается...