powered by simpleCommunicator - 2.0.43     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Expdp.exe зависает во время экспорта
17 сообщений из 17, страница 1 из 1
Expdp.exe зависает во время экспорта
    #40139966
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую. Вспоминаю, как работает expdp.exe в Windows Server + Oracle Database 12. База примерно 1,5 ТиБ. Запускаю полный экспорт БД в файл на этом же сервере, зависает примерно на 30% выполнения. Смотрю в SQL Developer на экземпляр, вижу что сессия экспорта долго ждёт чего-то, связанного с пакетом DATA_PUMP. Как сейчас разбираете такие ситуации?
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40139981
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025 [игнорируется] 
Цитата 
[игнорируется]
Смотрю в SQL Developer на экземпляр, вижу что сессия экспорта долго ждёт чего-то, связанного с пакетом DATA_PUMP.
Нужен полный v$session.
Цитата 
[игнорируется]
Как сейчас разбираете такие ситуации?
Через:
- Checklist For Slow Performance Of DataPump Export (expdp) And Import (impdp) (Doc ID 453895.1)
- SRDC - Diagnostic Collection for DataPump Export Performance Issues (Doc ID 1935743.1)
- active session history (ASH)
- полная строка запуска expdp, включая parameter file, если используется
- вывод из консоли на чём конкретно зависает (Processing something).
- Запуск expdp с trace и metrics=y в тяжёлых случаях, с трассировкой на dm/dw процессы, различные processtate, но до этого редко доходит.

Сначала нужно понять, в каком состоянии dm/dw процессы: ждут - какое событие ожидания? Не ждут - работают на CPU - какой SQL, если есть SQL? Один долгий SQL или множество быстрых? Что за SQL?
ASH позволяет системно отвечать на эти вопросы. Нет ASH, есть бесплатные альтернативы.
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40139985
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate [игнорируется] 

Сейчас в столице мира ночь. С БД никто не работает. И экспорт все равно висит! Записал примерно 170 ГиБ из 570 и думает о чём-то вечном.

Сессия expdp.exe:
BEGIN
sys.kupw$worker.main('SYS_EXPORT_SCHEMA_42', 'ADMIN', 0);
END;

Пошел искать остатки Oracle MetaLink. [:smile]
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40139986
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate [игнорируется] 
К моему сожалению, пробиться на support.oracle.com я сейчас не могу. Может ли кто-то из коллег скачать и опубликовать или прислать мне указанные статьи?
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40139987
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025 [игнорируется] 

ASH Report Viewer, к сожалению, даёт ошибки при запуске.

An error was encountered performing the requested operation:

ORA-20028: psf_execute_query internal error: select min(snap_id) as snap_id,
min(begin_interval_time) as begin_interval_time,
min(end_interval_time) as end_interval_time
from (select snap_id,
begin_interval_time,
end_interval_time,
nvl(lag(end_interval_time)
over(order by instance_number, snap_id),
to_timestamp('01-JAN-1970 00:00:00',
'DD-Mon-YYYY HH24:MI:SS'))
as lag_end_time
from $#CDB#$VND$ash_snapshot
where dbid = :dbid
and ( :inst_num_list is null
or instance_number member of :inst_num_list))
where (end_interval_time between :bdate
and :edate)
or (begin_interval_time between :bdate
and :edate)
or (:bdate between begin_interval_time
and end_interval_time)
or (:bdate between lag_end_time
and begin_interval_time)
ORA-06512: на "SYS.DBMS_SWRF_REPORT_INTERNAL", line 19305
ORA-06512: на "SYS.DBMS_UMF_PROTECTED", line 569
ORA-06512: на "SYS.DBMS_SWRF_REPORT_INTERNAL", line 18324
ORA-06512: на "SYS.DBMS_SWRF_REPORT_INTERNAL", line 17624
ORA-06512: на "SYS.DBMS_WORKLOAD_REPOSITORY", line 1872
ORA-06512: на line 1

https://docs.oracle.com/error-help/db/ora-20028/

