powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / FETCH BULK COLLECT INTO LIMIT долго выполняется
21 сообщений из 21, страница 1 из 1
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605678
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите пожалуйста. Eсть курсор здоровый, есть в нём юнионы и дблинки. OPEN cursor выполняется за секунду а FETCH за два часа. Притом каждый день время растёт на 2 минуты хотя количество записей приблизительно равно каждый день. Выполнение самого скрипта в TOAD длится несколько секунд. Что может быть не так с FETCH? Oracle 11g. Спасибо.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605690
Fetch-ch-ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
купить билет на поезд и занять место в вагоне занимает 30 минут, а до места он едет двое суток - что не так с поездом?!
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605695
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fetch-ch-ch,
Если поезд едет 50 километров за две сутки то это уже не поезд а телега.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605703
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olegush,

Покажи вывод для проблемного курсора
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select executions,
       rows_processed,
       fetches,
       elapsed_time,
       cpu_time,
       plsql_exec_time,
       user_io_wait_time,
       concurrency_wait_time,
       application_wait_time
  from v$sql
 where sql_id = 'your sql_id'
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605715
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

image
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605720
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olegush,

Насколько я понял по заголовку речь идет про fetch из курсора в коллекцию в PL/SQL.
В твоем случае ни одной строки не фетчится и время выполнение порядка 15-16 секунд.

Если посмотреть статистику для кода типа такого
Код: 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.
declare
   n       numbers;
   c       sys_refcursor;
   limit   int := 1e5;
begin

   open c for
      select --+ querty
            rownum
        from dual
      connect by rownum <= 1e6;

   loop

      fetch c
        bulk collect into n
      limit limit;

      exit when n.count < limit;
      
   end loop;

end;
/

Число фетч будет равно числу итераций + 1, а rows_processed - числу выбранных строк из курсора.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set pages 150 lines 150
select executions,
       rows_processed,
       fetches,
       elapsed_time,
       cpu_time,
       plsql_exec_time,
       user_io_wait_time,
       concurrency_wait_time,
       application_wait_time
  from v$sql
 where sql_id = '26j00tx9fzd8d';


Код: plsql
1.
2.
3.
4.
EXECUTIONS ROWS_PROCESSED    FETCHES ELAPSED_TIME   CPU_TIME PLSQL_EXEC_TIME USER_IO_WAIT_TIME CONCURRENCY_WAIT_TIME APPLICATION_WAIT_TIME
---------- -------------- ---------- ------------ ---------- --------------- ----------------- --------------------- ---------------------
         1        1000000         11       823582     819875               0                 0                     0                     0
1 row selected.



Возникают сомнения тот ли SQL_ID ты выбрал.
Хотя может дело в dblink, смотри что происходит и на удаленной базе.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39605733
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

Я понял, спасибо. Я поменяю немножко процедуру и посмотим что она завтра даст. Ваши скрипты очень полезные. Спасибо.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606266
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

Добрый день, вот что я сегодня получил:
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606275
Fetch-ch-ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OlegushFetch-ch-ch,
Если поезд едет 50 километров за две сутки то это уже не поезд а телега.

OlegushEсть курсор здоровый, есть в нём юнионы и дблинки.

Дык отож :) :) :)
Не, сделать так, чтобы exec курсора (сесть в поезд) занимал столько же времени, как и полный фетч (доехать), конечно, можно. Только не в сторону "несколько секунд", а в сторону "два часа. Притом каждый день время растёт на 2 минуты".
Достаточно материализовать результат.

Если же хочется чтобы все работало like a charm - то надо качественно поработать над "курсор здоровый, есть в нём юнионы и дблинки"
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606276
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не знаю сколько записей было вчера (точно до тысячи) но время было ровно на 120 секунд меньше.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606300
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fetch-ch-chЕсли же хочется чтобы все работало like a charm - то надо качественно поработать над "курсор здоровый, есть в нём юнионы и дблинки"

