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 :

CHECKDB sur + de 15000 bases [2008R2]


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 88
    Points
    88
    Par défaut CHECKDB sur + de 15000 bases
    Bonjour,

    j'ai une plateforme Cluster SQL 2008 R2 sur laquelle j'ai une instance ayant + de 15000 bases.

    Je souhaite effectuer un checkDB de toutes les bases si possible en moins d'une journée , ça va être dur mais si vous avez des idées je suis preneur.

    J'ai mis en place un script (sans cursor), mais il tourne pendant plus d'une journée.

    Version du SQL : 10.50.4266.0 SP2 Edition Enterprise 64-bit

    Pouvez-vous m'aider svp ?

    ci-dessous le script que j'utilise :

    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
     
    SET NOCOUNT ON
    GO
     
    DECLARE @db TABLE
    (
        database_name sysname
    )
     
    DECLARE @database_name sysname
        , @sql nvarchar(128)
     
    INSERT    INTO @db (database_name)
    SELECT    name
    FROM    sys.DATABASES
    WHERE    name NOT IN ('master','msdb','model','tempdb', 'ReportServer', 'ReportServerTempDB', 'distribution')
    AND    source_database_id IS NULL -- la BD n'est pas un snapshot
    AND    state_desc = 'ONLINE'
     
    WHILE EXISTS
    (
        SELECT    *
        FROM    @db
    )
    BEGIN
        SELECT    TOP (1) @database_name = database_name
        FROM    @db
     
        SET    @sql = N'DBCC CHECKDB (' + @database_name + ')'
        PRINT    '------------------------' + @database_name + '------------------------'
        EXEC    (@sql)
     
        DELETE    FROM @db
        WHERE    database_name = @database_name
    END
    Errare Humanum Est ...

  2. #2
    Membre actif
    Homme Profil pro
    Administrateur de base de données MCITP Database Administrator 2008
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur de base de données MCITP Database Administrator 2008
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 201
    Points
    201
    Par défaut
    Bonjour,
    essaye de placer la base tempdb sur un axe physique dédié

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 88
    Points
    88
    Par défaut
    Je vais regarder de ce côté là.

    Errare Humanum Est ...

  4. #4
    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,

    Je pense qu'il existe plusieurs stratégies pour cela. Par exemple :

    1- Tu peux essayer de répartir des DBCC CHECKDB sur plusieurs jours
    2- Tu peux essayer de paralléliser les DBCC CHECKDB par lots de bases de données mais en faisant attention à la consommation de ressources.
    3- Si tu es en édition Enterprise tu peux éventuellement déporter les DBCC CHECKDB sur des snapshots de bases de données pour déporter les ressources IO sur d'autres axes physiques
    4- Tu peux également te servir de tes backups et les restaurer sur un autre serveur et effectuer un DBCC CHECKDB

    etc ...

    Il faut faire les choix en fonction de ton infrastructure, ta fenêtre de maintenance etc ...

    ++

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    En pratique il est hautement farfelu (si je me lâchait je dirais stupide !!!) d'avoir QUINZE MILLE base de données sur un même serveur !
    Vous rendez-vous compte que cela représente au moins 30 000 descripteurs de fichiers ouverts simultanément ?
    A mon avis toutes votre RAM passe dans cette occupation au détriment des données...

    Qu'est ce qui a bien pu vous passer pour faire une chose aussi horrible ?

    En pratique il n'est pas recommandé d'aller au delà de la centaine de base.

    Avez vous entendu parlé de la notion de Schéma SQL ? De Fichier et de groupes de fichier ???

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 88
    Points
    88
    Par défaut
    Merci mikedavem, je réfléchirai à ces solutions.

    Bonjour SQLPro,

    Tout d'abord j'interviens chez un client, je n'ai pas défini l'architecture ou quoi que ce soit d'autre.

    C'est une problématique que l'on m'a imposé et que je dois résoudre au mieux ...

    C'est pour cela que je demande votre aide ...

    A +
    Errare Humanum Est ...

  7. #7
    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
    A tout hasard y'a-t-il des mécanimses de haute disponibilité sur cette instance ?

    Vu le nombre de bases (je suppose que tu es dans un contexte de serveur consolidé) cela peut être problématique lors des mises à jour de service pack, hotfix côté windows et SQL Server.

    Est-ce que toutes les bases sont réellement utilisées sur ce serveur ? ceci relève plus de la curiosité pour ma part

    ++

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 88
    Points
    88
    Par défaut
    En fait, nous avons une application qui est installée sur sur une plate forme CITRIX et celle-ci est publiée aux utilisateurs de différentes régions sur un portail web.

    L'application pointe sur l'instance SQL (en HA) et toutes les bases doivent être disponibles.

    Effectivement, pour les mises à jour ou hotfix nous devons interrompre le service la plupart du temps le week end .

    Toutes les bases sont vraiment utilisées.

    ++
    Errare Humanum Est ...

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 88
    Points
    88
    Par défaut
    J'ai testé cette la méthode numéro 3 cumulée à la 2 et ça tourne perfect !!!

    Citation Envoyé par mikedavem Voir le message
    3- Si tu es en édition Enterprise tu peux éventuellement déporter les DBCC CHECKDB sur des snapshots de bases de données pour déporter les ressources IO sur d'autres axes physiques
    Merci pour votre aide.

    ++
    Errare Humanum Est ...

  10. #10
    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
    Par curiosité quelle est le gain de temps que tu as pu obtenir avec cette "nouvelle" méthode ?

    ++

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Aujourd'hui avec cette méthode, je traite 4000 bases en moins de 50 min.

    Donc les 15000 bases peuvent être traitées en moins d'une journée. Mais j'ai choisi, pour éviter au maximum les problèmes de performance, de checker les bases en plusieurs plages.

    Merci encore pour votre aide !
    Errare Humanum Est ...

  12. #12
    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
    Super ! Merci du feedback

    ++

  13. #13
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    4000 bases en moins de 50 minutes
    Vos bases sont-elles de taille équivalente?

    Si non traiter 4000 bases si elles sont petites (comparativement à d'autres j'entends) en 50 mn ne veux pas dire grand chose?

    Par curiosité (moi aussi ) de combien de RAM dispose votre server?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  14. #14
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Citation Envoyé par Blacknounou Voir le message
    Tout d'abord j'interviens chez un client, je n'ai pas défini l'architecture ou quoi que ce soit d'autre.

    C'est une problématique que l'on m'a imposé et que je dois résoudre au mieux ...
    Bonjour,

    Il n'empêche qu'il est de votre devoir de bien vous assurer que le client a compris les gros risques qu'il prend avec une telle architecture...

    Personnellement, en tant que DBA, je refuserai de prendre la responsabilité d'une telle plateforme aberration... Mais bon, les DBA sont toujours grincheux (cf http://www.sqlskills.com/insidercont...newsletter.pdf)

    Cordialement,

    Arkhena
    A bove ante, ab asino retro, a stulto undique caveto

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2005, 08h31
  2. [XML/XSL] Est ce que je pars sur une bonne base ?
    Par dinbougre dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/12/2004, 23h31
  3. [debutant] select-insert sur tables de bases differentes
    Par RedMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/10/2004, 18h59
  4. [FileMaker 6] Questions urgente sur type de base de donnee
    Par LAPLACE dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 06/09/2004, 17h39
  5. Réponses: 7
    Dernier message: 08/03/2004, 15h30

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