Criando um Disk Group com Flex Redundancy

Olá pessoal, o objetivo aqui é apresentar como criar um disk group com um dos novos recursos do Oracle ASM na versão 12.2.0.1, o Flex Redundancy ou Flex Disk Group.

Este novo tipo de redundância do Disk Group no ASM nos permite isolar bancos de dados em níveis de redundância diferentes. Por exemplo, o PROD_PDB terá High Redundancy, enquanto o HML_PDB e o DEV_PDB terão Normal Redundancy.

Como era até então:
Pre 12.2 Diskgroup

Como é agora com Flex Redundancy:
12.2 Flex Redundancy

Vamos ao passo-a-passo…

Inicialmente eu apresento novos discos ao ASM utilizando o Filter Driver, assim como vimos neste outro artigo.

[root@london1 ~]# . oraenv
ORACLE_SID = [root] ? +ASM1
The Oracle base has been set to /u01/app/oracle

[root@london1 ~]# asmcmd

ASMCMD> afd_label FLEX01 /dev/sdg
ASMCMD> afd_label FLEX02 /dev/sdh
ASMCMD> afd_label FLEX03 /dev/sdi
ASMCMD> afd_label FLEX04 /dev/sdj
ASMCMD> afd_label FLEX05 /dev/sdk

Listamos os discos para verificar os recém adicionados:

ASMCMD> afd_lslbl
--------------------------------------------------------------------------------
Label                     Duplicate  Path
================================================================================
CONFIG01                              /dev/sdb
CONFIG02                              /dev/sdc
CONFIG03                              /dev/sdd
CONFIG04                              /dev/sde
DATA01                                /dev/sdf
FLEX01                                /dev/sdg
FLEX02                                /dev/sdh
FLEX03                                /dev/sdi
FLEX04                                /dev/sdj
FLEX05                                /dev/sdk

ASMCMD> exit

Ao sair do ASMCMD alterne sua sessão para o usuário oracle e defina novamente as variáveis de ambiente apontando para a instância +ASM1 e acesse o SQL*Plus:

[root@london1 ~]# su - oracle
Last login: Mon Jul 31 23:22:56 BRT 2017
[oracle@london1 ~]$ . oraenv
ORACLE_SID = [orcl1] ? +ASM1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@london1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 31 23:23:24 2017

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Feito isso, vamos criar um novo disk group com estes discos:

SQL> create diskgroup FLEX flex redundancy disk 'AFD:FLEX01', 'AFD:FLEX02', 'AFD:FLEX03';

Diskgroup created.

Para utilizar a redundância Flex é necessário no mínimo 3 Failure Groups, portanto 3 discos.

Observe que no comando de criação não informei nenhum Failure Group, mas por padrão o ASM cria um para cada um dos discos. Vejamos:

SQL> select group_number, name, path, label, state, mount_status, header_status, total_mb, free_mb, library, failgroup, voting_file from v$asm_disk;

GROUP_NUMBER NAME	    PATH		    LABEL	   STATE    MOUNT_S HEADER_STATU   TOTAL_MB    FREE_MB LIBRARY								                            FAILGROUP		               V
------------ ---------- --------------- ---------- -------- ------- ------------ ---------- ---------- ---------------------------------------------------------------- ------------------------------ -
	   0	            AFD:FLEX04	    FLEX04	   NORMAL   CLOSED  PROVISIONED           0	         0 AFD Library - Generic , version 3 (KABI_V3)			            			                   N
	   0	            AFD:FLEX05	    FLEX05	   NORMAL   CLOSED  PROVISIONED           0	         0 AFD Library - Generic , version 3 (KABI_V3)			            			                   N
	   1     CONFIG01	AFD:CONFIG01	CONFIG01   NORMAL   CACHED  MEMBER	          10240	      1724 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG01		               N
	   1     CONFIG02	AFD:CONFIG02	CONFIG02   NORMAL   CACHED  MEMBER	          10240	      1696 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG02		               Y
	   1     CONFIG03	AFD:CONFIG03	CONFIG03   NORMAL   CACHED  MEMBER	          10240	      1732 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG03		               N
	   1     CONFIG04	AFD:CONFIG04	CONFIG04   NORMAL   CACHED  MEMBER	          10240	      1716 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG04		               N
	   2     DATA01	    AFD:DATA01	    DATA01	   NORMAL   CACHED  MEMBER	          12288	      8160 AFD Library - Generic , version 3 (KABI_V3)			            DATA01			               N
	   3     FLEX01	    AFD:FLEX01	    FLEX01	   NORMAL   CACHED  MEMBER	           1024	       920 AFD Library - Generic , version 3 (KABI_V3)			            FLEX01			               N
	   3     FLEX02	    AFD:FLEX02	    FLEX02	   NORMAL   CACHED  MEMBER	           1024	       920 AFD Library - Generic , version 3 (KABI_V3)			            FLEX02			               N
	   3     FLEX03	    AFD:FLEX03	    FLEX03	   NORMAL   CACHED  MEMBER	           1024	       920 AFD Library - Generic , version 3 (KABI_V3)			            FLEX03			               N

10 rows selected.

E o Disk Group ficou assim:

SQL> select GROUP_NUMBER, NAME, STATE, TYPE, TOTAL_MB, FREE_MB, REQUIRED_MIRROR_FREE_MB, USABLE_FILE_MB from v$asm_diskgroup;