результат выполнения скрипта с /*+ GATHER_PLAN_STATISTICS */ админом вне процедуры:

Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
-----------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
-----------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                           |      1 |        |      0 |00:00:00.01 |       0 |       |       |          |
|   1 |  HASH UNIQUE                             |                           |      1 |    269K|      0 |00:00:00.01 |       0 |    24M|  4367K|          |
|   2 |   VIEW                                   |                           |      1 |    269K|     55 |00:00:00.01 |      61 |       |       |          |
|   3 |    UNION-ALL                             |                           |      1 |        |     55 |00:00:00.01 |      61 |       |       |          |
|*  4 |     FILTER                               |                           |      1 |        |     55 |00:00:00.01 |      61 |       |       |          |
|*  5 |      TABLE ACCESS FULL                   | XXX_XXXXXXXX_XXXX_XXXXXXX |      1 |      2 |     55 |00:00:00.01 |      61 |       |       |          |
|   6 |      SORT AGGREGATE                      |                           |     11 |      1 |     11 |00:00:01.06 |       0 |       |       |          |
|*  7 |       VIEW                               |                           |     11 |      1 |      0 |00:00:01.06 |       0 |       |       |          |
|*  8 |        WINDOW SORT PUSHED RANK           |                           |     11 |      1 |      5 |00:00:01.06 |       0 |  2048 |  2048 | 2048  (0)|
|   9 |         WINDOW SORT                      |                           |     11 |      1 |     12 |00:00:01.06 |       0 |  4096 |  4096 | 4096  (0)|
|  10 |          NESTED LOOPS                    |                           |     11 |      1 |     12 |00:00:01.06 |       0 |       |       |          |
|  11 |           VIEW                           | XX_XXX_X                  |     11 |      1 |      1 |00:00:00.94 |       0 |       |       |          |
|  12 |            SORT UNIQUE                   |                           |     11 |      1 |      1 |00:00:00.94 |       0 |  2048 |  2048 | 2048  (0)|
|  13 |             REMOTE                       | XXX_XX                    |     11 |      1 |      1 |00:00:00.94 |       0 |       |       |          |
|  14 |           REMOTE                         | XXX_XX                    |      1 |      1 |     12 |00:00:00.12 |       0 |       |       |          |
|  15 |     REMOTE                               | XXX_XX                    |      1 |    126K|      0 |00:00:00.13 |       0 |       |       |          |
|  16 |     REMOTE                               | XXX_XXXXXXXX              |      1 |    142K|      0 |00:00:00.11 |       0 |       |       |          |
|* 17 |     FILTER                               |                           |      1 |        |      0 |00:00:01.38 |       0 |       |       |          |
|* 18 |      HASH JOIN OUTER                     |                           |      1 |      1 |    690 |00:00:01.39 |       0 |   947K|   947K| 1231K (0)|
|  19 |       VIEW                               |                           |      1 |    997 |    690 |00:00:00.42 |       0 |       |       |          |
|  20 |        REMOTE                            |                           |      1 |        |    690 |00:00:00.42 |       0 |       |       |          |
|  21 |       REMOTE                             | XXX_XXXXXXXX              |      1 |    571K|    574K|00:00:00.25 |       0 |       |       |          |
|* 22 |     FILTER                               |                           |      1 |        |      0 |00:00:00.01 |       0 |       |       |          |
|  23 |      NESTED LOOPS OUTER                  |                           |      1 |      1 |    140 |00:00:12.58 |    3245 |       |       |          |
|* 24 |       HASH JOIN                          |                           |      1 |      2 |    141 |00:00:02.08 |    3245 |  1180K|  1180K| 1226K (0)|
|  25 |        VIEW                              | XX_XXX_X                  |      1 |      1 |    317 |00:00:00.01 |     826 |       |       |          |
|  26 |         HASH UNIQUE                      |                           |      1 |      1 |    317 |00:00:00.01 |     826 |  1207K|  1207K| 1327K (0)|
|  27 |          NESTED LOOPS                    |                           |      1 |        |    317 |00:00:00.01 |     826 |       |       |          |
|  28 |           NESTED LOOPS                   |                           |      1 |      1 |    405 |00:00:00.01 |     596 |       |       |          |
|* 29 |            TABLE ACCESS BY INDEX ROWID   | X_XXX_XXX                 |      1 |     22 |    405 |00:00:00.01 |     228 |       |       |          |
|* 30 |             INDEX SKIP SCAN              | X_XXX_XXX_XXX_XXXXXX_X    |      1 |    443 |    440 |00:00:00.01 |      35 |       |       |          |
|* 31 |            INDEX UNIQUE SCAN             | X_XXXX_XXX_XX             |    405 |      1 |    405 |00:00:00.01 |     368 |       |       |          |
|* 32 |           TABLE ACCESS BY INDEX ROWID    | X_XXXX_XXX                |    405 |      1 |    317 |00:00:00.01 |     230 |       |       |          |
|  33 |        VIEW                              |                           |      1 |   5016 |   5179 |00:00:01.63 |    2419 |       |       |          |
|* 34 |         HASH JOIN OUTER                  |                           |      1 |   5016 |   5179 |00:00:01.63 |    2419 |  1000K|  1000K| 1511K (0)|
|  35 |          VIEW                            |                           |      1 |   3616 |   5786 |00:00:00.41 |    2419 |       |       |          |
|  36 |           CONCATENATION                  |                           |      1 |        |   5786 |00:00:00.41 |    2419 |       |       |          |
|* 37 |            HASH JOIN OUTER               |                           |      1 |   1410 |   3384 |00:00:00.39 |    1390 |   771K|   771K| 1239K (0)|
|  38 |             MERGE JOIN                   |                           |      1 |   1009 |    999 |00:00:00.01 |    1390 |       |       |          |
|* 39 |              TABLE ACCESS BY INDEX ROWID | X_XXX                     |      1 |   1476 |   1474 |00:00:00.01 |     406 |       |       |          |
|  40 |               INDEX FULL SCAN            | X_XXX_XX                  |      1 |   1477 |   1475 |00:00:00.01 |       6 |       |       |          |
|* 41 |              SORT JOIN                   |                           |   1474 |   1009 |    999 |00:00:00.01 |     984 |   115K|   115K|  102K (0)|
|  42 |               TABLE ACCESS BY INDEX ROWID| X_XXXX                    |      1 |   1009 |   1001 |00:00:00.01 |     984 |       |       |          |
|* 43 |                INDEX RANGE SCAN          | XXX_XXXXXXXXXX_X          |      1 |   1009 |   1001 |00:00:00.01 |      18 |       |       |          |
|  44 |             REMOTE                       | XXX_XXXX                  |      1 |    585K|    593K|00:00:00.28 |       0 |       |       |          |
|* 45 |            HASH JOIN OUTER               |                           |      1 |   2206 |   2402 |00:00:00.17 |    1029 |   776K|   776K| 1231K (0)|
|  46 |             MERGE JOIN                   |                           |      1 |   1578 |    655 |00:00:00.01 |    1029 |       |       |          |
|* 47 |              TABLE ACCESS BY INDEX ROWID | X_XXX                     |      1 |   1476 |   1474 |00:00:00.01 |     406 |       |       |          |
|  48 |               INDEX FULL SCAN            | X_XXX_XX                  |      1 |   1477 |   1475 |00:00:00.01 |       6 |       |       |          |
|* 49 |              SORT JOIN                   |                           |   1474 |   1579 |    655 |00:00:00.01 |     623 | 80896 | 80896 |71680  (0)|
|  50 |               TABLE ACCESS BY INDEX ROWID| X_XXXX                    |      1 |   1579 |    655 |00:00:00.01 |     623 |       |       |          |
|* 51 |                INDEX RANGE SCAN          | XXX_XXXXXXXXXX_X          |      1 |   1579 |    655 |00:00:00.01 |      20 |       |       |          |
|  52 |             REMOTE                       | XXX_XXXX                  |      1 |    585K|    593K|00:00:00.11 |       0 |       |       |          |
|  53 |          REMOTE                          | XXX_XXXXXXXX              |      1 |    546K|    410K|00:00:00.09 |       0 |       |       |          |
|  54 |       REMOTE                             | XXX_XXXXXXXX              |    141 |    570K|    140 |00:00:10.59 |       0 |       |       |          |
-----------------------------------------------------------------------------------------------------------------------------------------------------------



