Que fatores devo considerar ao fazer uma atualização de versão principal no Amazon RDS for Oracle?

Data da última atualização: 28/9/2021

Eu tenho uma instância de banco de dados Amazon Relational Database Service (Amazon RDS) executando Oracle. Quero saber os fatores que devo considerar ao realizar uma atualização de versão principal.

Descrição breve

Quando o Amazon RDS começa a oferecer suporte a uma nova versão do banco de dados Oracle, você pode atualizar sua versão existente do banco de dados Oracle escolhendo uma versão superior e, em seguida, realizando uma atualização de versão principal. Uma versão principal pode incluir atualizações, novos recursos, correções de segurança, aprimoramentos do otimizador e melhorias de performance. É prática recomendada testar a funcionalidade, a compatibilidade e a performance da aplicação em relação à nova versão do banco de dados Oracle em ambientes que não são de produção antes de atualizar o banco de dados de produção.

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.

Resolução

Antes da atualização

Alguns aspectos que você deve ter em mente antes de realizar a atualização da versão principal são:

Caminho da atualização: verifique o suporte do caminho da atualização da versão atual do banco de dados Oracle para a versão principal pretendida do banco de dados Oracle. Você pode verificar os caminhos de atualização válidos executando o seguinte comando da AWS Command Line Interface (AWS CLI).

Para Windows:

aws rds describe-db-engine-versions --engine engine-edition --engine-version current-engine-version --query "DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion"

Para Linux, macOS ou Unix:

aws rds describe-db-engine-versions --engine engine-edition --engine-version current-engine-version --query 'DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion'

Certifique-se de substituir os seguintes valores nos comandos anteriores:

  • engine-edition com a edição do mecanismo de banco de dados.
  • current-engine-version com a versão atual do mecanismo de banco de dados.

Suponha que você tenha uma instância do Amazon RDS for Oracle 12.1.0.2.v10. Para saber mais sobre todas as versões principais válidas para as quais você pode atualizar suas instâncias do RDS for Oracle, execute o comando a seguir.

Para Windows:

aws rds describe-db-engine-versions --engine oracle-ee --engine-version 12.1.0.2.v10 --query "DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion"

Para Linux, macOS ou Unix:

aws rds describe-db-engine-versions --engine oracle-ee --engine-version 12.1.0.2.v10 --query 'DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion'

Classe da instância: verifique se a classe de instância atual é compatível com a versão principal que você vai atualizar. Para obter informações sobre as classes de instância compatíveis com o RDS for Oracle, consulte Classes de instância de banco de dados Oracle com suporte. Você também pode verificar a classe de instância compatível executando o comando a seguir da AWS CLI.

Para Windows:

aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query "OrderableDBInstanceOptions[*].DBInstanceClass"

Para Linux, macOS ou Unix:

aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query 'OrderableDBInstanceOptions[*].DBInstanceClass'

Certifique-se de substituir os seguintes valores nos comandos anteriores:

  • engine-edition com a edição do mecanismo de banco de dados.
  • new-engine-version com a nova versão para a qual você planeja atualizar.
  • example-region com a região que você está usando.

Por exemplo, suponha que você queira atualizar para uma instância do RDS for Oracle 12.2.0.1.ru-2020-10.r1. Para saber mais sobre as classes de instância que suportam a versão principal em uma região específica, execute o seguinte comando:

aws rds describe-orderable-db-instance-options --engine oracle-ee --engine-version 12.2.0.1.ru-2020-10.rur-2020-10.r1 --region us-east-1 --query "OrderableDBInstanceOptions[*].DBInstanceClass"

Certifique-se de substituir us-east-1 no comando pela região de sua escolha.

Compatibilidade do cliente: verifique se as versões do cliente/driver Oracle são compatíveis com a nova versão principal. Verifique se os drivers devem ser atualizados junto com a atualização da versão principal. Para obter informações sobre interoperabilidade, consulte a documentação da Oracle para Cliente de banco de dados Oracle e Interoperabilidade de banco de dados Oracle.

Método de atualização: você pode executar a atualização da versão principal de uma das seguintes maneiras:

  • Modifique a instância do RDS e aplique a nova versão principal.
    Observação: esse método envolve algum tempo de inatividade.
  • Crie uma nova instância do RDS com a versão principal e migre os dados usando o AWS Data Migration Service (AWS DMS).
    Observação: o AWS DMS usa uma abordagem minimalista para migrar dados e cria apenas os objetos necessários para migrar os dados com eficiência. O AWS DMS cria tabelas, chaves primárias e, em alguns casos, índices exclusivos, mas não cria nenhum outro objeto que não seja necessário para migrar com eficiência os dados da origem. Por exemplo, o AWS DMS não cria índices secundários, restrições de chave não primária ou padrões de dados. Para obter mais informações, consulte Visão de alto nível do AWS DMS.

