MigraTI - Soluções em banco de dados

quinta-feira, 20 de março de 2025

[ERROR] : AHF-00074: Required Perl Modules not found : XXXX::XXXX

 Tentando instalar o Autonomous Health Framework recebi este erro:

[root@SRV-TASYPRD backup]# ./ahf_setup -ahf_loc /ahf -data_dir /ahf
AHF Installer for Platform Linux Architecture x86_64
AHF Installation Log : /tmp/ahf_install_251000_1376372_2025_03_20-18_14_20.log
Starting Autonomous Health Framework (AHF) Installation
AHF Version: 25.1.0 Build Date: 202501300345
PERL : /bin/perl
[ERROR] : AHF-00074: Required Perl Modules not found :  Net::Ping



Abri o arquivo de log e observei o erro aqui:

[root@SRV-TASYPRD backup]# vi /tmp/ahf_install_251000_1376


Pelo que observei isso pode ocorrer com qualquer módulo desses, porem basta instala-lo, conforme:

[root@SRV-TASYPRD backup]# yum install perl-Net-Ping

philips-emr-el8

Dependencies resolved.

=======================================================================================================================================================================

 Package                                                     Architecture                                       Version

=======================================================================================================================================================================

Installing:

 perl-Net-Ping                                               noarch                                             2.55-422.el8

Installing dependencies:

 perl-Time-HiRes                                             x86_64                                             4:1.9758-2.el8


Transaction Summary

=======================================================================================================================================================================

Install  2 Packages


Total download size: 163 k

Installed size: 201 k

Is this ok [y/N]: y

Downloading Packages:

(1/2): perl-Time-HiRes-1.9758-2.el8.x86_64.rpm

(2/2): perl-Net-Ping-2.55-422.el8.noarch.rpm

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Total

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :

  Installing       : perl-Time-HiRes-4:1.9758-2.el8.x86_64

  Installing       : perl-Net-Ping-2.55-422.el8.noarch

  Running scriptlet: perl-Net-Ping-2.55-422.el8.noarch

  Verifying        : perl-Net-Ping-2.55-422.el8.noarch

  Verifying        : perl-Time-HiRes-4:1.9758-2.el8.x86_64


Installed:

  perl-Net-Ping-2.55-422.el8.noarch                                                                                  perl-Time-HiRes-4:1.9758-2.el8.x86_64


Complete!

[root@SRV-TASYPRD backup]# ./ahf_setup -ahf_loc /ahf/ -data_dir /ahf/
AHF Installer for Platform Linux Architecture x86_64
AHF Installation Log : /tmp/ahf_install_251000_1383200_2025_03_20-18_21_08.log
Starting Autonomous Health Framework (AHF) Installation
AHF Version: 25.1.0 Build Date: 202501300345
AHF Location : /ahf/oracle.ahf
AHF Data Directory : /ahf/oracle.ahf/data
Do you want to add AHF Notification Email IDs ? [Y]|N : n










segunda-feira, 13 de janeiro de 2025

 

Como Definir o Melhor Fill Factor para Índices no SQL Server

O fill factor é um parâmetro essencial para o desempenho de índices no SQL Server, especialmente quando lidamos com tabelas que passam por atualizações frequentes ou grandes volumes de inserções. Definir o valor correto pode reduzir significativamente a fragmentação, melhorar o desempenho das consultas e otimizar a utilização do armazenamento. Mas como encontrar o valor ideal? Vamos explorar!


O Que É o Fill Factor?

O fill factor define a porcentagem de espaço a ser preenchida nas páginas de dados de um índice durante a sua criação ou reconstrução. Um fill factor de 100% significa que as páginas serão totalmente preenchidas, enquanto um valor menor, como 80%, reserva espaço adicional para futuras inserções e atualizações, reduzindo a fragmentação.


Como Determinar o Melhor Fill Factor?

Determinar o fill factor ideal depende da análise do comportamento de uso dos seus índices e do padrão de alterações na tabela. Aqui estão algumas estratégias e consultas para te ajudar:

1. Análise de Fragmentação Atual

Use a função sys.dm_db_index_physical_stats para avaliar o estado de fragmentação e densidade das páginas dos índices:

SELECT
    OBJECT_NAME(s.object_id) AS TableName,
    i.name AS IndexName,
    s.index_id,
    s.avg_fragmentation_in_percent,
    s.page_count,
    s.avg_page_space_used_in_percent,
    i.fill_factor
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
    ON s.object_id = i.object_id AND s.index_id = i.index_id
WHERE s.avg_fragmentation_in_percent > 10 -- Ajuste conforme necessário
ORDER BY s.avg_fragmentation_in_percent DESC;

Colunas importantes:

  • avg_fragmentation_in_percent: Indica a fragmentação do índice. Valores altos sugerem que o índice não tem espaço suficiente para inserções/atualizações sem reorganizações frequentes.

  • avg_page_space_used_in_percent: Mostra quanto espaço útil está sendo usado nas páginas. Valores baixos indicam que há espaço ocioso ou espaço reservado.

  • fill_factor: Exibe o fill factor configurado atualmente no índice.


2. Identificação de Padrões de Uso do Índice

O comportamento de leitura e escrita no índice é crucial para definir o fill factor.

Consulta para avaliar o uso dos índices:

SELECT
    OBJECT_NAME(s.object_id) AS TableName,
    i.name AS IndexName,
    s.user_seeks,
    s.user_scans,
    s.user_lookups,
    s.user_updates
FROM sys.dm_db_index_usage_stats AS s
JOIN sys.indexes AS i
    ON s.object_id = i.object_id AND s.index_id = i.index_id
WHERE s.database_id = DB_ID()
ORDER BY s.user_updates DESC;

Colunas importantes:

  • user_updates: Contagem de alterações no índice (inserções/atualizações/exclusões). Valores altos sugerem que um fill factor menor pode ser benéfico.

  • user_seeks, user_scans, user_lookups: Indicadores de operações de leitura. Para índices com alta leitura e baixa alteração, um fill factor próximo de 100% é ideal.


3. Experimentação com Diferentes Fill Factors

Uma maneira prática de encontrar o valor ideal é testar diferentes configurações e monitorar o impacto.

Exemplo de ajuste do fill factor:

ALTER INDEX [IndexName] ON [TableName]
REBUILD WITH (FILLFACTOR = 80);

Após o ajuste, acompanhe a fragmentação e o desempenho ao longo do tempo para verificar se o valor atende às suas necessidades.


4. Considerações Gerais para Configurar o Fill Factor

  • Alta alteração (inserções e atualizações frequentes): Use um fill factor menor, como 70-90%, para reduzir reorganizações e fragmentação.

  • Baixa alteração (principalmente leituras): Mantenha o fill factor próximo de 100% para maximizar o uso de espaço e desempenho de leitura.

  • Tabelas muito grandes: Ajuste gradualmente o fill factor e monitore os resultados antes de aplicar alterações amplas.


Conclusão

Embora não exista uma regra universal para determinar o fill factor ideal, a combinação de análise de fragmentação, padrões de uso e experimentação controlada pode ajudar a encontrar o valor perfeito para seu ambiente. Ajustar o fill factor de forma inteligente garante um equilíbrio entre o desempenho e a eficiência do armazenamento.

Se você precisar de ajuda para criar scripts ou monitorar seus índices, deixe um comentário ou entre em contato!