где нужно нажать чтоб работал like a charm?

MATERIALIZED VIEW действительно поможет?
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606319
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olegushгде нужно нажать чтоб работал like a charm?Замени на
Код: plsql
1.
select ... from dual where 1 = 0

Что твой что этот запрос ничего не возвращает.
OlegushMATERIALIZED VIEW действительно поможет?Тебе же A-Time ясно показывает куда уходит время.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606325
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopЧто твой что этот запрос ничего не возвращает.

разве 165 rows_processed это ничего?
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606328
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopТебе же A-Time ясно показывает куда уходит время.

показывает секунды а у меня уходят часы.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606332
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olegushdbms_photoshopЧто твой что этот запрос ничего не возвращает.

разве 165 rows_processed это ничего?A-Rows = 0 для SELECT STATEMENT.
Не очень совпадает со статистикой из v$sql.
Olegushdbms_photoshopТебе же A-Time ясно показывает куда уходит время.

показывает секунды а у меня уходят часы.По всей видимости из-за NL дергается линк в цикле и время на удаленной базе не попадает в A-Time.
Соответственно имеет смысл уходить от NL.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606410
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopПо всей видимости
По всей видимости админ дернул отчет секунд через 12-15 после запуска запроса, ибо нефиг :)
А ТС можно порекомендовать три вещи:
1. загуглить DRIVING_SITE
2. переработать запрос, хотя бы убрать distinct (ну не нравится он мне), а лучше - рассмотреть варианты DI.
3. убедиться, что в апреле линки не полетят согласно обсуждаемой сегодня нотке.
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606462
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

ху из DI?

.....
stax
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606515
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousПо всей видимости админ дернул отчет секунд через 12-15 после запуска запроса, ибо нефиг :)У каждого своя видимость, но я думаю админ взял запрос из кода и просто подставил не те бинды или вообще не подставил. :)
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606573
Olegush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopУ каждого своя видимость, но я думаю админ взял запрос из кода и просто подставил не те бинды или вообще не подставил. :)
100%

andrey_anonymous 1. загуглить DRIVING_SITE
прямо в яблочко
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39606658
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxху из DI?
Продукты класса Data Integration - от ODI, информатик, сасов и иже с ними по самые коммьюнити-эдишн типа той же пентахи кеттл (на сегодня хитачи вроде)
...
Рейтинг: 0 / 0
FETCH BULK COLLECT INTO LIMIT долго выполняется
    #39607156
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousStaxху из DI?
Продукты класса Data Integration - от ODI, информатик, сасов и иже с ними по самые коммьюнити-эдишн типа той же пентахи кеттл (на сегодня хитачи вроде)

спасибо

зы
не уверен что все понял

.....
stax
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / FETCH BULK COLLECT INTO LIMIT долго выполняется
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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