Implémentation d'une stratégie de maintenance des données

En implémentant une stratégie de maintenance des données efficace lorsqu'un site est publié, vous pouvez éviter des problèmes de base de données tels qu'une dégradation des performances, un dépassement de l'espace de stockage disponible, des temps de sauvegarde et de restauration accrus.

La création d'une stratégie efficace de gestion des données implique les tâches suivantes :
Diagramme montrant la stratégie de maintenance de base de données.

1. Identifier les données à préserver

Surveillez la taille des tables de base de données et leur taux de croissance et collectez les statistiques de croissance de la base de données de production sur une base hebdomadaire ou mensuelle. Il est recommandé de collecter ces informations pendant les fins de semaine afin d'éviter les interruptions du travail accompli pendant la semaine. La méthode que vous utilisez pour suivre la croissance de la base de données dans le temps dépend de votre type de base de données.
Option Description
utilitaire de dbgrowth
  1. Définissez la table de base de données dbgrowth :
    CREATE TABLE dbgrowth (
          rundate        DATE DEFAULT CURRENT DATE NOT NULL,
          tabschema      VARCHAR(128) NOT NULL,
          tabname        VARCHAR(128) NOT NULL,
          card           BIGINT DEFAULT 0 NOT NULL
    ) IN USERSPACE1 INDEX IN USERSPACE1;
    
    ALTER TABLE dbgrowth ADD PRIMARY KEY (rundate,tabschema,tabname);
  2. Créez un travail cron pour remplir la table dbgrowth tous les dimanches. Créez un script appelé dbgrowth.sql contenant les éléments suivants :
    SELECT 'WARNING: The last statistics for table ' || rtrim(tabschema) || '.' || tabname || ' ' || ' were taken on '  
    || char(date(stats_time)) || '. The dbgrowth script requires the stats be up to date.' warning FROM syscat.tables where date(stats_time) < current date;
    
    -- in case it is run twice
    DELETE FROM dbgrowth WHERE rundate = CURRENT DATE;
    
    -- insert
    INSERT INTO dbgrowth ( tabschema, tabname, card ) SELECT tabschema, tabname, card FROM syscat.tables WHERE card >= 0;
  3. Utilisez l'instruction SQL suivante pour répertorier les tables dont la croissance est la plus rapide :
    SELECT CAST( RTRIM(a.tabschema) || '.' || a.tabname AS VARCHAR(40)) tabname, b.card begincard, a.card endcard, DAYS(a.rundate) 
    - DAYS(b.rundate) numdays, a.card - b.card growth, (a.card-b.card)/(DAYS(a.rundate)-DAYS(b.rundate)) dailyavg
      FROM dbgrowth a,
           dbgrowth b
     WHERE a.tabschema  = b.tabschema
       AND b.tabname    = a.tabname
       AND a.tabschema IN ( 'DB2INST1' )
       AND a.rundate    = ( SELECT MAX(rundate) FROM dbgrowth )
       AND b.rundate    = ( SELECT MAX(rundate) FROM dbgrowth WHERE rundate < (SELECT MAX(rundate) FROM dbgrowth ))
       AND a.card - b.card > 1000
     ORDER BY a.card - b.card DESC
     FETCH FIRST 50 ROWS ONLY WITH UR;
    
    To compare with the previous one use:
        AND b.rundate    = ( SELECT MAX(rundate) FROM dbgrowth WHERE rundate < (SELECT MAX(rundate) FROM dbgrowth ))
    
    To compare with a specific date use:
        AND b.rundate    = ( SELECT MAX(rundate) - 7 DAYS FROM dbgrowth )
L'utilitaire dbgrowth sauvegarde le nombre de lignes en cours pour chaque table de base de données se trouvant sur la colonne de carte de la table syscat.tables. Ce nombre est correct uniquement si les statistiques de cette table de base de données sont actualisées.
utilitaire de dbgrowth
  1. Définissez la table de base de données dbgrowth :
    CREATE TABLE dbgrowth (
              rundate        DATE NOT NULL,
              tabschema      VARCHAR2 (30) NOT NULL,
              tabname        VARCHAR2 (50) NOT NULL,
              card           NUMBER DEFAULT 0 NOT NULL
        );
    
        ALTER TABLE dbgrowth ADD PRIMARY KEY (rundate,tabschema,tabname);
  2. Créez un travail cron pour remplir la table dbgrowth tous les dimanches. Créez un script appelé dbgrowth.sql contenant les éléments suivants :
    SELECT 'WARNING: The last statistics for schema ' || rtrim(owner) || ' were taken on '  || to_char(LAST_ANALYZED,'dd-mon-yyyy') 
    || '. The dbgrowth script requires the stats be up to date.' warning 
    FROM dba_tables where round(LAST_ANALYZED) < round(sysdate) and owner = 'WCS' and rownum < 2;
    
    -- in case it is run twice
        DELETE FROM dbgrowth WHERE rundate = round(sysdate);
    
    -- insert
        INSERT INTO dbgrowth ( rundate, tabschema, tabname, card ) SELECT round(sysdate), owner, table_name, nvl(num_rows,0) 
    FROM dba_tables WHERE OWNER = 'WCS';
    WCS est le nom de schéma du référentiel HCL Commerce.
  3. Utilisez l'instruction SQL suivante pour répertorier les tables dont la croissance est la plus rapide :
    SELECT RTRIM(a.tabschema) || '.' || a.tabname tabname, b.card begincard, a.card endcard, a.rundate 
    - b.rundate numdays, a.card - b.card growth, (a.card-b.card)/(a.rundate-b.rundate) dailyavg
          FROM dbgrowth a,
               dbgrowth b
         WHERE a.tabschema  = b.tabschema
           AND b.tabname    = a.tabname
           AND a.tabschema IN ( 'WCS' )
           AND a.rundate    = ( SELECT MAX(rundate) FROM dbgrowth )
           AND b.rundate    = ( SELECT MAX(rundate) FROM dbgrowth WHERE rundate < (SELECT MAX(rundate) FROM dbgrowth ))
           AND a.card - b.card > 1000
           AND ROWNUM < 50
         ORDER BY a.card - b.card DESC;
    
    To compare with the previous one use:
            AND b.rundate    = ( SELECT MAX(rundate) FROM dbgrowth WHERE rundate < (SELECT MAX(rundate) FROM dbgrowth ))
    
    To compare with a specific date use:
            AND b.rundate    = ( SELECT MAX(rundate) - 7 DAYS FROM dbgrowth )
