DBAtlas · Atlas de operações de banco de dados

Definir compatibility level / versão de recursos

Oracle

-- Raise the COMPATIBLE initialization parameter (irreversible!):
ALTER SYSTEM SET COMPATIBLE = '19.0.0' SCOPE=SPFILE;
-- Then restart the instance. To see the current value:
SHOW PARAMETER compatible;

O parâmetro COMPATIBLE determina quais recursos e formatos de arquivo de versão estão habilitados. Depois de elevado e com a instância reiniciada, NÃO PODE SER REVERTIDO (o downgrade fica bloqueado); por isso, eleve-o gradualmente até confirmar o sucesso do upgrade.

PostgreSQL

# Not applicable: PostgreSQL has no database compatibility level.
# If legacy behavior is needed, set the relevant GUCs (e.g. SET standard_conforming_strings=off)
# or manage the major migration with dump/restore.

O PostgreSQL não tem um conceito de 'compatibility level' como o SQL Server/Oracle; o comportamento da versão está ligado diretamente à versão do binário. A migração entre versões é feita com pg_dump/pg_restore ou pg_upgrade.

MySQL

# Not applicable: MySQL has no configurable database compatibility level.
# Behavioral differences are managed with sql_mode:
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

O MySQL não tem compatibility level baseado em versão; o comportamento SQL depende principalmente da versão do binário e da configuração de sql_mode. Ajuste o sql_mode para preservar o comportamento de aplicações legadas.

SQL Server

-- Set the database compatibility level (e.g. SQL Server 2022 = 160):
ALTER DATABASE Sales SET COMPATIBILITY_LEVEL = 160;
-- To see the current value:
SELECT name, compatibility_level FROM sys.databases;

COMPATIBILITY_LEVEL determina a qual versão correspondem o comportamento do otimizador de consultas e os recursos da linguagem (150=2019, 160=2022). Após o upgrade da instância, os bancos podem permanecer no nível antigo; recomenda-se elevá-lo gradualmente e monitorar regressões de plano. Pode ser reduzido novamente.

MongoDB

// Set the Feature Compatibility Version (FCV):
db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })
// Read the current value:
db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

O FCV controla quando as alterações de formato de dados persistentes e os novos recursos de uma versão são habilitados. Eleve-o após o upgrade do binário, com o cluster estável; reduzi-lo só é possível se a mesma versão de binário ainda suportar o FCV inferior.

Redis

# Not applicable: Redis has no compatibility level / feature version concept.
# Behavior depends directly on the running binary version.

O Redis não tem compatibility level configurável; o conjunto de recursos depende inteiramente da versão em execução. A compatibilidade é preservada apenas no nível do formato de arquivo RDB/AOF, em direção para frente.

Elasticsearch

# Not applicable: Elasticsearch has no configurable compatibility level.
# An index is tied to the format of the version it was created in; very old indices
# cannot be read in the new version and require a reindex.

O Elasticsearch não tem configuração de compatibility level; cada índice carrega o formato da versão major em que foi criado. Índices criados na versão major anterior podem ser lidos; os mais antigos devem ser movidos para a nova versão com _reindex.

Abrir no DBAtlas →