Hoje, um artigo simples, mas útil no OEM 13c temos o sistema de agendamento de tarefas muito útil.
No entanto, como podemos ver na imagem abaixo, quando temos vários erros, é difícil limpar os job’s usando a interface da Web ou EMCLI.
O verbo EMCLI “get_jobs” relata todas as execuções dos trabalhos, e “delete job” pode excluir o trabalho e todas as suas execuções, mas não é possível excluir uma execução específica de uma tarefa.
Por exemplo, se você deseja excluir centenas de execuções “com falha” (ou “ignoradas”) de um job, a EMCLI não o ajudará e fazê-lo através da interface da web e consumirá muito tempo.
Podemos resolver isso facilmente com um script PL / SQL para limpar os job’s.
Conecte-se ao sqlplus com a conta sysman:
[oracle@dbadutra:/home/oracle] sqlplus sysman@OEM13c SQL*Plus: Release 19.0.0.0.0 – Production on Fri 28 08:15:03 2020 Version 19.3.0.0.0 Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production Version 19.3.0.0.0 SQL> BEGIN FOR C IN (SELECT SCHEDULED_TIME, JOB_ID FROM MGMT$JOB_EXECUTION_HISTORY WHERE JOB_OWNER = ‘SYSMAN’ AND JOB_ID IN (SELECT DISTINCT(JOB_ID) FROM MGMT$JOB_EXECUTION_HISTORY WHERE STATUS=’Error’ or STATUS=’Failed’) AND STATUS = ‘Error’ or STATUS=’Failed’) LOOP EM_JOB_OPS.DELETE_JOB_RUN(C.JOB_ID,C.SCHEDULED_TIME); END LOOP; COMMIT; END;
Agora vamos lá e os job’s estão OK.
Espero ter ajudado com essa dica
Disclaimer: “The postings on this site are my own and don’t necessarily represent my actual employer positions, strategies or opinions. The information here was edited to be useful for general purpose, specific data and identifications were removed to allow reach the generic audience and to be useful for the community.”