powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
11 сообщений из 11, страница 1 из 1
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38676860
ora10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Разбираюсь с API Data Pump.
Хочу сделать экспорт схемы, запускаю скрипт, допустим получаю какую-то ошибку в этом скрипте. Далее после исправления (или не исправления) ошибки уже не могу повторно запустить скрипт на экспорт. Получаю ошибку что задание уже существует, или наоборот не существует. В dba_datapump_jobs state=DEFINING, DATAPUMP_SESSIONS=2, в v$session висит сессия задания экспорта.
Можно ли как-то штатными средствами очисить это неудавшееся задание ? В Яндексе нашёл только какие-то танцы с бубном на вроде alter system kill session и drop служебной таблицы+ её purge, потом посмотреть снова в ba_datapump_jobs и если что-то осталось, то процедуру повторить.
Есть ли что-то нормальное для отмены и очистки неудавшегося задания чтобы повторно запустить этот же экспорт ?
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38676889
ora10g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока наваял такой код, раз больше ничего нормального нет. Вроде работает, может кому пригодится:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
declare
  job_name_ varchar2(100):='JOB_EXPORT';
  hj number; 
begin
  -- пробуем штатно остановить
  for cur in (select owner_name, job_name from dba_datapump_jobs where job_name=job_name_)
  loop
    begin
      hj:=DBMS_DATAPUMP.ATTACH(cur.job_name,cur.owner_name);
      DBMS_DATAPUMP.stop_job(hj,1);
      DBMS_DATAPUMP.detach(hj);
    exception when others then 
      null;
    end;
  end loop;
  -- убиваем оставшиеся сессии
  for cur in (select sid, serial# from v$session where action=job_name_)
  loop
    begin
      execute immediate 'alter system kill session '||''''||cur.sid||','||cur.serial#||''''||' immediate';
    exception when others then 
      null;
    end;  
  end loop;
  -- Удалить мастер-таблицу
  for cur in (select owner_name, job_name from dba_datapump_jobs where job_name=job_name_)
  loop
    begin
      execute immediate 'drop table '||cur.owner_name||'.'||cur.job_name||' purge';
    exception when others then 
      null;
    end;  
  end loop;
  
end;
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38677511
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora10,

А доку почитать не комильфо? Сразу лезем в паутину в поисках пережеванного?

The master table is created in the schema of the current user performing the export or import operation. Therefore, that user must have the CREATE TABLE system privilege and a sufficient tablespace quota for creation of the master table. The name of the master table is the same as the name of the job that created it. Therefore, you cannot explicitly give a Data Pump job the same name as a preexisting table or view.

For all operations, the information in the master table is used to restart a job.

The master table is either retained or dropped, depending on the circumstances, as follows:

•Upon successful job completion, the master table is dropped.

•If a job is stopped using the STOP_JOB interactive command, then the master table is retained for use in restarting the job.

•If a job is killed using the KILL_JOB interactive command, then the master table is dropped and the job cannot be restarted.

•If a job terminates unexpectedly, then the master table is retained. You can delete it if you do not intend to restart the job.

•If a job stops before it starts running (that is, before any database objects have been copied), then the master table is dropped.

SY.
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38678355
ora10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYora10,

А доку почитать не комильфо? Сразу лезем в паутину в поисках пережеванного?

The master table is created in the schema of the current user performing the export or import operation. Therefore, that user must have the CREATE TABLE system privilege and a sufficient tablespace quota for creation of the master table. The name of the master table is the same as the name of the job that created it. Therefore, you cannot explicitly give a Data Pump job the same name as a preexisting table or view.

For all operations, the information in the master table is used to restart a job.

The master table is either retained or dropped, depending on the circumstances, as follows:

•Upon successful job completion, the master table is dropped.

•If a job is stopped using the STOP_JOB interactive command, then the master table is retained for use in restarting the job.

•If a job is killed using the KILL_JOB interactive command, then the master table is dropped and the job cannot be restarted.

•If a job terminates unexpectedly, then the master table is retained. You can delete it if you do not intend to restart the job.

•If a job stops before it starts running (that is, before any database objects have been copied), then the master table is dropped.

SY.

И чё ? Судя по ответу, Вы или сами доку не читали, или было не комильфо прочитать мой стартовый топик и вникнуть в суть вопроса.

SY•If a job terminates unexpectedly, then the master table is retained. You can delete it if you do not intend to restart the job.
SY.

Да нифига подобного..., хотя бы без alter system kill session, как минимум. Сессия задания висит и она активна.
Была ещё проблема, сейчас уже не помню при какой ситуации, но даже drop master table не помогал повторно запустить задание на экспорт.

Ну да лано, в общем, как я понимаю, нормального штатного средства для данной ситуации нет. Остаётся только мой скрипт выше.
И да, доку я прочитал, думал может что-то упустил, пока вроде нет..

Подобная проблема наиболее часто возникает в ситуации, когда dmp файл уже существует. Пользователю для повторного выполнения экспорта без DBA уже не обойтись. Это ладно в 11g ещё появился параметр reuse file, в 10g совсем плохо.
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38678919
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora10Ну да лано, в общем, как я понимаю, нормального штатного средства для данной ситуации нет. Остаётся только мой скрипт выше.
И да, доку я прочитал, думал может что-то упустил, пока вроде нет..


Имитируем dba_datapump_jobs state=DEFINING:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
SQL> select  *
  2    from  v$version
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> DECLARE
  2      h1 NUMBER;
  3  BEGIN
  4      h1 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL,'EXAMPLE1','LATEST');
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL> SELECT  *
  2    FROM  DBA_DATAPUMP_JOBS
  3  /