Escolha um desses métodos para realizar a atualização com base no seu caso de uso.

Grupo de parâmetros personalizado: se sua instância tiver um grupo de parâmetros personalizado, crie um novo grupo de parâmetros para a nova versão principal e defina os parâmetros personalizados adequadamente. Para identificar os parâmetros personalizados que você usa atualmente, compare o grupo de parâmetros personalizados existente com o grupo de parâmetros padrão da versão atual.

Grupo de opções personalizadas: se a instância tiver um grupo de opções personalizadas, crie um novo grupo de opções personalizadas para a versão principal. Se você tiver opções persistentes ou permanentes, como fuso horário ou Oracle Transparent Data Encryption, em seu grupo de opções, as mesmas opções persistentes ou permanentes deverão ser incluídas no novo grupo de opções personalizadas. Para atualizar a versão do arquivo de fuso horário para a versão mais recente disponível na instância do banco de dados junto com a atualização da versão principal, adicione a opção TIMEZONE_FILE_AUTOUPGRADE ao novo grupo de opções personalizadas.

Estatísticas de dicionário: a coleta de estatísticas de dicionário e estatísticas de objetos fixos pode reduzir o tempo de inatividade da instância durante a atualização. Você pode coletar as estatísticas executando as seguintes consultas:

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

Objetos inválidos: verifique e certifique-se de que seu banco de dados não contenha objetos inválidos. Você pode fazer isso executando a seguinte consulta:

SQL> SELECT OWNER, STATUS, COUNT (*) FROM DBA_OBJECTS GROUP BY OWNER, STATUS;

Se objetos inválidos forem encontrados, verifique qual objeto é inválido executando a seguinte consulta:

SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS != 'VALID';

Você pode compilar todos os objetos inválidos no esquema executando a seguinte consulta:

SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);

Certifique-se de substituir ADMIN na consulta pelo nome do seu esquema.

Trilhas de auditoria: certifique-se de que as trilhas de auditoria não sejam longas. Verificações pré-atualização e atualizações podem demorar mais com longas trilhas de auditoria. Para truncar trilhas de auditoria , consulte Como trunco a tabela sys.aud$ na minha instância de banco de dados Amazon RDS que executa o Oracle? Você também pode usar o procedimento DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL para excluir as trilhas de auditoria.

Senhas: verifique se você não está usando uma versão mais antiga das senhas executando a seguinte consulta:

SQL> SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

Com base nos resultados da consulta, se você achar que um usuário usa apenas a versão 10g das senhas, verifique se o usuário pode ser recriado com uma versão mais recente da senha. Se você não conseguir corrigir a versão da senha do usuário, defina o parâmetro SQLNET.ALLOWED_LOGON_VERSION_SERVER adequadamente para evitar erros de conexão.

Quando o parâmetro sqlnetora.sqlnet.allowed_logon_version_server é definido em uma instância do RDS for Oracle, o parâmetro denota a versão mínima do protocolo de autenticação permitida ao se conectar ao servidor de banco de dados. Uma configuração de 8 permite a maioria das versões de senha e permite qualquer combinação dos valores DBA_USERS.PASSWORD_VERSIONS 10G, 11G e 12C.

Quando o parâmetro sqlnetora.sqlnet.allowed_logon_version_client é definido em uma instância do RDS for Oracle, o parâmetro denota o protocolo de autenticação mínimo a ser usado quando o banco de dados atua como o cliente.

Para obter mais informações, consulte a documentação da Oracle para Verificação de contas usando a versão de senha que não diferencia maiúsculas de minúsculas.

DBMS_JOB: o pacote DBMS_JOB foi descontinuado com a atualização do banco de dados Oracle 12c Release 2. Ao atualizar para a versão 19c, é prática recomendada converter todos os trabalhos DBMS_JOB em trabalhos DBMS_SCHEDULER antes da atualização. Durante a atualização, o Oracle converte os jobs DBMS_JOB em jobs DBMS_SCHEDULER. Para obter mais informações, consulte a documentação da Oracle para Suporte para DBMS_JOB. Se você tiver um grande número de entradas DBMS_JOB, a atualização poderá demorar mais.

FreeStorageSpace: verifique se a instância não está se aproximando da capacidade de armazenamento. Certifique-se de ter espaço de armazenamento livre suficiente disponível para que a atualização seja concluída com êxito verificando a métrica FreeStorageSpace do CloudWatch. Para obter mais informações, consulte Como posso criar alarmes do CloudWatch para monitorar o espaço de armazenamento livre do Amazon RDS e evitar problemas de armazenamento cheio?

Ações de manutenção: verifique se sua instância tem alguma ação de manutenção pendente no console do Amazon RDS. Essas ações são aplicadas durante a janela de atualização. Para instâncias multi-AZ, se nenhuma atualização do sistema operacional for necessária, as atualizações principal e em espera ocorrerão ao mesmo tempo. Se atualizações do sistema operacional forem necessárias, o Amazon RDS aplicará a atualização conforme descrito em Atualizações do Oracle em uma implantação multi-AZ.

