Optimisation d'un import avec SQL Loader

Fermé
marieo - 27 sept. 2013 à 17:11
eiramo Messages postés 4 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 1 octobre 2013 - 1 oct. 2013 à 17:35
J'ai un pb avec SQLLoader. En effet, dans mon fichier .ctl j'ai défini un point de commit toutes les 10.000 lignes mais lors du traitement du fichier à intégrer, le commit se fait toutes les lignes. Du coup, le traitement est très long car je travaille sur un fichier de 26 millions de lignes.

Auriez-vous une solution à me proposer pour améliorer les performances de mon utilisation de SQL Loader ?

La table Oracle de stockage ne contient ni clé primaire ni index activé...

Voici le fichier .ctl
OPTIONS (DIRECT=FALSE, ROWS=10000, ERRORS=100000)
LOAD DATA INFILE 'DonneesMCO\rsa12.txt'
BADFILE 'FichiersLOG\BAD_rsa12_epur.bad'
DISCARDFILE 'FichiersLOG\DSC_rsa12_epur.dsc'
TRUNCATE
INTO TABLE GDS_FRANCE2012."ZZZ_MCORSA_EPUR"
FIELDS terminated BY ";" OPTIONALLY ENCLOSED BY '"'
TRAILING nullcols
(RSA_FINESS position(01:09) CHAR(9),
RSA_NUMRSA position(13:22) INTEGER EXTERNAL(10),
RSA_NBRUM position(51:52) INTEGER EXTERNAL(2),
RSA_NBAUTPGV position(109:109) INTEGER EXTERNAL(1),
RSA_NBRDTH position(131:131) INTEGER EXTERNAL(1),
RSA_NBDAS position(215:218) INTEGER EXTERNAL(4),
RSA_NBACT position(219:223) INTEGER EXTERNAL(5),
RSA_EPUR position(224:2266100) CHAR) -- CLOB : taille actuelle maximale possible : 2.265.876

Voici un extrait de mon fichier .txt à plat
12078725421900020000011160021328Z04Z0001128Z04Z10101058   18 0520128  0030121000000     0599990000000099990 00000000000000000000000                      00000000000000000000000000000                  01Z491  N189  000000000Z491  N189  000000000030120787254  000000                 
1207872542190002000002116002 1190Z00Z02401079 2xx042012xx 002999999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000029
1207872542190002000003116002 1190Z00Z02401063 1xx032012xx 003099999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030
1207872542190002000004116001 1190Z00Z02401049 1xx012012xx 003099999 99990000000099990 0000000000000000 0 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030
12078725421900020000051160011328Z04Z0001128Z04Z10101080 28 0220128 0028124900000 14 D110000000099990 0000000000000000 0 00000000000000000000000000000 01Z491 N189 000000000Z491 N189 00000000002812078725423000000
1207872542190002000006116002 1190Z00Z02401054 1xx042012xx 002999999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000029
12078725421900020000071160021328Z04Z0001128Z04Z10101060 18 0420128 0029121000000 12 D110000000099990 00000000000000000000000 00000000000000000000000000000 01Z491 N189 000000000Z491 N189 00000000002912078725423000000
1207872542190002000008116001 1190Z00Z02401068 1xx012012xx 003099999 99990000000099990 0000000000000000 0 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030
1207872542190002000009116002 1190Z00Z02401078 1xx042012xx 002999999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000029
1207872542190002000010116001 1190Z00Z02401054 1xx012012xx 003099999 99990000000099990 0000000000000000 0 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030
12078725421900020000111160021328Z04Z0001128Z04Z10101075 18 0520128 0030121000000 13 D110000000099990 00000000000000000000000 00000000000000000000000000000 01Z491 N189 000000000Z491 N189 00000000003012078725423000000
12078725421900020000121160021328Z04Z0001128Z04Z10101067 18 0520128 0030121000000 14 D110000000099990 00000000000000000000000 00000000000000000000000000000 01Z491 N189 000000000Z491 N189 00000000003012078725423000000
1207872542190002000013116001 1190Z00Z02401076 1xx012012xx 003099999 99990000000099990 0000000000000000 0 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030
1207872542190002000014116001 1190Z00Z02401083 1xx012012xx 003099999 99990000000099990 0000000000000000 0 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030
12078725421900020000151160021328Z04Z0001128Z04Z10101075 18 0420128 0029121000000 13 D110000000099990 00000000000000000000000 00000000000000000000000000000 01Z491 N189 000000000Z491 N189 00000000002912078725423000000
1207872542190002000016116002 1190Z00Z02401083 2xx042012xx 000799999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000007
12078725421900020000171160021328Z04Z0001128Z04Z10101068 18 0420128 0029121000000 1399990000000099990 00000000000000000000000 00000000000000000000000000000 01Z491 N189 000000000Z491 N189 000000000029120787254 000000
1207872542190002000018116002 1190Z00Z02401083 1xx042012xx 002999999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000029
1207872542190002000019116002 1190Z00Z02401089 2xx032012xx 003099999 99990000000099990 00000000000000000000000 00000000000000000000000000000 01RSSABS 000000000RSSABS 000000030

