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

Administration Oracle Discussion :

[10g] erreur ORA-01652 suite à INSERT-SELECT


Sujet :

Administration Oracle

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [10g] erreur ORA-01652 suite à INSERT-SELECT
    Bonjour,

    Nous rencontrons une erreur ORA-01652 lors de l'exécution d'une commande de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT (champs)
    SELECT (champs) FROM SELECT (etc.)
    GROUP BY
    qui renvoie à peu près 5000 lignes.

    Un "vrai" tablespace temporaire a été créé pour l'instance par notre DBA (700Mo)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TEMPORARY TABLESPACE Nom_Tbl TEMPFILE Nom_TmpFile MANAGEMENT LOCAL etc.
    . Plus nous attribuons une valeur grande à ce tablespace temporaire plus le nombre de lignes lues est grand (mais provoque toujours l'erreur).
    A NOTER: l'erreur ne se produit pas dans un environnement 8i et 9i et les paramètres ORACLE sont les mêmes (en 10g, 8i et 9i).

    ORA-01652: unable to extend temp segment by string in tablespace string
    Cause: Failed to allocate an extent of the required number of blocks for a temporary segment in the tablespace indicated.
    Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the tablespace indicated.
    Questions:
    . Doit-on créer un tablespace temporaire très grand ? (60Go)
    . Un paramètre concernant la création des tablespaces temporaires nous a-t-il échappé?

    Merci d'avance pour toute suggestion ou direction à creuser ...

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je trouve bizarre qu'une requête qui ne ramène que 5000 lignes puisse poser des problèmes de ce genre. Elle ressemble à quoi ? Il y a une énorme quantité de données manipulées pour arriver au résultat final ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour Nuke,

    Dès demain je te joindrai la requête SQL concernée ainsi que la quantité de données manipulées. Il s'agit d'une requête qui concerne des données statistiques et qui alimente un infocentre.
    Ce qui est le plus étonnant c'est qu'elle fonctionne parfaitement sous 8i (après une install rapide sous cette version par notre DBA) et sous 9i (version en cours chez notre fournisseur). Le temps de traitement de toute la procédure (qui comporte également plusieurs requêtes supplémentaires) est de l'ordre d'une ou deux minutes si mes souvenirs sont bons.

    L'historique du problème:
    . Au début, l'infocentre était installé sur un serveur (et une instance) différente du serveur de production: SERVEUR1/INFOCENTRE - SERVEUR2/BASE_PROD et la liaison était effectuée par un DBLINK, mais la procédure lancée était très très longue (prb dû à une grande différence de puissance entre les 2 serveurs) - et même plantait pour cause de sauvegarde de la BDD.
    . Il a donc été décidé de regrouper les deux bases sur un seul serveur/instance pour effectuer ce traitement.
    . Nous avons recoupé les paramètres ORACLE utilisés entre les différentes versions (8i, 9i et 10g) - [oracle parameters sous Toad] sans noter de différence.

    Le problème viendrait-il d'une différence de comportement entre les tablespaces temporaires des versions 8i-9i et 10g ? La procédure utilisée comporte des tris, group by et utilise les indexes donc, à priori utiliserait intensivement le tablespace temporaire ?

    Merci pour ton soutien.

  4. #4
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    bonsoir,
    au vu du message d'erreur, je dirais que soit :
    - le Tablespace en question est plein et n'est pas en Autoextend.
    - le disque / la partition sur lequel est ce Tablespace est plein.

    Pour ce qui est de l'utilisation de l'espace temporaire, est-ce que ton (tes) Select contiennent des hints ?
    Si oui enlève-les !
    l'optimiseur à tellement changé entre la version 9i et la 10g que les hints éprouvés en 9i peuvent provoquer des plans d'exécution catastrophiques en 10g... d'où éventuelle surconsommation d'espace TEMP...

  5. #5
    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
    GROUP BY = tri = consommation de TEMP si PGA ou SORT_AREA_SIZE trop petite

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    tu peux tenter de mettre un index sur une ou plusieurs colonnes de ton group-by (les + discriminantes)

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/10/2006, 15h36
  2. [Oracle 10g] Erreur ORA-00600
    Par Pakkaï dans le forum Oracle
    Réponses: 6
    Dernier message: 21/09/2006, 15h01
  3. [Forms10g/oracle 9i] erreur ORA-01652
    Par marcalexis dans le forum Oracle
    Réponses: 6
    Dernier message: 14/02/2006, 18h30
  4. [Oracle] Erreur ORA-00900 suite à certaines requêtes
    Par osmoze dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/01/2006, 17h43
  5. Erreur ORA-01555 sur un select
    Par LRI dans le forum Oracle
    Réponses: 2
    Dernier message: 13/05/2005, 10h42

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