Snapshot manual: Crie um snapshot manual da instância do banco de dados do RDS for Oracle pelos seguintes motivos:

  • O snapshot pode ser usado para reverter para a versão anterior, desde que a versão seja compatível com o Amazon RDS.
  • Um snapshot automatizado geralmente é criado como parte do processo de atualização da versão principal. Como os snapshots do Amazon Elastic Block Store (Amazon EBS) são incrementais, o novo snapshot tem menos alterações para fazer backup. Portanto, a criação de um snapshot manual pode reduzir o tempo necessário para criar o snapshot automatizado e o tempo total gasto na conclusão da atualização.

Configuração atual: execute a seguinte consulta para exibir a configuração atual da instância e salvar a saída. A saída fornece informações sobre o grupo de opções, o grupo de parâmetros, os grupos de segurança e as tags anexadas à instância atual do RDS for Oracle. Para reverter e executar uma restauração a partir de um snapshot ou executar uma recuperação em um ponto anterior no tempo, use as informações recuperadas deste comando:

> aws rds describe-db-instances --db-instance-identifier example-instance-name --region example-region

Certifique-se de substituir os seguintes valores na consulta:

  • example-instance-name com o nome da instância do RDS for Oracle.
  • example-region com a região de sua escolha.

Undo tablespace: certifique-se de que Undo Tablespace (Desfazer tablespace) esteja definido com o tamanho certo para evitar operações de redimensionamento durante a atualização.

Acionadores: execute a seguinte consulta para listar seus acionadores de logon, logoff e inicialização:

SQL> SELECT OWNER, TRIGGER_NAME, TRIGGER_TYPE, TRIGGERING_EVENT, TABLE_OWNER, STATUS, ACTION_TYPE, TRIGGER_BODY FROM DBA_TRIGGERS WHERE TRIGGERING_EVENT LIKE '%LOGO%' or TRIGGERING_EVENT LIKE '%STARTUP%';

Verifique se os acionadores são válidos e funcionais. Mesmo que o acionador seja válido e compile bem, o acionador pode gerar um erro no tempo de execução e interferir nas reinicializações do banco de dados. Verifique se há algum acionador de logon, logoff ou inicialização que gere um erro quando eles são executados. Você pode desativar esses acionadores executando as seguintes consultas:

SQL> ALTER TRIGGER EXAMPLE-OWNER.EXAMPLE-TRIGGER DISABLE;

Certifique-se de substituir os seguintes valores na consulta:

  • EXAMPLE-OWNER com o nome do esquema em que você criou o acionador.
  • EXAMPLE-TRIGGER com o nome do acionador.

Por exemplo:

--To disable AUDIT_USERS trigger in MYADMIN schema
SQL> ALTER TRIGGER MYADMIN.AUDIT_USERS DISABLE;

Durante a atualização

Depois de iniciar a atualização, você pode monitorar o progresso da atualização verificando o seguinte no console do Amazon RDS:

  • Registro de alertas localizado na guia Logs & events (Logs e eventos) da instância
  • Recent events (Eventos recentes) localizados na guia Logs & events (Logs e eventos) da instância

Após a atualização

  • Execute as seguintes consultas para verificar a versão do patch depois de se conectar ao banco de dados:
SQL> SELECT * FROM sys.registry$history;
SQL> SELECT INSTALL_ID,PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION FROM DBA_REGISTRY_SQLPATCH;
  • O Amazon RDS atualiza os arquivos lsinventory-dbv.txt dentro de uma hora após a aplicação do patch. Você pode baixar esse arquivo na guia Logs & events (Logs e eventos) da sua instância no console do Amazon RDS. Verifique os patches aplicados lendo o arquivo Isinventory-dbv.txt.
  • Execute as seguintes consultas para coletar estatísticas de dicionário e estatísticas de objetos fixos:
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
  • Execute a seguinte consulta para verificar se o número de objetos válidos e inválidos corresponde àqueles antes da atualização:
SQL> SELECT OWNER, STATUS, COUNT(*) from DBA_OBJECTS GROUP BY OWNER, STATUS;
  • Execute a seguinte consulta para compilar todos os objetos inválidos no esquema:
SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);
  • Se você tiver problemas de performance de consulta após a atualização devido aos recursos do otimizador da nova versão principal, considere usar o parâmetro OPTIMIZER_FEATURES_ENABLE. Você pode alterar esse parâmetro no nível da sessão e no nível do sistema. Por exemplo, se você atualizar seu banco de dados da versão 18.1 para a versão 19.1, mas quiser manter o comportamento do otimizador da versão 18.1, poderá fazê-lo definindo o valor do parâmetro OPTIMIZER_FEATURES_ENABLE como 18.1.0.

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?