OWNER_NAME                     JOB_NAME
------------------------------ ------------------------------
OPERATION                      JOB_MODE
------------------------------ ------------------------------
STATE                              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
------------------------------ ---------- ----------------- -----------------
SCOTT                          EXAMPLE1
EXPORT                         SCHEMA
DEFINING                                1                 1                 2


SQL> 



Теперь:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
C:\Users\sy47755>expdp JOB_NAME=EXAMPLE1

Export: Release 11.2.0.3.0 - Production on Tue Jun 24 09:52:33 2014

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Username: scott@orcl
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31634: job already exists
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.KUPV$FT", line 1016
ORA-31637: cannot create job EXAMPLE1 for user SCOTT



C:\Users\sy47755>



Из другой сессии прибиваем job EXAMPLE1:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> BEGIN
  2      DBMS_DATAPUMP.STOP_JOB(
  3                             DBMS_DATAPUMP.ATTACH(
  4                                                  'EXAMPLE1',
  5                                                  'SCOTT'
  6                                                 ),
  7                             1
  8                            );
  9  END;
 10  /

PL/SQL procedure successfully completed.

SQL> SELECT  *
  2    FROM  DBA_DATAPUMP_JOBS
  3  /

no rows selected

SQL>



SY.
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38680769
ora10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Спасибо, понял в чём дело. Ключевая фраза в Вашем ответе была
SYИз другой сессии...


а я всё в одной делал,
упустил из виду...
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38680827
ora10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то всё-таки не то, stop_job выдаёт ошибку: "ORA-31626: задание не существует", хотя в DBA_DATAPUMP_JOBS оно точно есть.
не могу смодулировать её. В sqlplus вроде нормально работает, из под Delphi и в SQL Navigator-е ошибка, причём ошибка как-то через раз. Несколько секунд подождать и вроде stop_job отработает, а иногда и нет. Сессии 100% разные. Думаю возникают не стыковки во внутреннем шедулере сервера.
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38680950
ora10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Всё, теперь точно разобрался. Дело было в слишком длинном имени джоба - 30 символов. Причём создавать он его создавал, и экспорт успешно осуществлялся. Но потом сделать ATTACH по этому имени уже не смог, и говорил, что джоба не существует.
Сделал имя джоба 25 символов и всё заработало как надо.
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #38681083
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация с имя джоба - 30 символов не воспроизводится на:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
SQL> SELECT  *
  2    FROM  V$VERSION
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> DECLARE
  2      h1 NUMBER;
  3  BEGIN
  4      h1 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL,'A12345678901234567890123456789','LATEST');
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL> SELECT  *
  2    FROM  DBA_DATAPUMP_JOBS
  3  /

