Oracle Scheduler – Parte 8
O Scheduler é uma funcionalidade que simplifica o agendamento de tarefas possibilitando que o DBA defina quando e onde diferentes tarefas irão ocorrer sem intervenção manual. Isto contribui com a redução de custos e problemas associados à execuções manuais.

Este é o oitavo e último artigo de nossa série. Abordaremos desta vez o tema priorização de jobs. Esta técnica permite que jobs tenham sua execução priorizada com base nos grupos consumidores de recursos do banco de dados.

É possível priorizar jobs através da utilização de três objetos Scheduler: job classes, windows e windows group. Esses objetos são utilizados para priorizar os jobs associando-os a grupos de consumidores do gerenciador de recursos do banco de dados. O Resource Manager, por sua vez, controla a quantidade de recursos alocados para estes jobs.


Em que situação o tema é útil
Quando se pretende trabalhar com o Scheduler para criar e executar jobs priorizando-os com base nos grupos consumidores de recursos do banco de dados. É o mesmo que dizer que determinado job terá prioridade de execução e consumo de recursos do banco de dados em relação a outro job dependendo de qual o usuário proprietário do job.

Até agora vimos como trabalhar com o Scheduler no sentido de trabalhar com jobs, mas continua sendo complicado gerenciar o momento em que cada job deve ser executado e, o mais importante, como definir quanto de recurso do banco de dados cada job pode consumir.

Neste artigo será visto como trabalhar com windows que são objetos que permitem definir horários em que os jobs podem ser executados e, caso um job dependente de um primeiro job que não tenha sido concluído dentro da janela especificada, não será executado, pois está fora da janela definida para execução.

Esta é uma prática comum que evita que jobs “pesados” avancem muito no horário prédefinido e acabem impactando nas operações da empresa.

Outra funcionalidade interessante é a possibilidade de agrupamento de janelas de execução de jobs. Assim, ao invés do DBA tentar definir períodos incomuns de execução, simplesmente cria-se janelas simples e agrupa-se de forma coerente. Por exemplo, como você criaria uma janela que contemplasse os períodos de 21:00 de um dia às 6:00 do outro dia e finais de semana completos?

Fica muito mais fácil o DBA criar uma janela chamada NOTURNO, que compreende o horário entre 21:00 e 06:00, e outra janela chamada FIM_SEMANA, que contempla todo o sábado e domingo e, finalmente, criar um agrupamento de janelas com o nome MANUTENCAO que contempla os períodos NOTURNO e FIM_SEMANA.

E finalmente, mas não menos importante, existe também a possibilidade de definir-se percentuais de alocação de recursos do banco de dados (e alguns recursos de hardware, como CPU) para que os jobs não consumam todos os recursos do servidor e façam com que todos os usuários comecem a reclamar de lentidão.

Para isso, o Scheduler está completamente integrado ao Resource Manager para que os recursos sejam devidamente alocados conforme prioridades.

Neste artigo abordaremos a priorização de jobs, que é uma tarefa fundamental para que os jobs mais importantes tenham sua execução garantida e com a quantidade de recursos necessária.

É possível priorizar jobs do Oracle Scheduler através da utilização de três objetos Scheduler: job classes, windows e windows group. Esses objetos são utilizados para priorizar os jobs associando-os a grupos de consumidores do gerenciador de recursos do banco de dados (os Consumer Groups do Resource Manager). O Resource Manager, por sua vez, controla a quantidade de recursos alocados para estes jobs. Além disso, as job classes permitem que se definam prioridades relativas entre um grupo de jobs caso todos os jobs deste grupo possuam níveis de recursos idênticos.

O Oracle Database Resource Manager (Gerenciador de Recursos do Banco de Dados) permite gerenciar várias cargas de trabalho dentro de um banco de dados que estão lutando por recursos do sistema e do banco de dados.

Quando as decisões de alocação de recursos de banco de dados são deixadas para o sistema operacional, pode-se encontrar os seguintes problemas com o gerenciamento de carga de trabalho:

- Sobrecarga excessiva;

- Programação ineficiente;

- Alocação inadequada de recursos;

- Incapacidade de gerenciar recursos específicos do banco de dados como execução paralela e sessões ativas.

O Resource Manager ajuda a resolver esses problemas, permitindo um maior controle do banco de dados sobre como os recursos de hardware são alocados. Em um ambiente com várias sessões de usuários simultâneas que executam tarefas com prioridades diferentes, todas as sessões não devem ser tratadas de forma igual. O Resource Manager permite classificar sessões em grupos com base em atributos de sessão e, em seguida, alocar recursos para os grupos de uma forma que otimiza a utilização do hardware para o seu ambiente de aplicação.

Com o Resource Manager é possível:

- Garantir a determinadas sessões uma quantidade mínima de CPU, independentemente da carga no sistema e o número de usuários;

- Distribuir CPU disponível através da alocação de percentual de tempo de CPU para diferentes usuários e aplicações. Em um Data Warehouse, uma porcentagem maior pode ser dada a aplicações ROLAP (Relational Online Analytical Processing – Processamento Analítico Relacional em Tempo Real) do que para processos executados em lote (batch);

...

Quer ler esse conteúdo completo? Tenha acesso completo