Vendor code 20028
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40139997
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025  12.02.2025, 01:15
[игнорируется]
Сессия expdp.exe:
BEGIN
sys.kupw$worker.main('SYS_EXPORT_SCHEMA_42', 'ADMIN', 0);
END;
Как я сказал, нужен полный v$session по всем сессиям expdp этого задания: master (dm), workers (dw).
iGor2025  12.02.2025, 01:40
[игнорируется]
ASH Report Viewer, к сожалению, даёт ошибки при запуске.
Хватит выгрузки v$active_session_history по всем сессиям expdp этого задания.

Также, очень важно понять, на обработке чего происходит замедление:
SeaGate  11.02.2025, 18:59
[игнорируется]
- вывод из консоли на чём конкретно зависает (Processing something).
Если это задание и терминала нет, то через ATTACH, потом STATUS: https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-export-utility.html#GUID-E4F278D4-C382-45B8-A3D6-5C163D6D427D
...
Рейтинг: 1 / 0
Нравится: iGor2025
Expdp.exe зависает во время экспорта
    #40140003
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate [игнорируется] 
Тюнинг expdp.docx
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140004
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate [игнорируется] 

Насобирал утром, во время экспорта. Пока смотрел пришла в голову простая, очевидная, правильная мысль - если у нас объём БД 1,5 ТиБ, то что мне мешает стартовать N процессов expdp.exe паралельно и асинхронно получать результат? Например, по нужным мне схемам делать один файл экспорта на схему.

Фундамент системы - HPE Primera A630. Пишу экспорт на нее, а это система красотой до 1 000 000 000 IOPS!

"HPE Primera A630 с 72 SSD-дисками по 3,84 ТиБ может обеспечить высокую производительность, но точные значения IOPS зависят от различных факторов, включая конфигурацию системы, типы нагрузок и настройки. В общем случае для дисков SSD можно ожидать, что они обеспечивают от 20,000 до 100,000 IOPS на диск в зависимости от типа операций (чтение или запись). Если взять среднее значение, например, 50,000 IOPS на диск, то для 72 дисков это может дать:

72 диска × 50,000 IOPS/диск = 3,600,000 IOPS

Однако важно отметить, что это теоретическая максимальная производительность. Реальные значения могут быть ниже из-за различных факторов, таких как:

• Конфигурация контроллеров
• Тип нагрузки (например, случайные или последовательные операции)
• Настройки кэширования
• Использование RAID

Для получения более точных данных рекомендуется обратиться к документации HPE или провести тестирование производительности в вашей конкретной среде."
...
Изменено: 13.02.2025, 01:44 - iGor2025
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140012
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025 [игнорируется] 

SQL_ID из вложения: 7wn3wubg7gjds
Это не sys.kupw$worker.main, а:
Код: SQL
1.
2.
3.
4.
5.
SQL> select dbms_sql_translator.sql_id('BEGIN :1 := sys.kupc$que_int.get_status(:2, :3); END;') from dual;

DBMS_SQL_TRANSLATOR.SQL_ID('BEGIN:1:=SYS.KUPC$QUE_INT.GET_STATUS(:2,:3);END;')
--------------------------------------------------------------------------------
7wn3wubg7gjds
Это типичный запрос для сессии мастера (DM).
По ожиданиям, это также типично для мастера, который ждёт worker(s) (state='WAITING' and event='wait for unread message..').

Как я говорил ранее, нужно понять, на обработке каких объектов происходит замедление. Для этого ATTACH к заданию expdp и затем STATUS. Если есть консоль или лог, посмотреть, что пишет туда.
DBA_DATAPUMP_JOBS тут не интересен. Нужен DBA_DATAPUMP_SESSIONS и смотреть по SESSION_TYPE='WORKER', затем смотреть сессии самих этих worker, т.к. там происходит основная работа, мастер просто ждёт worker.
Фильтрации по program like '%expdp%' также может быть не полная, т.к. это опять же должны быть только сессия мастера, а сами workers стартуют на БД и program у них должен быть что-нибудь про "dw", а не expdp.
Системно определить сессии нужно через DBA_DATAPUMP_SESSIONS.

