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

SQL Oracle Discussion :

Stratégie d'extraction de données avec requête complexe


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut Stratégie d'extraction de données avec requête complexe
    Bonjour,

    Pour les besoins de mon applications, je dois extraire d'une base Oracle certaines données sous forme de fichier plat. Pour recupérer ces données, j'ai besoin de faire une jointure entre deux tables mais qui contiennent chacune plus de 3 Millions d'enregistrements et j'obtient l'erreur ORA-04030 (impossible d'allouer plus de mémoire) à chaque fois . Je pensais contourner le problème d'une autre manière:

    J'ai la possibilité de diviser les données de la table 1 en sous-ensembles qui sont définis dans une autre table et ainsi d'effectuer la jointure pour chaque sous-ensemble évitant ainsi de saturer le système (je sais que les sous-ensembles ne peuvent pas dépasser un certain nombre d'élément).

    Je me poser alors la question de comment procéder :

    1. J'extrait les sous-ensemble à l'aide d'un script sql et je les spool dans un fichier. A l'aide d'un shell je parcours ensuite ce fichier et pour chaque sous-ensemble, j'execute ma requête sql "métier" qui spool les résultats dans un fichier en lui passant en paramètre le sous-ensemble.

    2. J'écrit un petit bout de pl/sql qui fait les actions suivantes :
    - Recupère les sous-ensembles
    - Pour chaque sous-ensemble, effectue une requête bulkée dans un tableau
    - Parcours ensuite le tableau et spool dans un fichier à l'aide de UTL_FILE

    Pour le moment, je vais essayer la deuxième solution qui me parait plus propre.

    Qu'en pensez-vous

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    http://www.developpez.net/forums/sho...ight=ORA-04030

    réduis la taille de la SGA éventuellement.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Salut,

    Merci pour ta réponse, je m'étais un peu penché de ce coté là mais sans grande conviction quant à la résolution du problème car je trouvais que la mémoire SGA alloué était déjà assez faible :
    - Pool partagé : 128 Mo
    - Cache de tampon : 256 Mo
    - Zone de mémoire LARGE POOL : 16 Mo

    En bidouillant un peu et en baissant la PGA de 4096 Mo à 512 Mo, j'ai réussi à faire passer la requête d'un coup

    Je sais que du tuning avait été fait sur la base mais il y a longtemps. Je vais me repencher la dessus... Le serveur AIX doit avoir 6Go de RAM donc je pense qu'il est capable de supporter ce genre de requête, mais j'ai plus peur des effets de bord que pourrait provoquer le nouveau paramétrage...

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    une PGA à 4Go alors que le serveur n'a que 6Go ça parait un peu disproportionné en effet

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Petite correction, le serveur de prod à 8Go de RAM. Je vais me repencher sur le fonctionnement de la SGA et de la PGA pour voir ce qu'on peut faire...

Discussions similaires

  1. [Tableaux] Extraction de données avec cURL
    Par mrsoyer dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2009, 14h16
  2. [XSLT] extraction de donnéés avec xsl
    Par bobkorn dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 21/04/2008, 11h25
  3. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum Outils
    Réponses: 1
    Dernier message: 24/08/2007, 14h58
  4. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/08/2007, 14h58
  5. 3 tables avec requête complexe
    Par yamino dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/03/2004, 19h50

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