TECNOLOGIA - Performance/Lentidão/Travamentos - Quais as configurações adequadas para utilização do sistema em base de dados Oracle
Dúvida
Quais as configurações adequadas para utilização do sistema em base de dados Oracle?
Solução
Todas as configurações e recomendações para utilização dos sistemas Senior de Tecnologia G5/G6 podem ser encontradas na Documentação da Senior, especificamente na parte de Tecnologia (Clique aqui para acessar a documentação).
Neste artigo você encontrará orientações abrangentes sobre o configurações adequadas para utilização do sistema em base de dados Oracle, visando melhorias de performance. Em diversos momentos você poderá ser redirecionado para execução de processos que já estão descritos na Documentação da Tecnologia.
Importante
Verifique configurações pertinentes a comunicação com banco de dados também descritas no artigo ERP - Performance/Lentidão/Travamentos - Quais são as orientações gerais para otimização de Performance (configurações dentro do SeniorConfigCenter).
Atenção
- As alterações de eventuais parâmetros do banco de dados descritas neste artigo devem ser executada com acompanhamento do DBA da sua empresa e a recomendação é que essas alterações sejam realizadas em ambiente de Homologação para prévia validação e que sejam replicadas em ambiente de Produção mediante validação de janela de alteração adequada com o seu ambiente/volume de dados. As alterações podem ser realizadas em momentos separados, ou seja, não é obrigatório que todos os parâmetros que não estejam corretos sejam alterados ao mesmo tempo;
- É obrigatória a execução de backup da base de dados pelo DBA antes da execução de qualquer processo descrito neste artigo.
1. Parâmetros optimizer_index_cost_adj e optimizer_index_caching
Para que verificar como estão definidos os parâmetro optimizer_index_cost_adj e optimizer_index_caching você deve realizar o seguinte comando na base de dados do sistema:
SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME IN ('OPTIMIZER_INDEX_COST_ADJ','OPTIMIZER_INDEX_CACHING');
Importante
Pode ser necessário executar o comando passando o nome dos parâmetros em letra minúscula, de acordo com o padrão do seu banco de dados.
O resultado deste select deverá ser
- optimizer_index_cost_adj = 30
- optimizer_index_caching = 70
Abaixo exemplo do retorno do comando:
Se o retorno não for igual o destacado acima, acione o DBA da sua empresa para realizar os ajustes necessários.
Observação
Caso haja alguma restrição de alteração desses parâmetros no banco de dados como um todo, você poderá parametrizar a alteração desses parâmetro em cada sessão que o sistema abrir com o banco de dados. Para isso, você poderá parametrizar 'Comandos SQL de inicialização' no SeniorConfigCenter conforme exemplo abaixo:
O seu DBA poderá indicar os comandos no padrão ALTER SESSION para que, a cada vez que o sistema abra uma conexão com o banco, ele faça a alteração dos parâmetros indicados em tempo de execução da sessão aberta.
2. Coleta de Estatísticas
A coleta de estatísticas é um processo regular que deve ser executado no banco de dados.
Esse processo deve ser configurado pelo DBA da sua empresa, seguindo as recomendações da Senior.
2.1. Para verificar quando a rotina de coleta de estatísticas foi executada última vez (por tabela da base de dados), execute o comando abaixo:
SELECT TRUNC(LAST_ANALYZED) "COLETA", COUNT(*) "TABELAS ANALISADAS" FROM USER_TABLES GROUP BY TRUNC(LAST_ANALYZED) ORDER BY COLETA
O resultado do comando será no padrão abaixo:
No exemplo descrito acima, é possível perceber que na base de dados onde o comando foi executado existem 2403 tabelas em que a coleta de estatísticas foi realizada a última vez em 18/10/2021.
Conforme consta na Documentação citado acima, seria um cenário onde a coleta deveria ser realizada, já que a recomendação é que a coleta ocorra pelo menos uma vez por semana.
Atenação
É OBRIGATÓRIO que a coleta de estatísticas seja realizada da forma adequada conforme a orientação da Senior nos tópicos indicados abaixo (2.2 e 2.2.1). Caso a coleta de estatísticas não esteja sendo realizada adequadamente conforme essa orientação, apesar de ser indicado que a coleta está sendo realizada, ela não tem o efeito adequado nos processos do sistema. A verificação/validação da coleta de forma adequada deve ser realizada pelo DBA da sua empresa.
2.2. Para executar a rotina de coleta de estatísticas, entre em contato com o DBA da sua empresa. A execução deve seguir o procedimento homologado pela Senior para coleta de estatísticas em banco de dados Oracle está devidamente documentado. Clique aqui para acessar a documentação.
2.2.1. A documentação acima indica um processo de coleta de estatísticas diferenciado para tabelas que possuem mais de 10 milhões de registros. Para encontrar as tabelas que tem essa quantidade de registros, execute o comando abaixo:
SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER='NOME_BASE' AND NUM_ROWS > 10000000;
Importante
Em casos de tratativas de situações relacionadas a Performance/lentidão/Travamentos, você deve sempre solicitar evidência ao seu DBA de que a rotina de coleta de estatísticas está sendo efetuada semanalmente e enviar essas evidências sempre que solicitado pelo Suporte da Senior.
3. Parâmetro optimizer_adaptive_plans
O parâmetro do Oracle optimizer_adaptive_plans define que o Oracle utilizará planos de execução de comandos adaptativos a cada execução, não havendo garantia de que um mesmo comando utilizará o mesmo plano de execução toda vez que ele for executado.
A ativação deste parâmetro pode impactar negativamente a performance de várias rotinas, uma vez que nem sempre os índices nativos e/ou personalizados da base de dados serão utilizados para execução dos comandos na base de dados.
Desta forma, execute o comando abaixo para verificar se este parâmetro está ativo:
SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME IN ('OPTIMIZER_ADAPTIVE_PLANS');
Importante
Pode ser necessário executar o comando passando o nome dos parâmetros em letra minúscula, de acordo com o padrão do seu banco de dados.
O resultado deste select será 'FALSE' para indicar que o parâmetro está desativado, ou 'TRUE' para indicar que ele está ativado.
Abaixo exemplo do retorno do comando:
Se o retorno não for igual ao destacado acima ('FALSE'), acione o DBA da sua empresa para validar se há necessidade e mudança do parâmetro. A mudança do parâmetro pode ser necessária se os planos de execução dos comandos mudarem muitas vezes durante a execução dos mesmos comandos, o que pode impactar diretamente na performance do ambiente. Cabe salientar de que é o DBA da sua empresa que deverá acompanhar essa questão e fazer essas análises, para que então haja a tomada de decisão para desativar o parâmetro, caso ele esteja ativado.
Observação
Para mais informações sobre o questões relacionadas a Performance/Lentidão/Travamentos do Gestão Empresarial | ERP, consulte o artigo ERP - Performance/Lentidão/Travamentos - Onde é possível encontrar informações diversas sobre questões relacionadas a Performance/Lentidão/Travamentos (índice).
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.