Чтобы понять, на что тратят время worker(s), нужно смотреть v$active_session_history.
Как минимум, агрегаты по session_state, event, sql_id, sql_opname.
Цитата 
[игнорируется]
Насобирал утром, во время экспорта. Пока смотрел пришла в голову простая, очевидная, правильная мысль - если у нас объём БД 1,5 ТиБ, то что мне мешает стартовать N процессов expdp.exe паралельно и асинхронно получать результат? Например, по нужным мне схемам делать один файл экспорта на схему.
Если нужны согласованные данные в рамках различных заданий экспорта, то потребуется использовать FLASHBACK_SCN/FLASHBACK_TIME. Сам data pump в большинстве случаев хорошо распараллеливается с помощью стандартного parallel.
Цитата 
[игнорируется]
Фундамент системы - HPE Primera A630. Пишу экспорт на нее, а это система красотой до 1 000 000 000 IOPS!
Это будет интересно, если будет основное время уходить на wait_class='User I/O'. Пока мы этого не знаем. Как правило, основной bottleneck это throughput, а не IOPS. Также, expdp читает и пишет. На чём конкретно происходит затык, будет ясно из ASH.
...
Рейтинг: 1 / 0
Нравится: iGor2025
Expdp.exe зависает во время экспорта
    #40140019
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate  13.02.2025, 14:12
[игнорируется]
Нужен DBA_DATAPUMP_SESSIONS
Код: JSON
1.
2.
3.
4.
5.
6.
{"results":[{"columns":[{"name":"OWNER_NAME","type":"VARCHAR2"},{"name":"JOB_NAME","type":"VARCHAR2"},{"name":"INST_ID","type":"NUMBER"},{"name":"SADDR","type":"RAW"},{"name":"SESSION_TYPE","type":"VARCHAR2"}],"items":
[
{"owner_name":"ADMIN","job_name":"SYS_EXPORT_SCHEMA_42","inst_id":1,"saddr":"000000DA314E1C10","session_type":"DBMS_DATAPUMP"}
,{"owner_name":"ADMIN","job_name":"SYS_EXPORT_SCHEMA_42","inst_id":1,"saddr":"000000DA3908F0D0","session_type":"MASTER"}
,{"owner_name":"ADMIN","job_name":"SYS_EXPORT_SCHEMA_42","inst_id":1,"saddr":"000000DA312A7420","session_type":"WORKER"}
]}]}
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140020
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate  13.02.2025, 14:12
[игнорируется]
затем смотреть сессии самих этих worker
Вот здесь пока туплю, как посмотреть? Есть 000000DA312A7420. Объём данных для меня, конечно, очень интересный. В БД порядка 2 миллиардов строк, объём более 1 тебибайта. И сегодня эта городушка по какой-то, известной только индусу-программисту Oracle, причине до сих пор льёт файл экспорта, с часа ночи!
...
Изменено: 14.02.2025, 06:26 - iGor2025
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140021
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025 [игнорируется] 

Нашёл, где посмотреть, что делают задания экспорта. В SQL Developer (последней версии) \ DBA \ Data Pump \ Export Jobs. Из 42 штук только одно задание в состоянии STATE=RUNNING, остальные NOT RUNNING. То есть 1 работник из 42, остальные курят!
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140033
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025  14.02.2025, 06:24
[игнорируется]
Вот здесь пока туплю, как посмотреть? Есть 000000DA312A7420. Объём данных для меня, конечно, очень интересный. В БД порядка 2 миллиардов строк, объём более 1 тебибайта. И сегодня эта городушка по какой-то, известной только индусу-программисту Oracle, причине до сих пор льёт файл экспорта, с часа ночи!
DBA_DATAPUMP_SESSIONS.SADDR = V$SESSION.SADDR . Если RAC, то нужно ещё INSTANCE_ID учесть.
Но v$session это текущее состояние, оно не позволит ответить на вопрос, почему конкретные workers медленно работают.
Нужна выгрузка по ним из v$active_session_history, в том же JSON, или агрегат, как писал ранее.
iGor2025  14.02.2025, 08:47
[игнорируется]
iGor2025 [игнорируется] 

