Introdução
Recentemente eu estava revisando as mudanças do ASMlib 3.0, e uma mudança que afeta a maneira como costumo configurar os ambientes é o fato de não existir mais o caminho “/dev/oracleasm/disks“, que até a versão 2.0 era usado para listar os LABELs dos discos criados com o ASMlib.
Na nova versão, a forma de referenciar os discos pelo Label é usando o caminho padrão do SO “/dev/disk/by-label“, mas esse diretório inclui todos os discos que contém um Label, mesmo os que não foram criados como ASMlib.
Uma alternativa é usar o padrão ‘ORCL:*‘ como prefixo para descobrir os discos criados com o ASMlib. Neste post eu demonstro como habilitar essa opção, e como migrar uma configuração existente que usa o padrão ‘/dev/oracleasm/disks‘ para o padrão ‘ORCL:*‘.
Habilitando o Prefixo ORCL:*
Para habilitar essa opção, use o kfod com os parâmetros abaixo:
kfod status=TRUE asm_diskstring='ORCL:*' disks=all dscvgroup=TRUE
Se você estiver fazendo uma instalação nova, já poderá utilizar o padrão ‘ORCL:*’ no parâmetro asm_diskstring do ASM.
Migrando Uma Configuração Existente
Este tópico demonstra um exemplo de como alterar a configuração de um ASM existente, considerando que você já habilitou a opção com o kfod, e que tem uma janela de indisponibilidade para isso.
1) Na instância ASM via SQLPLUS, verifique o valor atual do parâmetro asm_diskstring:
SQL> show parameter asm_disk
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string /dev/oracleasm/disks
2) Altere o parâmetro para incluir o novo valor ‘ORCL:*‘ e deixando valor original por último:
SQL> alter system set asm_diskstring='ORCL:*','/dev/oracleasm/disks/*';
Isso irá permitir que o ASM acesse os discos pelos dois caminhos possíveis temporariamente.
3) Verifique que ambos os caminhos para o mesmo disco são reconhecidos pelo ASM, mas o novo deve estar com status CLOSED:
set lines 400
col path format a50
select mount_status, header_status, mode_status, name, path from v$asm_disk;
MOUNT_S HEADER_STATU MODE_ST NAME PATH
------- ------------ ------- ---------------- ------------------------------------------------------------
CLOSED MEMBER ONLINE ORCL:DATA01 --<<===== Current CLOSED
CACHED MEMBER ONLINE DATA_0000 /dev/oracleasm/disks/DATA01 --<<===== Current CACHED
4) Pare qualquer banco de dados que esteja usando o diskgroup e faça um restart do mesmo:
SQL> alter diskgroup DATA dismount force;
Diskgroup altered.
SQL> alter diskgroup DATA mount;
Diskgroup altered.
5) Consulte o status dos discos novamente, o novo caminho deve aparecer como CACHED, e o antigo como IGNORED:
SQL> select mount_status, header_status, mode_status, name, path from v$asm_disk;
MOUNT_S HEADER_STATU MODE_ST NAME PATH
------- ------------ ------- ----------------- ------------------------------------------------------------
IGNORED MEMBER ONLINE /dev/oracleasm/disks/DATA01 --<<===== IGNORED
CACHED MEMBER ONLINE DATA_0000 ORCL:DATA01 --<<===== CACHED
6) Altere o parâmetro asm_diskstring para incluir apenas o novo prefixo:
SQL> alter system set asm_diskstring = 'ORCL:*';
System altered.
Isso irá fazer com que o ASM considere apenas os discos com o novo prefixo.
7) Agora o disco deve aparecer apenas com o prefixo novo:
select mount_status, header_status, mode_status, name, path from v$asm_disk;
MOUNT_S HEADER_STATU MODE_ST NAME PATH
------- ------------ ------- ------------------ --------------------------------------------------
CACHED MEMBER ONLINE DATA_0000 ORCL:DATA01
Conclusão
Esse post demonstrou uma alternativa para manter uma configuração padronizada no ASM, que pode ser usada em qualquer versão do ASMlib, servindo como uma preparação do que você pode precisar fazer em um possível upgrade do ASMlib para a sua versão 3.0.