DBMS_PARALLEL_EXECUTE.TASK_STATUS = crashed ! si je veux paralléliser une requête
Bonjour,
Voilà mon code, j'essaye de paralléliser une requête par ROWID, dans le select, une fonction qui calcule et écrit dans une autre table (tout cela packagé) :
Code:
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
| DECLARE
c_update_statement CONSTANT VARCHAR2 (2000)
:= 'select PKG_STOCK.so_f_ea_insert_mb_new(ad.adhe_cod_prod, ad.adhe_no_adhes, decode(trunc(sysdate), trunc(last_day(sysdate)), trunc(SYSDATE)
, decode(to_char(sysdate, ''D''), 5, trunc(SYSDATE)
, trunc(SYSDATE))))
from /*+ ROWID (dda) */ ADHESIONS ad
where ROWID BETWEEN :starting_rowid AND :ending_rowid';
c_task_name CONSTANT VARCHAR2 (20) := 'Give Raise';
l_attempts PLS_INTEGER := 1;
retries_in PLS_INTEGER := 2;
l_d_effet DATE;
BEGIN
BEGIN
DBMS_OUTPUT.put_line('[SQL-INFO] Lancement du script');
DBMS_PARALLEL_EXECUTE.CREATE_TASK (c_task_name);
DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID (task_name => c_task_name
, table_owner => USER
, table_name => 'ADHESIONS'
, by_row => TRUE
, chunk_size => 1000
); |
Mais lorsque j'exécute le suite le statut de la tâche passe en CRASHED !!! et mon job se termine, pouvez-vous m'éclairer sur l'origine du crash et si ma requête initiale est bien implémentée, merci ! :roll:
Code:
1 2 3 4 5
| DBMS_PARALLEL_EXECUTE.RUN_TASK (task_name => c_task_name
, sql_stmt => c_update_statement
, language_flag => DBMS_SQL.native
, parallel_level => 10
); |
Cdlt,