Нашёл, где посмотреть, что делают задания экспорта. В SQL Developer (последней версии) \ DBA \ Data Pump \ Export Jobs. Из 42 штук только одно задание в состоянии STATE=RUNNING, остальные NOT RUNNING. То есть 1 работник из 42, остальные курят!
Дело в том, что текущее задание называется SYS_EXPORT_SCHEMA_42. Что показывает SQL Developer я не знаю, но у него есть режим показа запросов. Однако, и там и там 42, что наводит на мысли, что возможно это просто старые задания, если, например, они NOT RUNNING.
Скорее всего, SQL Developer использует DBA_DATAPUMP_JOBS. Можно просто взять текст это представления, вот из 19.19, но брать нужно из версии используемой БД:
Код: SQL
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.
CREATE OR REPLACE VIEW SYS.dba_datapump_jobs (
                owner_name, job_name, operation, job_mode, state, degree,
                attached_sessions, datapump_sessions) AS
        SELECT  j.owner_name, j.job_name, j.operation, j.job_mode, j.state,
                j.workers,
                NVL((SELECT    COUNT(*)
                     FROM      SYS.GV$DATAPUMP_SESSION s
                     WHERE     j.job_id = s.job_id AND
                               s.type = 'DBMS_DATAPUMP'
                     GROUP BY  s.job_id), 0),
                NVL((SELECT    COUNT(*)
                     FROM      SYS.GV$DATAPUMP_SESSION s
                     WHERE     j.job_id = s.job_id
                     GROUP BY  s.job_id), 0)
        FROM    SYS.GV$DATAPUMP_JOB j
        WHERE   j.msg_ctrl_queue IS NOT NULL
      UNION ALL                               /* Not Running - Master Tables */
        SELECT u.name, o.name,
               SUBSTR (c.comment$, 24, 30), SUBSTR (c.comment$, 55, 30),
               'NOT RUNNING', 0, 0, 0
        FROM sys.obj$ o, sys.user$ u, sys.com$ c
        WHERE SUBSTR (c.comment$, 1, 22) = 'Data Pump Master Table' AND
              RTRIM (SUBSTR (c.comment$, 24, 30)) IN
                ('EXPORT','ESTIMATE','IMPORT','SQL_FILE','NETWORK') AND
              RTRIM (SUBSTR (c.comment$, 55, 30)) IN
                ('FULL','SCHEMA','TABLE','TABLESPACE','TRANSPORTABLE') AND
              o.obj# = c.obj# AND
              o.type# = 2 AND
              BITAND(o.flags, 128) <> 128 AND
              u.user# = o.owner# AND
              NOT EXISTS (SELECT 1
                          FROM   SYS.GV$DATAPUMP_JOB
                          WHERE  owner_name = u.name AND
                                 job_name = o.name)
Соответственно, если там 41 строка NOT RUNNING, то это просто Master table и скорее всего, какие-то orphaned jobs. Можно нижнюю часть UNION ALL отдельно запустить и посмотреть весь sys.obj$ по этим объектам, например, тот же CTIME.
Если это какие-то старые задания, то, очевидно, к текущему они отношения не имеют и на MOS были процедуры их очистки.
...
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140034
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate [игнорируется] 

У нас сейчас этот экземпляр на Oracle Database 12 Standard Edition, виртуальный сервер под Hyper-V, Windows Server 2019, на достаточно мощном двухсокетном сервере DEPO.

Система хранения данных - мощнейшая HPE Primera A630, до 3 600 000 IOPS (72 диска SSD 3,84 ТиБ).

Сеть хранения данных - 32 Гбит/сек.