Voici le fichier résultat de l'import avec SQL Loader
SQL*Loader: Release 10.2.0.1.0 - Production on Mar. Sept. 24 13:53:54 2013

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Fichier de contrôle : Import2012_AtihMCO_07RSA.ctl
Fichier de données : DonneesMCO\rsa12.txt
Fichier BAD : FichiersLOG\BAD_rsa12.bad
Fichier DISCARD : FichiersLOG\DSC_rsa12.dsc
(Allouer tous les rebuts)

Nombre à charger : ALL
Nombre à sauter: 0
Erreurs permises: 100000
Tableau de liens : 10000 lignes, maximum de 256000 octets
Continuation : aucune spécification
Chemin utilisé: Classique

Table GDS_FRANCE2012."Z_MCORSA_EPUR", chargé à partir de chaque enregistrement physique.
Option d'insertion en vigueur pour cette table : TRUNCATE
option TRAILING NULLCOLS effective

Nom de colonne Position Long. Séparat. Encadrem. Type de données
------------------------------ ---------- ----- ---- ---- ---------------------
RSA_FINESS 1:9 9 ; O(") CHARACTER
RSA_NUMRSA 13:22 10 ; O(") CHARACTER
RSA_NBRUM 51:52 2 ; O(") CHARACTER
RSA_NBAUTPGV 109:109 1 ; O(") CHARACTER
RSA_NBRDTH 131:131 1 ; O(") CHARACTER
RSA_NBDAS 215:218 4 ; O(") CHARACTER
RSA_NBACT 219:223 5 ; O(") CHARACTER
RSA_EPUR 224:2266100 ***** ; O(") CHARACTER
La longueur de champ maximale est 2265877

la valeur utilisée pour le paramètre ROWS est passée de 10000 à 1

Table GDS_FRANCE2012."Z_MCORSA_EPUR" :
Chargement réussi de 26658005 Lignes.
428 Lignes chargement impossible dû à des erreurs de données.
0 Lignes chargement impossible car échec de toutes les clauses WHEN.
0 Lignes chargement impossible car tous les champs étaient non renseignés.


Espace affecté au tableau de liens : 2266344 octets(1 lignes)
Octets de tampon de lecture : 1048576

Nombre total d'enregistrements logiques ignorés : 0
Nombre total d'enregistrements logiques lus : 26658433
Nombre total d'enregistrements logiques rejetés : 428
Nombre total d'enregistrements logiques mis au rebut : 0

Le début de l'exécution a été effectué sur Mar. Sept. 24 13:53:54 2013
La fin de l'exécution a été effectuée sur Mer. Sept. 25 17:41:07 2013

Temps écoulé (ELAPSED) : 27:47:13.87
Temps processeur (CPU) : 03:19:18.89

Merci beaucoup à tous pour votre aide.
MarieO
A voir également:

2 réponses

jee pee Messages postés 41158 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 22 avril 2025 9 602
28 sept. 2013 à 17:08
Bonjour,

Ton enregistrement fait 2mo ce qui est énorme. Le row doit être remis a 1 car l'enregistrement sature le buffer de commit.

Il est possible de modifier la taille du buffer, de supprimer le passage par les redos logs. Voir des pistes sur : http://www.dba-oracle.com/t_optimize_sql_loader_sqlldr_performance.htm

cdlt
0
eiramo Messages postés 4 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 1 octobre 2013
1 oct. 2013 à 17:35
Après lecture de la documentation SQL Loader, il apparait que l'information ROW n'est pas prise en compte lorsqu'il y a import vers un champ de type LOB.
Comme c'est le cas dans mon fichier, il me semble que cela explique pourquoi le commit se fait obligatoirement toutes les 1 lignes...

MarieO
0