|
|
|
DBMS_PARALLEL_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Добрый день. Столкнулся с проблемой. Есть задача, которая обрабатывается в параллели в 10 потоков. Например на начало выполнения разбивается задача на 200 чанков, создаются 10 потоков, которые берут в обработку чанк, после завершения одного, переходят к следующему. И тут начинается самое интересное, в большинстве случаев все работает как описал. Но бывает, когда создались 10 потоков, но в итоге 9 потоков отвалились по окончании обработки чанка и к новому не перешли, и все сводиться в 1 поток, бывает в 2. В alert.log нет никаких упоминаний об аварийной завершении джоба в это время. Уже и пакет пересмотрел, но все упирается во внешние методы на С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:50 |
|
||
|
DBMS_PARALLEL_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Элик спасибо. Действительно проблема в определении следующего свободного чанка. Ребята не учли, что один и тот же чанк может быть взять разными потоками в одно и то же время. Т.е. если 2 потока освободились одновременно, то один возьмет новый чанк, а второй получит ошибку блокировки и скорее всего на верху стоит глушилка. В новых версиях они использовали Код: plsql 1. и переписали сам метод dbms_parallel_execute_internal.GET_RANGE под новую логику. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 17:10 |
|
||
|
DBMS_PARALLEL_EXECUTE
|
|||
|---|---|---|---|
|
#18+
FireXДействительноТы понял, что версию указывать немаловажно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 17:24 |
|
||
|
DBMS_PARALLEL_EXECUTE
|
|||
|---|---|---|---|
|
#18+
ElicFireXДействительноТы понял, что версию указывать немаловажно? Да, согласен на все 100. Но у меня это воспроизводилось не у одного заказчика и на разных версиях, но у всех стояла меньше 11.2.0.4. Но теперь зная где ошибка, можно разврапить пакет dbms_parallel_execute_internal и посмотреть на метод GET_RANGE Еще раз спасибо. И еще, я поторопился с выводом об ошибке блокировки, 2-й поток просто бы получил пустой чанк CHUNK_ID и посчитал, что свободных чанков больше нет и завершил свою работу. И так со всеми чанками, я обратил внимание, что у меня чанки отваливались по одному, не сразу все сваливались, а продолжали работу какое-то время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 17:47 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39379508&tid=1886711]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 509ms |

| 0 / 0 |