L'utilitaire dbgrowth sauvegarde le nombre de lignes en cours pour chaque table de base de données se trouvant sur la colonne de carte de la table dba_tables. Ce nombre est correct uniquement si les statistiques de cette table de base de données sont actualisées.
Oracle Flashback Technology Oracle Flashback Technology est un groupe de fonctions de base de données Oracle que vous pouvez utiliser pour afficher les états précédents des objets de base de données. Vous pouvez également restaurer des objets de base de données à un état antérieur sans utiliser la récupération de support à un instant T.

Utilisez Oracle Flashback Technology pour tracer les données de table d'historique. Pour plus d'informations sur l'utilisation d'Oracle Flashback Technology, voir Oracle Documentation. Recherchez Oracle Flashback Technology.

tips :
  • A l'aide des statistiques de croissance, identifiez les données que vous pouvez supprimer des tables à croissance rapide ou déplacer dans une autre base de données. Les tables de base de données suivantes sont généralement celles dont la croissance est la plus rapide :
    • ORDERS, qui comprend des commandes terminées, en attente et annulées
    • MEMBER, qui comprend des utilisateurs invités et enregistrés
    • ADRESSE, qui comprend des adresses permanentes et temporaires
    • CACHEIVL
    • STAGLOG
  • Si vous supprimez fréquemment des dossiers dans un environnement de production, exécutez dbclean régulièrement sur la table FOLDER.
  • Examinez la liste des scénarios de suppression par défaut des combinaisons particulières d'objet et de type pour déterminer les tables de base de données et les lignes à supprimer pour un objet et un type d'objet particuliers. Pour plus d'informations, voir Objets de l'utilitaire de nettoyage de la base de données.

2. Définir des stratégies

Une définition de stratégie décrit la durée de conservation des informations dans la base de données avant leur déplacement vers un système d'aide à la décision ou leur effacement. Les stratégies qui reflètent vos pratiques commerciales en cours aident à préserver une base de données cohérente. Par exemple, les politiques échantillons qui suivent définissent combien de temps conserver les informations de commande et d'utilisateur invité :
  • Durée de conservation des commandes terminées dans la base de données.
  • Nombre de jours avant la suppression du compte d'un invité n'ayant passé aucune commande.
  • Durée de conservation des commandes en attente pour les invités et les utilisateurs enregistrés.

3. Appliquer les stratégies à l'aide du scriptage

L'utilitaire de nettoyage de base de données HCL Commerce est destiné à vous aider à nettoyer la base de données. Cet utilitaire contient une liste prédéfinie d'instructions de suppression permettant d'effacer les objets HCL Commerce courants, tels que les utilisateurs, les commandes et les données de catalogue. Personnalisez les instructions par défaut disponibles pour être utilisées avec le script pour les adapter à vos besoins. Ce script personnalisé supprime les enregistrements marqués pour suppression ainsi que les informations définies comme périmées dans les stratégies de maintenance de la base de données. Pour plus d'informations, voir Utilitaire de nettoyage de la base de données.

Test

Utilisez les tests fonctionnels et non fonctionnels pour vérifier votre stratégie de maintenance des données.
Le tableau suivant répertorie et décrit les options de test.
Type de test Description
Fonctionnel Utilisez le test fonctionnel pour vérifier que les suppressions effectuées par dbclean sont correctes :
  1. Une fois le test terminé, vérifiez attentivement les suppressions en cascade sur les relations de clé externe car la suppression d'une ligne dans une table de base de données peut avoir une incidence sur les enregistrements d'autres tables. Par exemple, la suppression d'une ligne dans la table de base de données OFFER peut affecter les enregistrements connexes dans la table de base de données ORDERITEMS.
  2. Après avoir exécuté le script de l'utilitaire dbclean, demandez aux utilisateurs professionnels de valider l'état de la base de données pour s'assurer qu'aucune donnée n'a été supprimée par erreur.
Non fonctionnel Utilisez le test non fonctionnel pour déterminer les ressources système requises pour prendre en charge l'utilitaire dbclean. Pour effectuer ce type de test, vous devez disposer d'un environnement de performances et pouvoir simuler une charge.
L'exécution de l'utilitaire dbclean peut ajouter les types de contrainte suivants au système :
  • Utilisation de l'unité centrale supérieure à la normale sur le serveur de base de données.
  • Réduction du temps de réponse global du site.
  • Un conflit de verrous, par exemple un interblocage, une expiration du délai ou une attente de verrou.