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 SQL Server Discussion :

[SQL 2K] Fichier de LOG gros même aprés sauvegarde


Sujet :

Administration SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 48
    Points
    48
    Par défaut [SQL 2K] Fichier de LOG gros même aprés sauvegarde
    Bonjour,

    Je travaille sur une instance SQL SERVER 2000, avec une base de production dont la taille du fichier de LOG est d'environ 20Go. J'effectue des sauvegardes du journal de transaction toutes les 30 minutes afin que le fichier de LOG ne grossisse démesurément (durée de sauvegarde environ 1min). Néanmoins il reste toujours 2Go d'espace utilisé pour le journal de transaction de cette base. Je ne comprends pas pourquoi il me reste toujours ces 2 Go de données dans le journal de transaction. Pourriez-vous m'aider ?

    D'avance merci pour vos réponses.
    Cdlt

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Les opérations de sauvegarde du journal des transactions ne peuvent pas vider la part active de celui-ci (c'est à dire pour laquelle le 1er LSN concerne une transaction qui n'a pas été encore validée). Il suffit d'avoir une transaction qui n'est pas encore validée pour que la sauvegarde ne puisse pas vider "complétement" votre journal à ce moment.

    ++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 888
    Points : 53 121
    Points
    53 121
    Billets dans le blog
    6
    Par défaut
    La seule chose qui permet de "vider" le journal de transaction, c'est de faire une sauvegarde du journal de transaction avec le commande :
    Ou bien de passer la base de données en mode de récupération SIMPLE avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE ... SET RECOVERY SIMPLE.
    A +

  4. #4
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Merci pour vos réponses.

    Je vais donc prévoir une sauvegarde du journal de transaction la nuit en période creuse lorsqu'aucun traitement n'est réalisé sur la base et par conséquent normalement toutes les transactions seront validées.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    J'ai planifié une sauvegarde du journal de transaction cette nuit, immédiatement après la sauvegarde complète de la base de données, mais mon fichier LOG même une fois sauvegardé est toujours aussi volumineux (il reste encore 2Go de données dedans). Il n'y a pas eu de traitement entre ces 2 sauvegardes donc aucune transaction n'est resté ouverte.

    Se pourrait-il qu'il reste une transaction non validée datant de plusieurs jours (ce phénomène n'est pas récent) ?

    A+

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Il n'y a pas eu de traitement entre ces 2 sauvegardes donc aucune transaction n'est resté ouverte.
    Impossible d'en être certain sans avoir utilisé DBCC OPENTRAN.

    Se pourrait-il qu'il reste une transaction non validée datant de plusieurs jours (ce phénomène n'est pas récent) ?
    C'est effectivement possible

    @++

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 888
    Points : 53 121
    Points
    53 121
    Billets dans le blog
    6
    Par défaut
    1) pour regarder si une transaction dure depuis longtemps :
    2) il est possible que cette taille de 2 Go soit celle affectée au départ au fichier du JT, ce qui ne permettra jamais de réduire plus bas la teille du JT.
    Pour vous en assurer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT size
    FROM sysfiles
    WHERE status & 0x40 = 0x40
    A +

  8. #8
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Merci pour votre réponse.

    Effectivement je n'ai pas fait de DBCC OPENTRAN pour vérifier !!! Je viens de le faire à l'instant et la commande DBCC OPENTRAN ne me montre aucune transaction ouverte sur ma base !!! Dans ce cas la sauvegarde du journal de transaction devrait vider le journal non ?

    A+

  9. #9
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Bonjour SQLPro,

    Désolé je n'ai pas vu votre commentaire avant de posté ma dernière réponse.

    1) pour regarder si une transaction dure depuis longtemps :
    Code :

    DBCC OPENTRAN
    Cette opération ne me retourne qu'aucune transaction active n'est ouverte.

    2) il est possible que cette taille de 2 Go soit celle affectée au départ au fichier du JT, ce qui ne permettra jamais de réduire plus bas la teille du JT.
    Pour vous en assurer :
    Code :

    SELECT size
    FROM sysfiles
    WHERE STATUS & 0x40 = 0x40
    En exécutant cette commande, SQL SERVER me retourne 2573712 * 8 Ko / (1024 * 1000) = 20107Mo qui est la taille réservé pour mon journal de transaction.

    Cdlt

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 888
    Points : 53 121
    Points
    53 121
    Billets dans le blog
    6
    Par défaut
    Votre journal a donc été créé avec une taille de 2 Go et donc ne peut être réduit en dessous de cette taille.

    Entre nous, il est préférable de ne jamais faire une JT trop petit car sinon c'est l'accordéon. Notez ce que je dis ici à ce sujet :
    http://www.developpez.net/forums/new...te=1&p=4799535
    § Pire ! C'est possible...

    A +

  11. #11
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Merci de votre réponse.

    Mais je crois que vous n'avez pas compris ma problématique. Je n'effectue aucun Shrink de mon fichier de LOG pour réduire sa taille. Je réalise des sauvegardes des journaux de transaction pour éviter que celui-ci ne grossisse trop (notamment après une ré-indexation) suite à la lecture de différents posts sur ce forum (dont certains sont de vous ).

    Par conséquent mon fichier de LOG fait environ 20Go (c'est ce que j'ai obtenu en lançant votre requête, et pas 2Go ) ce qui est très largement suffisant pour absorber la charge de travail de la base. Mais il n'est rempli qu'à 10%. J'obtiens cette valeur avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC sqlperf('logspace')
    Mon problème est qu'après sauvegarde de mon journal de transaction, je ne descend jamais en dessous de ces 10% de remplissage !!!!

    Cordialement

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 888
    Points : 53 121
    Points
    53 121
    Billets dans le blog
    6
    Par défaut
    Dans ce cas, tentez la manœuvre suivante :

    1) ajoutez une fichier de journal à la base avec la nouvelle dimension :
    ALTER DATABASE ???
    ADD LOG FILE --> avec une dimension de 2 Go

    2) détachez la base avec :
    EXEC sp_detach_db

    3) rattachez là avec :
    CREATE DATABASE database_name
    FOR ATTACH_REBUILD_LOG

    4) peut être pourrez vous supprimer l'ancien fichier du JT

    A +

Discussions similaires

  1. Lire de gros fichiers de logs
    Par johnnyjohnny dans le forum Général Python
    Réponses: 15
    Dernier message: 18/06/2008, 10h38
  2. SQL Server2000 + Fichier LOG
    Par Imad_ing dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2007, 12h38
  3. Gros fichier de logs et performance
    Par usf70 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2007, 12h46
  4. Réponses: 6
    Dernier message: 19/11/2006, 00h41
  5. Réponses: 2
    Dernier message: 27/12/2005, 13h52

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