IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Traitement En Masse


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut Traitement En Masse
    Bonjour,

    je travaille sur un grosse base oracle et je dois sortir mettre a jour tous les matins des tables qui sont consitutés par l'agregation d'une partie des données de la base.
    La volumetrie correspond à plusieurs millions.

    Pour cela, j'utilise une procédure stockée (ORACLE) mais qui effectue un select suivi d'un insert into dans des tables cibles. Les indexs sont désactivés durant l'opération.

    LE pb c'est que ce traitement prend la nuit et souvent ne fonctionne pas (obligé de killer le process le matin) et que ces reportings doivent impérativement sortir..


    Auriez-vous qq conseils sur ce sujet (j'ai deja consulté les posts), sur le moyen peut être de faire du traitement differentiel (difficile lorsque les données proviennent d'une 10e de tables) ou sur des outils ORACLE qui pourraient m'aider.

    Merci d'avance,

    Du Chieng

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Bonjour ,
    est ce que tu utilises de vues matérialisées ?

    merci de fournir le contexte technique conformément aux régles du forum

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 57
    Par défaut
    Pourrais tu donner également un exemple de procédure? La plupart du temps, nul besoin de faire un select suivit d'un insert, si ce n'est que de l'agrégation de donnée, un suffit amplement

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut Re: Traitement En Masse
    Citation Envoyé par tetedechien
    Les indexs sont désactivés durant l'opération.
    Tu as voulu dire, les Triggers non ?
    Si tu désactives les indexes, tes SELECT vont être en TABLE ACCESS FULL.

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Oui enfin, il est permis de désactiver les index sur les opérations d'insertion (voire de les supprimer avant l'insertion en masse et les recréer après l'opération)

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut
    Hello,

    Merci pour votre réactivité.

    En fait j'ai créé une procédure stockée effectue le traitement.
    Ce traitement se décompose de la manière ssuivante :

    1 - création des tables d'aggrégation (y en a plusieurs). Ces tables portent un nom avec un suffixe _E (pour ecriture).

    2 - insertion des données dans ces tables par lot d'intervalles (sinon les rollback segment ont mal, c'est pour cela que je n'utilise pas de create table)

    3 - renommage des tables avec le suffixe_L (lecture)

    4 - creation des indexs sur le stables en _L

    Ce système permet de garder les données obtenues la vieille même si la proc plante.

    Le problème c'est que les données proviennent de plein de tables différentes et que cela représente + millions de lignes.

    Ce système est particulièrement instable.
    Les ralentissements et blocages ne sont pas prévisibles (cela varie entre les différentes phases d'agrégation).

    Au début je pensais que cela venait d'accès concurrent, mais , meme ,seule la proc n'est pas stable.

    J'ai 2 pistes grâce au DBA :
    - utiliser des méchanismes de réplication associés à des vues matérialisés
    - spécifier un rollback taillé idéalement lors du démarrage de la session


    De toutes le sfaçons, je pense qu'a à terme il faudra mettre en place un traitement différentiel.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    il faut passer par des vues matérialisés pour ton probléme .

    Ceci étant dit il te faut l'explan plan du select pour l'insert peux être que tu peux accéllerer les choses ici

    Je ne comprends pas pourquoi ton dba ne te conseille pas de faire un create as car ainsi tu évite d'exploser les RBS

  8. #8
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 57
    Par défaut
    Personnellement, je viens de travailler sur ce genre de scripts, plusieurs millions de lignes brasées, et au final, quelques heures seulement...


    Tu as essayé de faire des create as select? Plutot que des inserts ligne à ligne?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut
    Cela fonctionne comment le système avec les vues matérialisées ?

    Endymion222, quelle technique as tu utilisée ?

  10. #10
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 57
    Par défaut
    Tu veux créer une table agrégeant les données de plusieurs tables, prenons un exemple simple avec deux tables.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    create table_agregée as 
    select
       champs1_table1,
       champs2_table1,
       champs1_table2
    from
       table1,table2
    where
       table1.pk=table2.fk
    Cela permet d'agreger très rapidement les données des différentes tables.

    Ensuite, si tu as des calculs spécifiques à faire, tu fais des updates pour ajouter des champs précis. C'est assez rapide, et permet une maintenance assez aisée.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Par défaut
    Je pense que la personne qui a fait le boulot avant moi avait testé.

    Mais je vais essayer.

    Je vous tiens au courant.

Discussions similaires

  1. [XL-97] Traitement de masse
    Par la_fouine1806 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2013, 18h45
  2. [SP-2007] Traitement en masses des librairies [via webservice et VBA]
    Par studying dans le forum SharePoint
    Réponses: 4
    Dernier message: 21/12/2012, 16h30
  3. [PictureBox] traitement "de masse"
    Par Jeliel dans le forum VC++ .NET
    Réponses: 0
    Dernier message: 14/04/2009, 19h00
  4. [Suggestion] Ajout de traitement en masse
    Par millie dans le forum Millie
    Réponses: 13
    Dernier message: 28/01/2009, 17h36
  5. Traitement de masse avec la fonction trim
    Par it-worker dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2007, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo