martes, 23 de febrero de 2016

Oracle 12c, agregando más grupos de redolog a distintos nodos de un RAC utilizando OMF

Una de las tareas de post-instalación de un RAC en Oracle, consiste en agregar más grupos de redolog a cada uno de los nodos del cluster configurado.

En caso de una configuración de RAC con dos nodos, el DBCA creará de facto, dos grupos de redologs por cada uno de los nodos. Si realizas una consulta sobre la vista V$LOG, podrás observar algo parecido a esto.

SQL> select group#, thread#, sequence#, members, status from v$log;

    GROUP#    THREAD#  SEQUENCE#    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1          1         11          2 CURRENT
         2          1         10          2 INACTIVE
         3          2          3          2 INACTIVE
         4          2          4          2 CURRENT


Como puedes observar, los grupos de redolog 1 y 2, están asignados al nodo 1, mientras que los grupos 3 y 4 al nodo 2 de nuestra configuración.

En este ejemplo, las instancias de ASM que prestan el servicio de almacenamiento al RAC, tienen dos grupos de disco: +DATA, +RECO.

Cada grupo tiene dos miembros asociados, los cuáles han sido ubicados, uno en cada grupo de disco.

Para simplificar la administración, vamos a configurar los parámetros a nivel del RAC, para permitir la designación automática de las ubicaciones a través de OMF ( Oracle Managed Files ).

Para ello, nos vamos a conectar a un nodo del RAC.

login as: oracle
Using keyboard-interactive authentication.
Password:
Last login: Tue Feb 23 11:34:34 2016 from 10.4.1.81
Oracle Corporation      SunOS 5.11      11.2    August 2015


Revisemos como se encuentran en este momento los parámetros relacionados con las ubicaciones de los miembros de los grupos de redolog.

-bash-4.1$ sqlplus /nolog

SQL*Plus: Release 12.1.0.1.0 Production on Tue Feb 23 11:40:08 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> show parameter online

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
db_create_online_log_dest_1          string      
db_create_online_log_dest_2          string      
db_create_online_log_dest_3          string
db_create_online_log_dest_4          string
db_create_online_log_dest_5          string


Como observan, de facto estos parámetros no se encuentran configurados. Vamos a establecer como valor de facto, las ubicaciones en ambos grupos de disco con los cuáles contamos.

La ventaja en este caso, es que no vamos a tener que indicar la ruta de creación de los archivos para cada grupo de redolog que agreguemos a cada una de las instancias del RAC.

SQL> alter system set db_create_online_log_dest_1='+DATA' scope=both sid='*';
Database altered.

SQL> alter system set db_create_online_log_dest_2='+RECO' scope=both sid='*';
Database altered.

Ahora validemos los cambios realizados.

SQL> show parameter online

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
db_create_online_log_dest_1          string      +DATA
db_create_online_log_dest_2          string      +RECO
db_create_online_log_dest_3          string
db_create_online_log_dest_4          string
db_create_online_log_dest_5          string


Inicialmente vamos a agregar dos grupos más de redologs, a la instancia en el nodo 1.

SQL> alter database add logfile thread 1 group 5 size 50M;

Database altered.

SQL> alter database add logfile thread 1 group 6 size 50M;

Database altered.

Ahora vamos a agregar dos grupos de redolog a la instancia del nodo 2.

SQL> alter database add logfile thread 2 group 5 size 50M;
alter database add logfile thread 2 group 5 size 50M
*
ERROR at line 1:
ORA-01184: logfile group 5 already exists


En caso de que nos equivoquemos e intentemos agregar un grupo de redologs con una asignación numeral ya definida,  nos va a devolver un mensaje de error la base de datos. A pesar que son dos instancias separadas, la numeración de los grupos de redologs, no pueden ser repetidas en ambas instancias.

SQL> alter database add logfile thread 2 group 7 size 50M;

Database altered.

SQL> alter database add logfile thread 2 group 8  size 50M;

Database altered.

Ahora podemos validar la existencia de los nuevos 4 grupos de redologs.

SQL> desc v$log
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 GROUP#                                             NUMBER
 THREAD#                                            NUMBER
 SEQUENCE#                                          NUMBER
 BYTES                                              NUMBER
 BLOCKSIZE                                          NUMBER
 MEMBERS                                            NUMBER
 ARCHIVED                                           VARCHAR2(3)
 STATUS                                             VARCHAR2(16)
 FIRST_CHANGE#                                      NUMBER
 FIRST_TIME                                         DATE
 NEXT_CHANGE#                                       NUMBER
 NEXT_TIME                                          DATE
 CON_ID                                             NUMBER

SQL> select group#, thread#, sequence#, members, status from v$log;

    GROUP#    THREAD#  SEQUENCE#    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1          1         11          2 CURRENT
         2          1         10          2 INACTIVE
         3          2          3          2 INACTIVE
         4          2          4          2 CURRENT
         5          1          0          2 UNUSED
         6          1          0          2 UNUSED
         7          2          0          2 UNUSED
         8          2          0          2 UNUSED

8 rows selected.

SQL>


Si revisan la información de la vista "v$logfile" podrán observar como fueron distribuidos cada uno de los miembros de los grupos creados en una ubicación distinta, multiplexando así las rutas de dichos archivos y cumpliendo con las buenas prácticas.

SQL> select group#, status, member from v$logfile;

    GROUP# STATUS  MEMBER
---------- ------- -------------------------------------------------
         2         +DATA/PROD/ONLINELOG/group_2.269.904494825
         2         +RECO/PROD/ONLINELOG/group_2.259.904494825
         1         +DATA/PROD/ONLINELOG/group_1.266.904494825
         1         +RECO/PROD/ONLINELOG/group_1.260.904494825
         3         +DATA/PROD/ONLINELOG/group_3.273.904495095
         3         +RECO/PROD/ONLINELOG/group_3.258.904495095
         4         +DATA/PROD/ONLINELOG/group_4.263.904495095
         4         +RECO/PROD/ONLINELOG/group_4.257.904495095
         5         +DATA/PROD/ONLINELOG/group_5.277.904563729
         5         +RECO/PROD/ONLINELOG/group_5.261.904563731
         6         +DATA/PROD/ONLINELOG/group_6.278.904563747
         6         +RECO/PROD/ONLINELOG/group_6.262.904563747
         7         +DATA/PROD/ONLINELOG/group_7.279.904563815
         7         +RECO/PROD/ONLINELOG/group_7.263.904563815
         8         +DATA/PROD/ONLINELOG/group_8.280.904563823
         8         +RECO/PROD/ONLINELOG/group_8.264.904563823

16 rows selected.


SQL>

No hay comentarios:

Publicar un comentario en la entrada

Te agradezco tus comentarios. Te esperamos de vuelta.