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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !
Cdlt,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 );
Partager