GROUP_NUMBER NAME     STATE	      TYPE	   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ -------- ----------- ------ ---------- ---------- ----------------------- --------------
	       1 CONFIG   MOUNTED	  EXTERN      40960	      6868			             0		     6868
	       2 DATA     MOUNTED	  EXTERN      12288	      8160			             0		     8160
	       3 FLEX     MOUNTED	  FLEX	       3072	      2760			             0		        0

3 rows selected.

Vamos excluir o Disk Group para criá-lo novamente:

SQL> drop diskgroup FLEX;

Diskgroup dropped.

Veja que ao tentar criar com 4 discos, mas apenas 2 Failure Groups ocorre o erro:

SQL> create diskgroup FLEX flex redundancy
  2  failgroup FG_A disk 'AFD:FLEX01', 'AFD:FLEX03'
  3  failgroup FG_B disk 'AFD:FLEX02', 'AFD:FLEX04';
create diskgroup FLEX flex redundancy
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15167: command requires at least 3 failure groups; found only 2

Então incluímos os 3 discos e criamos novamente especificando o path de cada disco e também seus respectivos Failure Groups:

SQL> create diskgroup FLEX flex redundancy
  2  failgroup FG_A disk 'AFD:FLEX01'
  3  failgroup FG_B disk 'AFD:FLEX02'
  4  failgroup FG_C disk 'AFD:FLEX03';

Diskgroup created.

Como temos 5 discos vamos utilizar os 2 restantes e adicioná-los em Failure Groups separados:

SQL> alter diskgroup FLEX add
  2  failgroup FG_D disk 'AFD:FLEX04'
  3  failgroup FG_E disk 'AFD:FLEX05';

Diskgroup altered.

Listamos os discos novamente para ver como ficou depois de utilizarmos todos eles:

SQL> select group_number, name, path, label, state, mount_status, header_status, total_mb, free_mb, library, failgroup, voting_file from v$asm_disk;

GROUP_NUMBER NAME	    PATH		    LABEL	   STATE    MOUNT_S HEADER_STATU   TOTAL_MB    FREE_MB LIBRARY								                            FAILGROUP		               V
------------ ---------- --------------- ---------- -------- ------- ------------ ---------- ---------- ---------------------------------------------------------------- ------------------------------ -
	       1 CONFIG01	AFD:CONFIG01	CONFIG01   NORMAL   CACHED  MEMBER	          10240	      1724 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG01		               N
	       1 CONFIG02	AFD:CONFIG02	CONFIG02   NORMAL   CACHED  MEMBER	          10240	      1696 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG02		               Y
	       1 CONFIG03	AFD:CONFIG03	CONFIG03   NORMAL   CACHED  MEMBER	          10240	      1732 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG03		               N
	       1 CONFIG04	AFD:CONFIG04	CONFIG04   NORMAL   CACHED  MEMBER	          10240	      1716 AFD Library - Generic , version 3 (KABI_V3)			            CONFIG04		               N
	       2 DATA01	    AFD:DATA01	    DATA01	   NORMAL   CACHED  MEMBER	          12288	      8160 AFD Library - Generic , version 3 (KABI_V3)			            DATA01			               N
	       3 FLEX01	    AFD:FLEX01	    FLEX01	   NORMAL   CACHED  MEMBER	           1024	       952 AFD Library - Generic , version 3 (KABI_V3)			            FG_A			               N
	       3 FLEX02	    AFD:FLEX02	    FLEX02	   NORMAL   CACHED  MEMBER	           1024	       948 AFD Library - Generic , version 3 (KABI_V3)			            FG_B			               N
	       3 FLEX03	    AFD:FLEX03	    FLEX03	   NORMAL   CACHED  MEMBER	           1024	       956 AFD Library - Generic , version 3 (KABI_V3)			            FG_C			               N
	       3 FLEX04	    AFD:FLEX04	    FLEX04	   NORMAL   CACHED  MEMBER	           1024	       952 AFD Library - Generic , version 3 (KABI_V3)			            FG_D			               N
	       3 FLEX05	    AFD:FLEX05	    FLEX05	   NORMAL   CACHED  MEMBER	           1024	       952 AFD Library - Generic , version 3 (KABI_V3)			            FG_E			               N

10 rows selected.

Por fim verificamos como ficou a distribuição do espaço nos Disk Groups:

SQL> select GROUP_NUMBER, NAME, STATE, TYPE, TOTAL_MB, FREE_MB, REQUIRED_MIRROR_FREE_MB, USABLE_FILE_MB from v$asm_diskgroup;

GROUP_NUMBER NAME	    STATE	    TYPE   TOTAL_MB	  FREE_MB    REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ----------- ------ ---------- ---------- ----------------------- --------------
	       1 CONFIG     MOUNTED     EXTERN	    40960	    6868		               0	       6868
	       2 DATA	    MOUNTED     EXTERN	    12288	    8160		               0	       8160
	       3 FLEX	    MOUNTED     FLEX	     5120	    4760		               0	          0

3 rows selected.

Por hoje é só pessoal. Se gostou inscreva-se no blog e compartilhe com os amigos. No próximo post veremos como utilizar esse Flex Disk Group.

Abraços e até mais,

Franky

Referências
http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/3611943.pdf