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 :

Erreur ORA-01555 sur un select [FAQ]


Sujet :

Oracle

  1. #1
    LRI
    LRI est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Erreur ORA-01555 sur un select
    Bonjour,

    J'ai des erreurs ORA-01555 sur des SELECT.

    Exemple :

    Mon May 9 16:14:41 2005
    ORA-01555 caused by SQL statement below (Query Duration=3716 sec, SCN: 0x0000.0d57c0e6):
    Mon May 9 16:14:41 2005
    SELECT T1.NUDOSS FROM HR.ZX8K T1 WHERE T1.CODRUB = 'IEI' GROUP BY T1.NUDOSS
    On est en 'Automatic Undo Management' :

    SQL> show parameter undo

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management string AUTO
    undo_retention integer 900
    undo_suppress_errors boolean FALSE
    undo_tablespace string UNDOTBS
    La table comporte plus de 20 millions d'enregistrements et est pas mal fragmentée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select segment_name, segment_type, extents, round(bytes/1024/1024) from dba_segments
    where segment_name like '%ZX8K%'
    SEGMENT_NAME SEGMENT_TYPE EXTENTS ROUND(BYTES/1024/1024)
    --------------- --------------- ---------- ----------------------
    ZX8K TABLE 793 38756
    HRX1ZX8K INDEX 126 440
    X2ZX8K INDEX 203 1280
    Aucune mise à jour de données sur cette table n'est effectuée durant le SELECT car les nouvelles données ne sont chargées qu'une fois par mois.

    Je ne comprend pas pourquoi l'espace UNDO est utilisé lors du SELECT alors qu'aucune mise à jour n'est effectuée.

  2. #2
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Cela n'a rien de curieux de prendre un Snapshot too old sur un select !

    N'oubliez pas qu'Oracle vous garantit une vision "cohérente" de vos données, même si dans le même temps elles sont modifiées par d'autres sessions.

    ORA-01555 snapshot too old: rollback segment number string with name "string" too small

    Cause: Rollback records needed by a reader for consistent read are overwritten by other writers.

    Action: If in Automatic Undo Management mode, increase the setting of UNDO_RETENTION. Otherwise, use larger rollback segments.

    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    LRI
    LRI est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci, je savais effectivement qu'Oracle garantissait des lectures cohérentes (read-consistency) en utilisant UNDO. Mais comme il n'y a pas de mises à jour sur la table en question, même par d'autres sessions, je pensais qu'il n'y avait pas de problème.
    En fait, je m'aperçois qu'on peut perdre le 'read-consistency' à cause de mises à jour effectuées par d'autres sessions sur d'autres tables, la table lue n'a pas d'importance pour Oracle.
    Si je me souviens, on pouvait faire du 'dirty read' (lectures sales) avec Informix au niveau d'une session, apparemment ce n'est pas possible sur Oracle.

Discussions similaires

  1. ORA-01555 sur un select de 39 sec?
    Par pholos dans le forum Oracle
    Réponses: 5
    Dernier message: 20/11/2007, 14h20
  2. [10g] erreur ORA-01652 suite à INSERT-SELECT
    Par TG37140 dans le forum Administration
    Réponses: 5
    Dernier message: 18/12/2006, 19h45
  3. Erreur ORA-12560 sur un Export
    Par genio dans le forum Oracle
    Réponses: 6
    Dernier message: 16/01/2006, 17h21
  4. Erreur ORA-04082 sur un trigger
    Par elcaro92 dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2005, 21h30
  5. Erreur ORA-01036 sur un XMLGRAM
    Par sch dans le forum XMLRAD
    Réponses: 5
    Dernier message: 07/09/2004, 14h56

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