Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 09h57   #1
Candidat au titre de Membre du Club
 
Justine Dreyfus
Inscription : juin 2010
Messages : 109
Détails du profil
Informations personnelles :
Nom : Justine Dreyfus

Informations forums :
Inscription : juin 2010
Messages : 109
Points : 14
Points : 14
Par défaut Erreur de mise en mémoire sur un tOracleInput

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 :
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 :
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? Est-ce qu'il serait possible de configurer le tOracleInput pour qu'il ne mette pas en mémoire ces données, ou alors le délester...???

Merci pour votre aide.
justinedr71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h02   #2
Membre régulier
 
Etienne Menuet
Inscription : mai 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Etienne Menuet
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2010
Messages : 71
Points : 98
Points : 98
Bonjour,

Dans les propriétés avancées, il faut cocher utiliser un curseur
emenuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h58.


 
 
 
 
Partenaires

Hébergement Web