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>