This post is also available in:
Ao tentar executar uma operação no Oracle ASM — como criar um SPFILE no disk group, habilitar ACFS ou usar flex ASM — o seguinte erro pode aparecer:
SQL> create spfile='+DATA/ASM/spfileASM.ora' from pfile;
ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higherA operação é bloqueada porque o atributo de compatibilidade do disk group é mais antigo do que a versão mínima exigida pela feature que você está tentando usar.
Neste artigo, vou explicar o que são os atributos de compatibilidade do ASM, por que esse erro aparece, como corrigir e — principalmente — o alerta crítico que você precisa saber antes de alterar.
💡 Na prática: Encontrei esse erro ao tentar criar um SPFILE em um disk group ASM que tinha
compatible.asmem10.1.0.0.0, rodando em um Grid Infrastructure 11g. A correção é simples, mas irreversível — uma vez alterada a compatibilidade, não é possível voltar.
O Que São os Atributos de Compatibilidade do ASM
Cada disk group ASM possui dois atributos de compatibilidade que controlam quais features estão disponíveis:
| Atributo | O que controla |
|---|---|
compatible.asm | Versão mínima do software ASM (Grid Infrastructure) necessária para acessar o disk group |
compatible.rdbms | Versão mínima do software RDBMS (Database) necessária para acessar o disk group |
Esses atributos existem para proteger contra situações onde um disk group é alterado com features de uma versão mais nova e depois alguém tenta acessar com uma versão mais antiga — o que causaria corrupção de dados.
Como verificar os valores atuais
-- Conectar na instância ASM
sqlplus / as sysasm
SELECT group_number, name, compatibility, database_compatibility
FROM v$asm_diskgroup;Exemplo de saída:
GROUP_NUMBER NAME COMPATIBILITY DATABASE_COMPATIBILITY
------------ --------- ------------- ----------------------
1 DATA 10.1.0.0.0 10.1.0.0.0
2 REDO 10.1.0.0.0 10.1.0.0.0
3 ARCHIVE 10.1.0.0.0 10.1.0.0.0Se a compatibilidade está em 10.1.0.0.0 e você tenta uma operação que exige 11.2.0.0.0 ou superior, o ORA-15221 aparece.
Por Que o Erro ORA-15221 Ocorre
O erro ocorre quando você tenta usar uma feature do ASM que exige uma versão de compatibilidade maior do que a configurada no disk group.
Features e versões mínimas necessárias
| Feature | compatible.asm mínimo |
|---|---|
| SPFILE no disk group | 11.2.0.0.0 |
| ACFS (ASM Cluster File System) | 11.2.0.0.0 |
| Flex ASM | 12.1.0.0.0 |
| ASM Filter Driver (ASMFD) | 12.1.0.0.0 |
| Flex disk groups | 12.2.0.0.0 |
| Disk group com sector size 4K nativo | 12.2.0.0.0 |
| Extended disk groups (Exadata) | 12.1.0.0.0 |
Cenários comuns
- Ambiente migrado de 10g/11g para 19c — o Grid foi atualizado, mas os disk groups mantiveram a compatibilidade antiga
- Disk groups criados em versões antigas e nunca atualizados
- Novo DBA assume um ambiente legado e tenta usar features modernas
Diagnóstico
Antes de alterar, verifique o estado completo do ambiente.
1. Verificar compatibilidade atual de todos os disk groups
SELECT group_number, name, type,
compatibility AS asm_compat,
database_compatibility AS rdbms_compat,
state
FROM v$asm_diskgroup
ORDER BY group_number;2. Verificar a versão do Grid Infrastructure (ASM)
SELECT banner_full FROM v$version WHERE banner_full LIKE '%Grid%';Ou no shell:
$GRID_HOME/bin/crsctl query has releaseversion
# ou
$GRID_HOME/OPatch/opatch lspatches3. Verificar a versão do RDBMS dos bancos que usam os disk groups
-- Em cada instância de banco que usa os disk groups
SELECT banner_full FROM v$version;Regra: O
compatible.asmnão pode ser maior que a versão do Grid Infrastructure instalado. Ocompatible.rdbmsnão pode ser maior que a versão do RDBMS mais antigo que acessa o disk group.
Solução
Passo 1 — Determinar a versão mínima necessária
Identifique qual operação você quer executar e qual compatible.asm ela exige (veja a tabela acima).
Para a maioria dos ambientes modernos (Grid 19c), definir compatible.asm como 19.0.0.0.0 habilita todas as features. Mas nem sempre é a melhor escolha — veja o alerta abaixo.
⚠ ALERTA CRÍTICO: A alteração é IRREVERSÍVEL
Uma vez que você aumenta o
compatible.asmde um disk group, NÃO é possível voltar para uma versão anterior. Essa é uma operação sem rollback. Se depois você precisar acessar o disk group com uma versão mais antiga do Grid, não será possível.
Antes de alterar, confirme:
- Todos os nós do cluster têm a versão do Grid >= a compatibilidade que você vai definir
- Nenhum plano de downgrade está previsto para o Grid Infrastructure
- Backup atualizado do ambiente está disponível
- Em ambientes RAC, todos os nós devem estar com o Grid na mesma versão ou superior
Passo 2 — Alterar a compatibilidade
Para um disk group individual:
ALTER DISKGROUP DATA SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';Para todos os disk groups de uma vez (gerar os comandos automaticamente):
SELECT 'ALTER DISKGROUP ' || name ||
' SET ATTRIBUTE ''compatible.asm'' = ''19.0.0.0.0'';'
FROM v$asm_diskgroup;Saída:
ALTER DISKGROUP DATA SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';
ALTER DISKGROUP REDO SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';
ALTER DISKGROUP ARCHIVE SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';Execute cada comando individualmente para acompanhar:
ALTER DISKGROUP DATA SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';
-- Diskgroup altered.
ALTER DISKGROUP REDO SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';
-- Diskgroup altered.
ALTER DISKGROUP ARCHIVE SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0';
-- Diskgroup altered.Passo 3 — Atualizar também o compatible.rdbms (se necessário)
Se você também precisa de features que exigem compatible.rdbms mais alto:
SELECT 'ALTER DISKGROUP ' || name ||
' SET ATTRIBUTE ''compatible.rdbms'' = ''19.0.0.0.0'';'
FROM v$asm_diskgroup;Cuidado: O
compatible.rdbmsdeve ser menor ou igual à versão do banco de dados mais antigo que acessa os disk groups. Se você tem um banco 12c acessando o mesmo disk group, não coloquecompatible.rdbmsem19.0.0.0.0.
Passo 4 — Validar
SELECT group_number, name,
compatibility AS asm_compat,
database_compatibility AS rdbms_compat
FROM v$asm_diskgroup
ORDER BY group_number;As versões devem refletir os novos valores.
Passo 5 — Executar a operação original
-- Agora deve funcionar sem erro
CREATE SPFILE = '+DATA/ASM/spfileASM.ora' FROM PFILE;
-- File created.Checklist Rápido
-- 1. Verificar compatibilidade atual
SELECT name, compatibility, database_compatibility FROM v$asm_diskgroup;
-- 2. Verificar versão do Grid
-- (no shell) $GRID_HOME/bin/crsctl query has releaseversion
-- 3. Verificar versão do RDBMS mais antigo que acessa os disk groups
SELECT banner_full FROM v$version;
-- 4. Alterar (IRREVERSÍVEL!)
ALTER DISKGROUP <nome> SET ATTRIBUTE 'compatible.asm' = '<versão>';
-- 5. Validar
SELECT name, compatibility, database_compatibility FROM v$asm_diskgroup;Conclusão
O erro ORA-15221 aparece quando você tenta usar uma feature do ASM que exige uma versão de compatibilidade maior do que a configurada no disk group. É especialmente comum em ambientes que foram migrados de versões antigas (10g, 11g) para Grid 19c sem atualizar os atributos de compatibilidade.
A correção é simples — um ALTER DISKGROUP resolve. Mas o ponto crítico é:
- Entender que a alteração de
compatible.asmé irreversível - Verificar que todos os nós do cluster têm o Grid na versão correta
- Verificar que o
compatible.rdbmsnão vai excluir bancos mais antigos que acessam os disk groups - Ter backup antes de alterar
- Alterar e validar
Na dúvida, altere para a versão mínima necessária para a operação que você precisa — não precisa ir para a versão máxima se não for usar as features mais recentes.
Referências:
