Exadata Performance : Recommended Redo Log File Size >= 4GB

En el día de hoy estuve revisando un Exadata X5, en el cual pudimos verificar que no estaba cumpliendo con las políticas recomendadas para el tamaño de REDO, para las maquinas de computo
Oracle Exadata Machine.

Oracle, en su documentación oficial, recomienda que el tamaño de los REDOLOG file deben ser >= 4GB y < 32GB.

Como detalle, es importante saber que no es ideal superar la marca de los 32GB , salvo que se lo requiera el soporte de Oracle.

Esta recomendacion surge,  por que la máquina Exadata puede soportar una tasa extrema de I/O.

Con la última versión de Exadata X-6, se pueden realizar operaciones de I/O de lectura de base de datos de 5 KB hasta 8 GB, o operaciones de escritura de flash de 8 MB de 5 MB por segundo por rack completo.

Revisamos la base de datos en el Exadata:

SQL> SELECT a.group#,
                   b.STATUS,
                   a.MEMBER,
                   b.BYTES/1024/1024 "Size (Mb)"
     FROM gv$logfile a,
                 gv$log b
   WHERE a.group# = b.group# ;

    GROUP# STATUS           MEMBER                                                                            Size (Mb)
---------- ---------------- -------------------------------------------------------------------------------- ----------
         1 INACTIVE         +RECO_EXA/AMX/onlinelog/AMX_redolog_t1g1m2.log                                  512
         1 INACTIVE         +DATA_EXA/AMX/onlinelog/AMX_redolog_t1g1m1.log                                  512
         1 INACTIVE         +RECO_EXA/AMX/onlinelog/AMX_redolog_t1g1m2.log                                  512
         1 INACTIVE         +DATA_EXA/AMX/onlinelog/AMX_redolog_t1g1m1.log                                  512
...
...
         6 INACTIVE         +DATA_EXA/AMX/onlinelog/AMX_redolog_t2g6m1.log                                  512
         6 INACTIVE         +RECO_EXA/AMX/onlinelog/AMX_redolog_t2g6m2.log                                  512
         6 INACTIVE         +DATA_EXA/AMX/onlinelog/AMX_redolog_t2g6m1.log                                  512
         6 INACTIVE         +RECO_EXA/AMX/onlinelog/AMX_redolog_t2g6m2.log                                  512

48 rows selected.

SQL>

 

Algunas consideraciones:

  • Si la aplicación está generando una gran cantidad de LOG SWITCH, 4 GB puede que no sea suficiente y debemos considerar aumentarlo.
  • Los registros de REDO de tamaño inferior a 4GB, pueden llevar a interrupciones de registro innecesarios,  ya que en su mecanismo de control causan cuellos de botella en el rendimiento.
  • Se puede comenzar con el tamaño recomendado de 4 GB y observar los cambios de comportamiento antes de que decidamos aumentar o disminuir el tamaño del REDO.

Idealmente, los archivos de registro de REDO on line deben tener el mismo tamaño y estar configurados para cambiar aproximadamente una vez por hora durante la actividad normal.

Deben cambiar en una cota de tiempo no inferior a 20 minutos durante el tiempo de actividad máxima.

Debe haber un mínimo de cuatro grupos de REDO online para evitar que LGWR espere a que un grupo, para que esté disponible; ello podria ser por que un grupo puede no estar disponible aún debido a que no se ha completado el checkpoint o el grupo aún no ha sido archivado.

Solución:

Procedimos a realizar los siguientes cambios:

  • Creamos los GRUPOS nuevos, aqui vemos un ejemplo:
 ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 12 ( '+DATA_EXA2A') SIZE 4096M;
  • Verificamos el estado INACTIVE, UNUSED
SQL> select INST_ID, group#, THREAD#, MEMBERS, ARCHIVED, STATUS from gv$log order by INST_ID ASC;

   INST_ID     GROUP#    THREAD#    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- --- ----------------
         1          6          2          2 YES INACTIVE
         1          5          1          2 YES INACTIVE
...
  • En el caso que no aparezcan con estos estados, debemos hacer un checkpoint en general para que puedan cerrarse.
alter system switch logfile;
alter system checkpoint;
alter system checkpoint global;
  • Dropeamos los disponibles, aqui vemos un ejemplo:
SQL> ALTER DATABASE DROP LOGFILE GROUP 1;

Database altered.

SQL> ALTER DATABASE DROP LOGFILE GROUP 3;

Database altered.
SQL> 
  • Asi es como quedo organizado nuestra Base de datos en EXADATA:
SQL> SELECT a.group#,
                   b.STATUS,
                   a.MEMBER,
                   b.BYTES/1024/1024 "Size (Mb)"
     FROM gv$logfile a,
                 gv$log b
    WHERE a.group# = b.group#;

    GROUP# STATUS           MEMBER                                                                            Size (Mb)
---------- ---------------- -------------------------------------------------------------------------------- ----------
        13 CURRENT          +DATA_EXA/AMX/onlinelog/group_13.570.939746993                                    4096
        13 CURRENT          +DATA_EXA/AMX/onlinelog/group_13.570.939746993                                    4096
        14 UNUSED           +DATA_EXA/AMX/onlinelog/group_14.469.939747011                                    4096
        14 UNUSED           +DATA_EXA/AMX/onlinelog/group_14.469.939747011                                    4096
        15 UNUSED           +DATA_EXA/AMX/onlinelog/group_15.527.939747047                                    4096
        15 UNUSED           +DATA_EXA/AMX/onlinelog/group_15.527.939747047                                    4096
        16 UNUSED           +DATA_EXA/AMX/onlinelog/group_16.285.939747059                                    4096
        16 UNUSED           +DATA_EXA/AMX/onlinelog/group_16.285.939747059                                    4096
        17 INACTIVE         +DATA_EXA/AMX/onlinelog/group_17.427.939747075                                    4096
        17 INACTIVE         +DATA_EXA/AMX/onlinelog/group_17.427.939747075                                    4096
        18 INACTIVE         +DATA_EXA/AMX/onlinelog/group_18.485.939747089                                    4096
        18 INACTIVE         +DATA_EXA/AMX/onlinelog/group_18.485.939747089                                    4096
        19 CURRENT          +DATA_EXA/AMX/onlinelog/group_19.541.939747099                                    4096
        19 CURRENT          +DATA_EXA/AMX/onlinelog/group_19.541.939747099                                    4096
        20 UNUSED           +DATA_EXA/AMX/onlinelog/group_20.612.939747113                                    4096
        20 UNUSED           +DATA_EXA/AMX/onlinelog/group_20.612.939747113                                    4096
        13 CURRENT          +DATA_EXA/AMX/onlinelog/group_13.570.939746993                                    4096
        13 CURRENT          +DATA_EXA/AMX/onlinelog/group_13.570.939746993                                    4096
        14 UNUSED           +DATA_EXA/AMX/onlinelog/group_14.469.939747011                                    4096
        14 UNUSED           +DATA_EXA/AMX/onlinelog/group_14.469.939747011                                    4096
        15 UNUSED           +DATA_EXA/AMX/onlinelog/group_15.527.939747047                                    4096
        15 UNUSED           +DATA_EXA/AMX/onlinelog/group_15.527.939747047                                    4096
        16 UNUSED           +DATA_EXA/AMX/onlinelog/group_16.285.939747059                                    4096
        16 UNUSED           +DATA_EXA/AMX/onlinelog/group_16.285.939747059                                    4096
        17 INACTIVE         +DATA_EXA/AMX/onlinelog/group_17.427.939747075                                    4096
        17 INACTIVE         +DATA_EXA/AMX/onlinelog/group_17.427.939747075                                    4096
        18 INACTIVE         +DATA_EXA/AMX/onlinelog/group_18.485.939747089                                    4096
        18 INACTIVE         +DATA_EXA/AMX/onlinelog/group_18.485.939747089                                    4096
        19 CURRENT          +DATA_EXA/AMX/onlinelog/group_19.541.939747099                                    4096
        19 CURRENT          +DATA_EXA/AMX/onlinelog/group_19.541.939747099                                    4096
        20 UNUSED           +DATA_EXA/AMX/onlinelog/group_20.612.939747113                                    4096
        20 UNUSED           +DATA_EXA/AMX/onlinelog/group_20.612.939747113                                    4096

32 rows selected.

SQL>