Bonjour,

Je travaille sous Talend Open Studio version 4.1.2 avec une base de données Oracle 10g.

J'effectue un job qui me permet dans un premier temps de récupérer tous les différents libellés de garantie présents sur une base client. A part de cet ensemble de libellés, je créé dynamiquement une requête que j’exécute ensuite.

Ma requête à la forme suivante :

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
26
27
28
29
30
31
32
33
34
 
"select pol_numpol, pol_datresil, pol_datechpro, ver_compteur, ver_libelle, ver_dateoperation, sor_datedebut, sor_datefin, sor_datedeb_fact, sor_datefin_fact, pas_nb_jours_prorata, pri_type_risque, 
bpp_type, bpp_pp_sexe, bpp_pp_nais_date, bpp_pp_nais_pay_code, mar_libelle, bpp_pp_nb_enfants, 
bpp_pp_handicape, in_code_etabl, in_type," + globalMap.get("Key1") + "from ( select pol_numpol, ver_compteur, ver_libelle, ver_dateoperation, sor_datedebut, sor_datefin, 
sor_datedeb_fact, sor_datefin_fact, pol_datresil, pol_datechpro, ccp_libelle, gad_prime_nette, 
pas_nb_jours_prorata, pri_type_risque, bpp_type, bpp_pp_sexe, bpp_pp_nais_date, bpp_pp_nais_pay_code, 
mar_libelle, bpp_pp_nb_enfants, bpp_pp_handicape, in_code_etabl, in_type
from f_polices, f_version_police, f_mouvement, f_sit_objet_risque, f_garantie_dyn, f_produitass, f_prd_risque, 
f_sit_assure, f_p_c_assure, f_p_personne, t_sit_maritale, f_intermediaire, f_tarif_ass, t_intercalaire, 
f_tarif_gar, t_cdecpt
where gad_ptrsorid = sor_ident (+)
and sor_ptrpolid = pol_ident (+)
and sor_ident = mvt_ptrsuivantid (+)
and mvt_ptrverid = ver_ident (+)
and pol_ptrpasid = pas_ident (+)
and pas_ident = pri_ptrpasident (+)
and sor_ident = sar_ptrsorid (+)
and sar_ptrassid = bpass_ident (+)
and bpass_ptrbppident = bpp_ident (+)
and bpp_ptrmarid = mar_ident (+) 
and pol_ptrinid = in_ident (+)  
and sor_datetarif = tas_dateffet (+) 
and tas_codeintercalaire = ta_code (+)
and ta_cle = tga_cletarif (+)
and tga_code_compta = ccp_code (+)
and (pol_datresil is null or pol_datresil >= (sysdate - to_yminterval('03-00')))
group by pol_numpol, pol_datresil, pol_datechpro, ver_compteur, ver_libelle, ver_dateoperation, sor_datedebut, sor_datefin, sor_datedeb_fact, sor_datefin_fact, gad_prime_nette, ccp_libelle, 
pas_nb_jours_prorata, pri_type_risque, bpp_type, bpp_pp_sexe, bpp_pp_nais_date, bpp_pp_nais_pay_code, 
mar_libelle, bpp_pp_nb_enfants, bpp_pp_handicape, in_code_etabl, in_type )
group by pol_numpol, pol_datresil, pol_datechpro, ver_compteur, ver_libelle, ver_dateoperation, 
sor_datedebut, sor_datefin, sor_datedeb_fact, sor_datefin_fact, pas_nb_jours_prorata, pri_type_risque, 
bpp_type, bpp_pp_sexe, bpp_pp_nais_date, bpp_pp_nais_pay_code, mar_libelle, bpp_pp_nb_enfants, 
bpp_pp_handicape, in_code_etabl, in_type
order by pol_numpol asc, ver_compteur asc"
Au moment de l'exécution, Key1 contient la valeur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
 decode( ccp_libelle, 'Temporaire décès à PU' , gad_prime_nette, 0 ) || ';' || decode( ccp_libelle, 'Temporaire décès à PP' , gad_prime_nette, 0 ) || ';' || decode( ccp_libelle, 'Rentes à PU' , gad_prime_nette, 0 ) || ';' || decode( ccp_libelle, 'ASSISTANCE - FRAIS MEDICAUX A L ETRANGER' , gad_prime_nette, 0 )
Ici je n'ai mis que 4 libellés, mais bien entendu, la requête est aussi longue que le nombre de libellés présents dans la base. Dans mon cas il y en à un peu moins de 200.

Le problème est qu'à l'exécution, le job bloque un moment sur le tOracleInput, et après un peu plus de 5h d'exécution, me pose l'erreur suivante :

ORA-01652: impossible d'étendre le segment temporaire de 128 dans le tablespace TEMP

Seulement dans ma base, j'ai sur TEMP, deux filename, sur deux disques différents, chacun faisant 32 Gb, en auto extend avec un next extend de 640 Kb ainsi qu'un max size/max blocks unlimited.

Si dans ma requête je place un
"and rownum < 200"
Cela fonctionne, le problème doit donc vraiment venir de la mise en mémoire par le tOracleInput, non? Comment je pourrai faire pour augmenter ce tablespace, sachant que je pensais déjà l'avoir fait mais apparemment ça ne fonctionne pas...

Merci pour votre aide.

Merci pour votre aide.