OWNER_NAME                     JOB_NAME
------------------------------ ------------------------------
OPERATION                      JOB_MODE
------------------------------ ------------------------------
STATE                              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
------------------------------ ---------- ----------------- -----------------
SCOTT                          A12345678901234567890123456789
EXPORT                         SCHEMA
DEFINING                                1                 1                 2


SQL> 



Из другой сессии:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
SQL> SELECT  *
  2    FROM  DBA_DATAPUMP_JOBS
  3  /

OWNER_NAME                     JOB_NAME
------------------------------ ------------------------------
OPERATION                      JOB_MODE
------------------------------ ------------------------------
STATE                              DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS
------------------------------ ---------- ----------------- -----------------
SCOTT                          A12345678901234567890123456789
EXPORT                         SCHEMA
DEFINING                                1                 1                 2


SQL> BEGIN
  2      DBMS_DATAPUMP.STOP_JOB(
  3                             DBMS_DATAPUMP.ATTACH(
  4                                                  'A12345678901234567890123456789',
  5                                                  'SCOTT'
  6                                                 ),
  7                             1
  8                            );
  9  END;
 10  /

PL/SQL procedure successfully completed.

SQL> 
SQL> SELECT  *
  2    FROM  DBA_DATAPUMP_JOBS
  3  /

no rows selected

SQL> 



SY.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #39371797
VDom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

У меня тоже возникла странная проблема с expdp.
БД 10.2.0.5
HP-UX 11.31 IA64

Написаны скрипты которые запускаются из кронтаба. Сначала из sqlplus выполняется запрос формирующий файл параметров для expdp. Это сделано чтобы включить в файл параметров текущий SCN для согласованого экспорта БД.
Сам экспорт выполняется на внешний диск подключенный по NFS.
Всё прекрасно работало, экспорт выполнялся в субботу и длился около часа.
И вот в один, не очень прекрасный момент, добавляется другой NFS сторедж, на который надо выполнять экспорт. Модель стореджа, и диски идентичные первому стореджу. Разница состоит в том что первый сторедж в одном сегменте с БД а второй в другом сегменте, подключен через свич. При этом бакап rman выполняется на второй сторедж нормально.

А вот с expdp начались чудеса.
В понедельник expdp продолжал работу, дамп был смешного размера - 4к.
При этом лог 0 размера. То есть посмотреть что делает expdp по логу нельзя.
В OEM видна сессия expdp, в Export and Import Jobs видна задача со статусом DEFINING.
Из командной строки можно приаттачиться к заданию, но ни одна команда кроме status не отрабатывает.
При этом показывает 1 поток вместо 12 как указанно в файле параметров.
При попытке дать KILL_JOB или STOP_JOB=IMMEDIATE - expdp зависает.
То есть штатным образом остановить expdp не удаётся.
Киляем сессию, дропаем таблицу очищаем ресайкл бин.
Но среди сессий продолжает висеть процесс мастер expdp ora_dm00_<sid>
kill -9 id_poc не помогает - процесс по прежнему висит и жрёт процессор.
Никакими манипуляциями прибить процесс не удалось.
Более того, даже остановка БД не помогла - процесс по прежнему висел.
Ппи остановленной БД kill -9 id_poc не помогал, а повторный kill -9 id_poc не выводил сообщение что такого процесса нет.
Только перегрузка сервера избавила от этого процесса.
Но сами понимаете это крайний случай.
Скорее всего возник зомби процесс, но как с ним бороться в HP-UX 11.31 я пока не выяснил.

У кого нибудь есть идеи почему такое произошло, и что надо сделать чтобы такая ситуация не повторилась?
...
Рейтинг: 0 / 0
dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
    #39371913
VDom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не успел описать проблему, как проблема разрешилась.
Позвонил сетевой админ, и сказал что NFS клиент использует верхние адреса??
Т.е. он открыл порт 3600 и 3605 и всё ожило.
К сожалению более детально выяснить что именно он открыл, и как он узнал что именно надо открыть, у него узнать не удалось.
Тем не менее expdp заработал, вижу динамику работы и на экране и в логе.
Более того, зависший процесс ora_dm00_<sid> который висел, и который не удавалось кильнуть, тоже благополучно кильнулся.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_datapump=>ошибка=> state=DEFINING, что дальше ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]