Implementación de una estrategia de mantenimiento de datos

Si se implementa una estrategia de mantenimiento de datos eficaz cuando se lanza un sitio, puede evitar problemas de base de datos tales como una degración del rendimiento, exceder el almacenamiento disponible y un incremento en los tiempos de copia de seguridad y restauración.

La creación de una estrategia de mantenimiento de datos eficaz implica las tareas siguientes:
Diagrama que muestra la estrategia de mantenimiento de la base de datos.

1. Identificar los datos que va a mantener

Supervise el tamaño de tabla de base de datos y la tasa de crecimiento y recopile estadísticas de crecimiento de la base de datos de producción en semanalmente o mensualmente. Se recomienda recopilar esta información durante el fin de semana para impedir que se produzcan interrupciones en el trabajo completado durante la semana. El método que se utiliza para hacer un seguimiento del crecimiento de la base de datos a lo largo del tiempo depende del tipo de base de datos.
Opción Descripción
dbgrowth programa de utilidad de
  1. Configure la tabla de base de datos 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. Cree un trabajo cron para llenar la tabla dbgrowth cada domingo. Cree un script denominado dbgrowth.sql con el contenido siguiente:
    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. Utilice el siguiente SQL para listar las tablas con el crecimiento más rápido:
    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 )
El programa de utilidad dbgrowth guarda el recuento de filas actual para cada tabla de base de datos que se ha encontrado en la columna card de la tabla syscat.tables. Este número es correcto sólo si las estadísticas de esta tabla de base de datos son actuales.
dbgrowth programa de utilidad de
  1. Configure la tabla de base de datos 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. Cree un trabajo cron para llenar la tabla dbgrowth cada domingo. Cree un script denominado dbgrowth.sql con el contenido siguiente:
    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';
    donde WCS es el nombre de esquema del depósito de HCL Commerce.
  3. Utilice el siguiente SQL para listar las tablas con el crecimiento más rápido:
    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 )
El programa de utilidad dbgrowth guarda el recuento de filas actual para cada tabla de base de datos que se ha encontrado en la columna card de la tabla dba_tables. Este número es correcto sólo si las estadísticas de esta tabla de base de datos son actuales.
Oracle Flashback Technology Oracle Flashback Technology es un grupo de características de la base de datos de Oracle que puede utilizar para ver los estados pasados de los objetos de base de datos. También puede devolver objetos de base de datos a un estado anterior sin utilizar la recuperación en algún momento.

Utilice Oracle Flashback Technology para realizar el seguimiento de datos de tablas históricos. Para obtener más información sobre cómo utilizar Oracle Flashback Technology, consulte Oracle Documentation. Busque Oracle Flashback Technology.

tips:
  • Utilice las estadísticas de crecimiento para identificar los datos que se han suprimido de las tablas de crecimiento rápido o que se pueden trasladar a una base de datos distinta. Las siguientes tablas de base de datos son generalmente las tablas con crecimiento más rápido:
    • ORDERS, que incluye pedidos completados, pendientes y descartados
    • MEMBER, que incluye usuarios invitados y registrados
    • ADDRESS, que incluye direcciones permanentes y temporales
    • CACHEIVL
    • STAGLOG
  • Si con frecuencia suprime carpetas en un entorno de producción, ejecute dbclean en la tabla FOLDER con regularidad.
  • Revise la lista de escenarios de supresión predeterminados para el objeto concreto y combinaciones de tipo para determinar qué tablas de base de datos y qué filas hay que eliminar para un objeto y tipo de objeto determinados. Para obtener más información, consulte Objetos del programa de utilidad de Limpieza de base de datos.

2. Definir políticas

Una definición de política describe cuánto tiempo debe mantenerse la información en la base de datos antes de que se traslade a un sistema de soporte de decisiones (DSS) o se borre. Las políticas que reflejen las prácticas empresariales actuales le ayudarán a mantener una base de datos coherente. Por ejemplo, las políticas de ejemplo siguientes define cuánto tiempo va a mantener la información sobre los pedidos y los usuarios invitados.
  • El tiempo que se deben almacenar los pedidos completados en la base de datos.
  • El número de días antes de que un usuario invitado sin pedidos completados se suprima.
  • El tiempo que se deben almacenar los pedidos pendientes para los usuarios invitados y registrados.

3. Imponer políticas con el uso de scripts

El programa de utilidad de Limpieza de base de datos es un programa de utilidad de HCL Commerce que está diseñado para ayudarle a limpiar la base de datos. Este programa de utilidad contiene una lista predefinida de sentencias de supresión para eliminar objetos de HCL Commerce comunes tales como pedidos y datos de catálogo. Ajuste las sentencias predeterminadas que están disponibles para su uso con el script de modo que se correspondan con los valores personalizados. Este script personalizado elimina registros que están marcados para su supresión, así como toda la información que se ha definido como obsoleta en las políticas de mantenimiento de la base de datos. Para obtener más información, consulte Programa de utilidad de Limpieza de base de datos.

Pruebas

Utilice la pruebas funcionales y no funcionales para verificar la estrategia de mantenimiento de datos.
La siguiente tabla lista y describe las opciones de pruebas:
Tipo de prueba Descripción:
Funcional Utilice la prueba funcional para verificar que las supresiones realizadas al ejecutar dbclean sean correctas:
  1. Una vez que se ha completado la prueba, verifique detenidamente las supresiones en cascada en relaciones de claves foráneas ya que si se suprime una fila de una tabla de base de datos podría afectar a registros en otras tablas. Por ejemplo, si se suprime una fila de la tabla de base de datos OFFER podría afectar a registros relacionados en la tabla de base de datos ORDERITEMS.
  2. Tras ejecutar el script del programa de utilidad dbclean, solicite a los usuarios de la empresa que validen el estado de la base de datos para asegurarse de que no se hayan suprimido datos de forma imprevista.
No funcional Utilice la prueba no funcional para determinar los recursos del sistema que son necesarios para dar soporte al programa de utilidad dbclean. Para llevar a cabo este tipo de prueba, debe tener un entorno de rendimiento y la capacidad de simular carga.
La ejecución del programa de utilidad dbclean puede añadir al sistema los tipos de estrés que se mencionan a continuación:
  • Una utilización de la CPU más alta de lo normal en el servidor de bases de datos.
  • Una disminución del tiempo de respuesta general del sitio.
  • Un contención del bloqueo, como un punto muerto, un tiempo de espera excedido o una espera de bloqueo.