IBM Maximo: SQL Queries - CRONTASKS & ESCALATIONS

Por padrão, a Crontask executa uma tarefa em um servidor escolhido aleatoriamente no cluster MXServerCRONnn (se você criou um cluster de servidores Crontask).

As seguintes propriedades controlam onde executar as crontasks:


 * mxe.crontask.donotrun: define os servidores onde você NÃO deseja que a tarefa cron específica seja executada
 * mxe.crontask.donrun: define os servidores onde você deseja que a tarefa cron específica seja executada

Quando uma instância de tarefa cron deve ser executada (determinada na tabela CRONTASKINSTANCE), todos os servidores Maximo em execução e habilitados tentarão executar a tarefa cron. Apenas um servidor será escolhido para executar a tarefa.

O serviço de tarefas cron atualizará a tabela TASKSCHEDULER com as últimas informações de execução. A partir desse momento, o último servidor em que uma tarefa cron foi executada (conforme determinado pela entrada da tabela TASKSCHEDULER) será escolhido. Se o servidor que executou a tarefa cron pela última vez não estiver em execução, outro servidor em execução e habilitado pegará a tarefa cron usando o mesmo processo lógico que a primeira execução da tarefa cron. A tabela TASKSCHEDULER é sempre atualizada com as últimas informações de execução para que o novo servidor se torne o servidor preferido para a tarefa cron.

Crontask/Escalation pode armazenar os tempos de execução da tarefa. Esse recurso é ativado quando marca a caixa de seleção 'Manter histórico' no crontask. Essas informações estão registradas na tabela CRONTASKHISTORY.

Veja também Setting the cron task clean up interval to keep the Maximum Number of Records for Keep History

= Manutenção da tabela CRONTASKHISTORY =

Crontask/Escalation can store the task execution times. This feature is enable when mark ‘Keep history’ checkbox in crontask. This information is recorded in CRONTASKHISTORY table

I use the following table to define history records and reduce the size of CRONTASKHISTORY table:

= SQL Queries =

Listar o total de crontasks executadas
select count(1) from crontaskhistory

Listar o total de crontasks executadas por Crontask e Instancia
select crontaskname, instancename, count(1) as cnt from crontaskhistory group by crontaskname, instancename order by cnt desc

Listar o total de crontasks executadas por Ano
select to_char(endtime,'YYYY') as yr, count(1) as cnt from crontaskhistory group by to_char(endtime,'YYYY') order by to_char(endtime,'YYYY') desc

Com essa informações podemos melhorar o cleanup da tabela CRONTASKHISTORY. Basta desmarcar a opção Manter Histórico.

Maximo CronTask Monitor SQL
From Maximo CronTask Monitor SQL

select c.crontaskname, c.instancename, h.servername, c.schedule, h.activity, h.starttime, h.endtime, case --Tasks scheduled to run in Seconds. --Status Logic : Starttime > Sysdate - Schedule in Secs - 5 seconds buffer time when instr(c.schedule,'s') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(sysdate -numtodsinterval(substr(c.schedule,0,instr(c.schedule,'s')-1),'second'),'DD/MM/YYYY HH24:MI:SS')-interval '5' second then 1

--Tasks scheduled to run in Minutes. --Status Logic : Starttime > Sysdate - Schedule in Minutes - 15 seconds buffer time when instr(c.schedule,'m') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(sysdate -numtodsinterval(substr(c.schedule,0,instr(c.schedule,'m')-1),'minute'),'DD/MM/YYYY HH24:MI:SS')-interval '15' second then 1

--Tasks scheduled to run in Hours. --Status Logic : Starttime > Sysdate - Schedule in Hours - 15 minutes buffer time when instr(c.schedule,'h') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(sysdate -numtodsinterval(substr(c.schedule,0,instr(c.schedule,'h')-1),'hour'),'DD/MM/YYYY HH24:MI:SS')-interval '15' minute then 1

--Tasks scheduled to run in Days. --Status Logic : Starttime > Sysdate - Schedule in Days - 2 hours buffer time when instr(c.schedule,'d') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(sysdate -numtodsinterval(substr(c.schedule,0,instr(c.schedule,'d')-1),'day'),'DD/MM/YYYY HH24:MI:SS')-interval '2' hour then 1

--Tasks scheduled to run in Weeks. --Status Logic : Starttime > Sysdate - (Schedule in Weeks)*7 - 4 hours buffer time when instr(c.schedule,'w') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(sysdate -numtodsinterval(substr(c.schedule,0,instr(c.schedule,'w')-1)*7,'day'),'DD/MM/YYYY HH24:MI:SS')-interval '4' hour then 1

--Tasks scheduled to run in Months. --Status Logic : Starttime > Sysdate - Schedule in Months - 4 hours buffer time when instr(c.schedule,'M') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(add_months(sysdate,- to_number(substr(c.schedule,0,instr(c.schedule,'M')-1))) - interval '4' hour,'DD/MM/YYYY HH24:MI:SS') then 1

--Tasks scheduled to run in Years. --Status Logic : Starttime > Sysdate - (Schedule in Years)*12 - 4 hours buffer time when instr(c.schedule,'y') > 0 and to_date(h.starttime,'DD/MM/YYYY HH24:MI:SS') > to_date(add_months(sysdate,- to_number(substr(c.schedule,0,instr(c.schedule,'y')-1)*12)) - interval '4' hour,'DD/MM/YYYY HH24:MI:SS') then 1

else 0

end as status from crontaskhistory h, crontaskinstance c where c.crontaskname =h.crontaskname and c.instancename = h.instancename and c.active=1 and h.activity = 'ACTION' and (h.starttime, h.instancename) = (select max(starttime), instancename from crontaskhistory where instancename = c.instancename and activity = 'ACTION' group by instancename) order by 6 desc, 4

Listar as crontasks executados com maior tempo de duracao nos últimos 30 dias
select crontaskname, instancename, servername, (endtime-starttime)*24*60*60 exec_time, starttime from crontaskhistory where activity='ACTION' and starttime > sysdate - 30 order by exec_time desc

Listar as crontasks executados por hora
select extract(hour from (cast(starttime as timestamp))) exec_hour, round(sum(endtime-starttime)*24*60*60,3) exec_time from crontaskhistory where activity='ACTION' and starttime > sysdate - 30 group by extract(hour from (cast(starttime as timestamp))) order by extract(hour from (cast(starttime as timestamp)))

= Ver também =


 * Artigos sobre IBM Maximo
 * Mais Artigos sobre Cloud / WebDev / Tecnologias