A partir da versão 12.1 tem um comando bem mais eficiente para substituir os discos que estão com algum problema dentro dos diskgroups ASM é replace_disk_clause
Mas para minha situação ele não funcionou. Pelos testes e leitura na documentação, ele só vai funcionar se o seu disco antigo estiver defeituoso.
No meu caso, o disco não estava com problemas eu só precisava substituir. Então vejam o erro que me retornou:
SQL> alter diskgroup TESTE REPLACE DISK TESTE01 with '/dev/oracleasm/disks/TESTE05' force; alter diskgroup TESTE REPLACE DISK TESTE01 with '/dev/oracleasm/disks/TESTE05' force * ERROR at line 1: ORA-15032: not all alterations performed ORA-15145: ASM disk 'TESTE01' is online and cannot be replaced. |
Repare que tentei até usar o force, mas mesmo assim ele retornou o erro pois o disco que estava tentando substituir , TESTE01, não estava com problema.
Então a solução foi o usar o comando anterior a versão 12.1, usar ADD e DROP na mesma linha.
Aqui está a minha configuração antes da execução do comando.
Diskgroup TESTE com redundância NORMAL e dois FAILGROUPS (FALHA1 e FALHA2)
SQL> select NAME,FAILGROUP,PATH from v$asm_disk order by FAILGROUP, label; NAME FAILGROUP PATH -------------------------------------------------------------------------- TESTE01 FALHA1 /dev/oracleasm/disks/TESTE01 TESTE02 FALHA2 /dev/oracleasm/disks/TESTE02 |
No comando abaixo eu vou adicionar o disco '/dev/oracleasm/disks/TESTE05' e remover o disco 'TESTE01' do meu diskgroup TESTE.
SQL> alter diskgroup TESTE add FAILGROUP FALHA1 disk '/dev/oracleasm/disks/TESTE05' drop disk 'TESTE01'; Diskgroup altered. |
Após o comando, o disco TESTE05 entrou no lugar do TESTE01 no FAILGROUP FALHA1.
SQL> select NAME,FAILGROUP,PATH from v$asm_disk order by FAILGROUP, label; NAME FAILGROUP PATH --------------------------------------------------------------- TESTE05 FALHA1 /dev/oracleasm/disks/TESTE05 TESTE02 FALHA2 /dev/oracleasm/disks/TESTE02 |
Comentários