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 :

Question sur le redo log


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 55
    Points : 31
    Points
    31
    Par défaut Question sur le redo log
    Voila ma question.
    Supposons une base avec 3 groupes de fichiers redo log (1 membre par grp pour faire simple).
    Je commence une transaction longue (des INSERT/UPDATE/DELETE mais pas de COMMIT)
    Le premier fichier redo_log se remplit, Oracle switch, le 2 se remplit aussi, Oracle switch pour le troisième.
    Comme il n’y a pas eu de COMMIT, DBWn n’écrit rien dans les fichiers des données, tout reste dans les fichiers de REDOLOG.
    Que-est ce qui se passe si le troisième se remplit aussi etant donnée que la transaction n'est pas finie (pas de COMMIT) ?

    Merci pour vos réponses.

  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 : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est pas dans les redos mais dans le undo tant qu'il n'y a pas de commit

    Sinon : http://mbouayoun.developpez.com/archredo/ et http://mbouayoun.developpez.com/fichredo/

  3. #3
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si si, dbwr écrit les blocs, que les changements soient commités ou non. Si ce n'était pas le cas, le commit serait très très long !

    dbwr les écrit au fur et à mesure en aprticulier pour libérer de la place en buffer cache.

    A chaque log switch, un checkpoint est lancé, ce qui force à écrire sur disque les blocs modifiés (et là encore, que les changements soient commités ou non), sans attendre que ce soit terminé.

    Par contre, quand le troisième est rempli, avant d'écraser le premier, lgwr s'assure que tous les blocs qui sont protégés par ce premier fichier de log soient écrits sur disque. C'est à dire, il faut que le premier checkpoint soit terminé.
    Sinon, il attend, on voit passer 'checkpoint not complete' dans l'alert.log, et la session va attendre sur 'log file sync'. C'est un problème de performance si ça arrive trop souvent.

    Donc, avec ça, les redo log sont toujours suffisants pour récupérer les modifications faites en mémoire (buffer cache) en cas de crash de l'instance.
    -> soit les modifs on été écrites dans les datafiles, et là plus besoin de redo
    -> soit elles sont seulement en mémoire, et il y a toujours le redo nécessaire pour les refaires

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 55
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos reponses.

    Je ne suis pas d'accord avec toi orafrance (sauf votre respect vu ton profil).
    Je m'explique, si j'ai bien compris le contenu des fichiers redo n'est pas lie au COMMIT (bien qu'il le contient).
    ORACLE écrit bien dans les redo files quand on a 1/3 dur redol log buffer plein ou s'il y a plus d'1M des données, etc. , même sans COMMIT
    Le undo c'est pour revenir en arrière malgré un COMMIT. Le redo c'est pour une récupération suite à un possible plantage. (Je me trompe ?).

    En ce qui concerne la réponse de pachot.
    Elle est très claire mais d’après ma compréhension les data files contient que des données valides donc qui on eu un COMMIT.
    En supposant que le 3eme redolog est plein et que le premier redolog est écrasé (tjr pas COMMIT) et que des données non comites sont dans les data file. S'il y a un plantage SMOn n'a plus de moyen de revenir en arrière (SMON lit que le redo log) et les datafiles ne retient pas l'historique des modifications.

    Cdt,

  5. #5
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    J'insiste: les datafiles contiennent des données non commitées.

    S'il y a plantage, les redo sont lus pour arriver au même état que avant le plantage: il récupère tous les datafiles (incluant les undo).
    Et ensuite, smon va rollbacker les transactions qui étaient en cours, en utilisant les undo.

    Un recovery, c'est deux étapes:
    -> rollforward pour rejour les modifications depuis le checkpoint
    -> rollback des transactions qui n'étaient pas commitées

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 162
    Points : 181
    Points
    181
    Par défaut
    Bonjour,

    Il se trouve qu'orafrance a également raison
    LGWR journalise les modifications de blocs dans les redologs, et comme l'explique bien pachot, une entrée du redolog n'est pas écrasée tant que le bloc n'est pas physiquement écrit sur disque. Or, tant que la transaction n'est pas commitée, l'image avant est stockée dans les blocs undo, qui sont également écrits sur disque par le DBWR ; l'entrée correspondante dans le redolog peut donc être écrasée.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 55
    Points : 31
    Points
    31
    Par défaut
    Avec le rajout de Mathias ca devient plus claire.

    Pour lier au cas réel.
    On une base qui analyse des packages fichiers et fait des statistiques.

    Il y a environ 50 analyses par jour (~10 000 fichiers analysés par jour).
    L'analyse et le remplissage de la base sont automatiques (des scripts java).

    Malgre cette activité statspack reporte maximum 0.4 transactions par secondes.
    Statspack est lance en job avec 1 snapshot par heure.
    Et pendant les periodes d'analyse on switch de log file 1 fois par minute (1 log file a 50M)

    Je trouve assez peux ce qui doit s'expliquer par tres peux de commit.
    Je n'ai pas access a l'applicatif Java.


    merci pour vos réponses.

Discussions similaires

  1. Questions sur java.util.logging
    Par samsam786 dans le forum Logging
    Réponses: 2
    Dernier message: 02/04/2010, 09h50
  2. question sur undo/redo
    Par thibal_kamehouse dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 11/03/2008, 09h52
  3. Question sur mes logs
    Par Fireslinger dans le forum Administration système
    Réponses: 4
    Dernier message: 26/02/2007, 20h38
  4. Réponses: 9
    Dernier message: 16/05/2006, 15h02
  5. Question sur les logs
    Par Madmac dans le forum Administration système
    Réponses: 5
    Dernier message: 06/03/2006, 21h47

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