Сегодня вообще странное состояние - за 12 часов вылилось в dmp-файл только 50 МБ! Затем задание было снято по тайм-ауту и при этом процесс expdp.exe остался висеть, пришлось снимать через Process Explorer.

Коли уж сейчас времена трофейного ПО то задумался, а что может дать перевод этой БД на Enterprise Edition?Может ли в EE expdp.exe лучше распараллеливаться, чем в SE?
...
Изменено: 14.02.2025, 14:51 - iGor2025
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140036
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025 [игнорируется] 

Если standard edition, то ASH там нет (есть сторонние скрипты, которые создают подобие ASH). Тогда SQL трассировку на worker можно включить на пару минут и сюда сырой файл загружать. Как я писал, нужно понимать, что у expdp пишется в консоли (Processing что-то). Это позволит понять, что обрабатывается в данный момент.
Если кроме expdp ничего особо не работает или expdp создаёт основную нагрузку, также можно и statspack собрать за минут 15 работы задания, когда задание "висит".
iGor2025  14.02.2025, 14:50
[игнорируется]
Коли уж сейчас времена трофейного ПО то задумался, а что может дать перевод этой БД на Enterprise Edition?Может ли в EE expdp.exe лучше распараллеливаться, чем в SE?
Ручное распараллеливание путём запуска множества expdp, например, по отдельным схемам/таблицам будет работать везде.
Parallel Data Pump Export/Import только в EE:
https://docs.oracle.com/database/121/DBLIC/editions.htm#DBLIC2152
pasted_image.png
Однако 50МБ за 12 часов распараллеливанием не исправить. Нужно смотреть за worker (SQL Trace) и изучать, на что тратится их время. На основании этих данных, проводить дальнейшие работы.
...
Рейтинг: 1 / 0
Нравится: iGor2025
Expdp.exe зависает во время экспорта
    #40140119
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate [игнорируется] 

Дело было не в Oracle, похоже. Немного фундамент шатает - HPE Primera A630, возможно, работает с сервером неоптимально + ЛВС поддает. Вчера добился 3 часа на экспорт БД, сеть на сервере DEPO вставили на место (2x 10 Гбит/сек). SAN 2x 16 Гбит/сек. Экспорт идёт на отдельный диск виртуального сервера под Microsoft Windows Server 2019 Datacenter, который в свою очередь лежит на LUN HPE Primera A630. Получаем интересную картину по IO - expdp.exe читает с этого LUN-а и одновременно пишет на него же файл экспорта. Раскочегарили СХД пока только на 3000+ IOPS.

Заведу отдельную тему по переезду БД на Oracle Database Enterprise Edition последней версии с текущей версии Oracle Database Standard Edition 12.2 - если это имеет смысл, конечно. База эта не особо активна, в основном ее используют на чтение, как архивную.
...
Изменено: 21.02.2025, 01:20 - iGor2025
Рейтинг: 0 / 0
Expdp.exe зависает во время экспорта
    #40140120
iGor2025
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iGor2025  21.02.2025, 01:20
[игнорируется]
SeaGate [игнорируется] 

Дело было не в Oracle, похоже. Немного фундамент шатает - HPE Primera A630, возможно, работает с сервером неоптимально + ЛВС поддает. Вчера добился 3 часа на экспорт БД, сеть на сервере DEPO вставили на место (2x 10 Гбит/сек). SAN 2x 16 Гбит/сек. Экспорт идёт на отдельный диск виртуального сервера под Microsoft Windows Server 2019 Datacenter, который в свою очередь лежит на LUN HPE Primera A630. Получаем интересную картину по IO - expdp.exe читает с этого LUN-а и одновременно пишет на него же файл экспорта. Раскочегарили СХД пока только на 3000+ IOPS.

Заведу отдельную тему по переезду БД на Oracle Database Enterprise Edition последней версии с текущей версии Oracle Database Standard Edition 12.2 - если это имеет смысл, конечно. База эта не особо активна, в основном ее используют на чтение, как архивную.
Упс. Не три часа, а два. с 01:00 по 03:15 !
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Expdp.exe зависает во время экспорта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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