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 :

[PLSQ] ORA-01691


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut [Résolu][PLSQ] ORA-01691
    bonjour,
    je trevaille sur des blobs et jai un message derreur qu iest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01691: unable to extend lob segment PROLAB.SYS_LOB0000034134C00007$$ by 128 in tablespace SESAMETAB
    je trouve pas le probleme!
    vous savez a quoi coorrespond ce message?

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Et la doc Oracle, elle dit quoi, mmmh ???

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par Pomalaix
    Et la doc Oracle, elle dit quoi, mmmh ???
    Ben, chez moi elle dit exactement ce qu'il faut faire

    Ok, c'est un peu lourd, mais ce que veut dire Pomalaix, c'est qu'avant de poster une question il est naturel que tu cherches de ton côté, quand ORACLE te renvoie une erreur avec un code erreur bien précis, un coup d'oeil de 20 secondes dans la doc et tu as la réponse (donc moins de temps que pour poster ta question )

  4. #4
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    oui message recu ca je lavais fait!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Cause: Failed to allocate an extent for LOB segment in tablespace.
     
    Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the tablespace indicated.
    Le probleme est que je ne veux pas ajouter de datafile, jaimerais en fait liberer de la place, puisque il sagit seulement de records qui permettent de faire de tests, doncca ne pose pas de problemes de les supprimer!
    Je supprime doncles records ou il t a des blobs, mais je ne libere pas lespace!!
    Par contre si je recree completement les tables qui minteressent, cad un DROP des tables (apres avoir fait un export des datas qui mintereseent), eh bien pour les tests qui suivent je nai plus ce message!

    ca signifierait qun delete des recors ne libere pas lespace alors que un drop des tables libere cet espace!
    Pourtant jai lu qq part que il fallait faire un truncate des tables pour liberer lespace!!!
    Je suis plus!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    oui Truncate libère les extents (et donc les espaces alloués) contrairement au delete qui ne fait de toper les extents comme réinscriptible

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    euh ca serait pas plutot l'inverse Orafrance, car c'est l'avantage du truncate, il ne perds pas de temps à vider l'espace disque

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    ha non, l'avantage du truncate c'est surtout qu'il n'écrit pas dans le RBS et donc va bcp plus vite que le delete

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    Citation Envoyé par orafrance
    oui Truncate libère les extents (et donc les espaces alloués) contrairement au delete qui ne fait de toper les extents comme réinscriptible
    oui je suis d'accord avec ce que tu dis mais je parlais de ce poste la.

    Truncate ne libére pas les extents il prend juste le High water mark et le remet au début des extents de la table.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    create  table t_r (x varchar2(2000)) tablespace DATA_DEMANDE
    storage
    (initial 1m
    next 1m
    pctincrease 0
    )
     
    SQL> exec show_space('T_R');
    Free Blocks.............................0
    Total Blocks............................64
    Total Bytes.............................1048576
    Unused Blocks...........................63
    Unused Bytes............................1032192
    Last Used Ext FileId....................14
    Last Used Ext BlockId...................44621
    Last Used Block.........................1
     
    SQL> begin
      2  for k in 1..9999
      3  loop 
      4  insert into t_r values (rpad('*',100,'*'));
      5  end loop;
      6  commit;
      7  end;
      8  /
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> exec show_space('T_R');
    Free Blocks.............................3
    Total Blocks............................76
    Total Bytes.............................1245184
    Unused Blocks...........................0
    Unused Bytes............................0
    Last Used Ext FileId....................14
    Last Used Ext BlockId...................44693
    Last Used Block.........................4
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> truncate table t_r;
     
    Table tronquée.
     
    SQL> exec show_space('T_R');
    Free Blocks.............................0
    Total Blocks............................64
    Total Bytes.............................1048576
    Unused Blocks...........................63
    Unused Bytes............................1032192
    Last Used Ext FileId....................14
    Last Used Ext BlockId...................44621
    Last Used Block.........................1
     
    Procédure PL/SQL terminée avec succès.
    Le nombre de blocs est bien repassé de 76 à 64 donc les extents ont bien été désalloué, bien sûr la HWM a aussi été réduite

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Pour être tout à fait complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    39
    40
    41
    42
    SQL> begin
      2  for k in 1..9999
      3  loop 
      4  insert into t_r values (rpad('*',100,'*'));
      5  end loop;
      6  commit;
      7  end;
      8  /
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> exec show_space('T_R');
    Free Blocks.............................3
    Total Blocks............................76
    Total Bytes.............................1245184
    Unused Blocks...........................0
    Unused Bytes............................0
    Last Used Ext FileId....................14
    Last Used Ext BlockId...................44693
    Last Used Block.........................4
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> delete from t_r;
     
    9999 ligne(s) supprimée(s).
     
    SQL> commit;
     
    Validation effectuée.
     
    SQL> exec show_space('T_R');
    Free Blocks.............................75
    Total Blocks............................76
    Total Bytes.............................1245184
    Unused Blocks...........................0
    Unused Bytes............................0
    Last Used Ext FileId....................14
    Last Used Ext BlockId...................44693
    Last Used Block.........................4
     
    Procédure PL/SQL terminée avec succès.
    le nombre de blocs libre est bien passé à 75 mais le nombre de blocs alloués n'a pas changé ni la HWM (cf Last Used Block)

  11. #11
    Membre émérite
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Par défaut
    effectivement le truncate libère les extents jusqu'au MINEXTENT de la table (spécifié à sa création)

    néanmoins une petite précision sur l'effet d'un DELETE : l'espace est également désalloué (mais au niveau block , pas de release des extents) --> disponible pour de nouveau insert MAIS uniquement pour cette table en question

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est ça, les extents sont libérés (réutilisable) mais pas désalloués

  13. #13
    Membre émérite
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Par défaut
    c'est ça

  14. #14
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    POur resumer vos differentes interventions

    un DELETE va liberer de la place pour la table concernee par le DELETE! il n'ya donc pas deallocation des extends qui appartiennent toujours a cette table.
    un TRUNCATE va liberer de la place pour toute les tables. Il ya donc desallocation des extents (tant que nous restons dans les lmites definies par MINEXTENT)
    et le DROP?

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    TRUNCATE libére de la place sur le disque... ça semble plus correct que de dire pour toutes les tables

    Le drop c'est pareil que le truncate sauf qu'en plus ça détruit l'objet

  16. #16
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    ok lecon retenue!
    Par contre si je veux liberer de la place sur le disque sans supprimer ma table, ce que fais TRUNCATE, je suis donc obliige de faire une copie de ma table ailleurs avec tout ce que ca entraine au niveau des contraintes!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    rien n'empêche de déplacer la table dans un tablespace situé sur un autre disque, il n'y a alors aucun impact

  18. #18
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    Citation Envoyé par orafrance
    Le drop c'est pareil que le truncate sauf qu'en plus ça détruit l'objet
    euh quelle difference fait on entre detruire l'objet (DROP) et le TRUNCATE(lui ne detruit pas l'objet? Il libere de la place sur le disque mais pour cela il doit detruire l'objet!!)!

    Citation Envoyé par orafrance
    rien n'empêche de déplacer la table dans un tablespace situé sur un autre disque, il n'y a alors aucun impact
    Dans ce cas je suprime les records inutile sur le TABLESPACE A, je copie ensuite la table dans le TABLESPACE B, et dans ce tablespace, moins d'extends seront alloues a ma table puisque elle a moins de records!
    ok ok merci

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Oui le truncate vide la table EN LIBERANT l'espace disque (contrairement au DELETE).

    c'est ça, ça s'appelle la réorganisation de base. On déplace les tables et indexes pour réallouer les extents et défragmenter les tablespace. C'est à faire de temps en temps

  20. #20
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    ok merci!
    C'est du boulot de dba apperement mais toujours interessant de savoir comment ca marche!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/05/2009, 13h30
  2. erreur ora-12801 : error signaled in parallel query server
    Par dngaya dans le forum Administration
    Réponses: 5
    Dernier message: 15/04/2004, 16h25
  3. erreur "ORA-22905" lors de l'execution d'un requet
    Par benji999 dans le forum Administration
    Réponses: 26
    Dernier message: 14/04/2004, 11h47
  4. Réponses: 14
    Dernier message: 02/04/2004, 14h33
  5. Oracle ORA-00020 : maximum de processus
    Par Lisou dans le forum Administration
    Réponses: 5
    Dernier message: 22/03/2004, 16h27

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