8 de agosto de 2014

Eliminando y creando grupos Online Redolog

Se realizará la eliminación (DROP) y creación (CREATE) de grupo de archivos Online RedoLog. Nuestro escenario actual es el siguiente:
SQL> select GROUP#, STATUS, members, BYTES/1024/1024 MB, THREAD# from v$log;

    GROUP# STATUS              MEMBERS         MB    THREAD#
---------- ---------------- ---------- ---------- ----------
         4 CURRENT                   1         50          1
         5 INACTIVE                  1         50          1
         6 INACTIVE                  1         50          1

SQL> set pages 100
SQL> column status format a10
SQL> column member format a50
SQL> select group#, status, type, member from v$logfile;

    GROUP# STATUS     TYPE    MEMBER
---------- ---------- ------- --------------------------------------------------
         4            ONLINE  +REDO/sin/onlinelog/group_4.256.838035233
         5            ONLINE  +REDO/sin/onlinelog/group_5.257.838035233
         6            ONLINE  +REDO/sin/onlinelog/group_6.258.838035235

3 rows selected.
Realizaremos la creación de nuevos GRUPOS REDOLOG y eliminaremos los actuales por dos motivos principales:
1. Se Multiplexará e incrementará (de 50Mb a 1024Mb) el tamaño a los miembros de los grupos ONLINE REDOLOG en diferentes diskgroups, y cada grupo tendrá 2 miembros
2. Se eliminará a los actuales GRUPOS ONLINE REDOLOG existentes (grupos 4, 5 y 6).

a) Creación de GRUPOS ONLINE REDOLOG, con miembros ya multiplexados
SQL> ALTER DATABASE ADD LOGFILE GROUP 11 ('+REDO', '+FRA') SIZE 1024M;

Database altered.

SQL> ALTER DATABASE ADD LOGFILE GROUP 12 ('+REDO', '+FRA') SIZE 1024M;

Database altered.
b) Creación de GRUPO ONLINE REDOLOG con un solo miembro y adicionamos su nuevo miembro.
Creamos:
SQL> ALTER DATABASE ADD LOGFILE GROUP 13 ('+REDO') SIZE 1024M;

Database altered.
Adicionamos:
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+FRA' TO GROUP 13;

Database altered.
c) Eliminación de GRUPOS ONLINE REDOLOG. 
Antes de eliminar ejecutamos lo siguiente:
SQL> select GROUP#, STATUS, members, BYTES/1024/1024 MB, THREAD# from v$log;

    GROUP# STATUS        MEMBERS         MB    THREAD#
---------- ---------- ---------- ---------- ----------
         4 INACTIVE            1         50          1
         5 INACTIVE            1         50          1
         6 CURRENT             1         50          1
        11 UNUSED              2       1024          1
        12 UNUSED              2       1024          1
        13 UNUSED              2       1024          1

6 rows selected.
Eliminamos:
SQL> ALTER DATABASE DROP LOGFILE GROUP 4;

Database altered.

SQL> ALTER DATABASE DROP LOGFILE GROUP 5;

Database altered.

SQL> ALTER DATABASE DROP LOGFILE GROUP 6;
ALTER DATABASE DROP LOGFILE GROUP 6
*
ERROR at line 1:
ORA-01623: log 6 is current log for instance sin (thread 1) - cannot drop
ORA-00312: online log 6 thread 1: '+REDO/sin/onlinelog/group_6.258.838035235'
Oracle jamás permitirá que se eliminen los grupos ONLINE REDOLOG con status "CURRENT", por lo que se necesita realizar el cambio de grupo. Ejecutamos la siguiente sentencia:
SQL> ALTER SYSTEM SWITCH LOGFILE;

System altered.
Con la anterior instrucción realizamos el cambio de grupo, y es posible que el estado aun permanezca con status "ACTIVE", es preferible esperar un lapso de tiempo para que pase al estado de "INACTIVE", de tal manera queda en lo siguiente:
SQL> select GROUP#, STATUS, members, BYTES/1024/1024 MB, THREAD# from v$log;

    GROUP# STATUS        MEMBERS         MB    THREAD#
---------- ---------- ---------- ---------- ----------
         6 INACTIVE            1         50          1
        11 CURRENT             2       1024          1
        12 UNUSED              2       1024          1
        13 UNUSED              2       1024          1
Ejecutamos nuevamente la instrucción para eliminar el grupo ONLINE REDOLOG
SQL> ALTER DATABASE DROP LOGFILE GROUP 6;

Database altered.
Con los pasos mencionados se concluye la eliminación y creación de GRUPOS ONLINE REDOLOG, el resultado final es el siguiente:
SQL> select GROUP#, STATUS, members, BYTES/1024/1024 MB, THREAD# from v$log;

    GROUP# STATUS        MEMBERS         MB    THREAD#
---------- ---------- ---------- ---------- ----------
        11 CURRENT             2       1024          1
        12 UNUSED              2       1024          1
        13 UNUSED              2       1024          1

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

    GROUP# STATUS     TYPE    MEMBER
---------- ---------- ------- --------------------------------------------------
        11            ONLINE  +REDO/sin/onlinelog/group_11.263.855075567
        11            ONLINE  +FRA/sin/onlinelog/group_11.263.855075583
        12            ONLINE  +REDO/sin/onlinelog/group_12.264.855075605
        12            ONLINE  +FRA/sin/onlinelog/group_12.264.855075623
        13            ONLINE  +REDO/sin/onlinelog/group_13.265.855075747
        13 INVALID    ONLINE  +FRA/sin/onlinelog/group_13.265.855075835

6 rows selected.

Paulo Ticona.

Fuentes:
http://docs.oracle.com/cd/E11882_01/server.112/e25494/onlineredo.htm#ADMIN007

No hay comentarios:

Publicar un comentario