- This topic has 1 reply, 2 voices, and was last updated 7 years, 3 months ago by José Laurindo Chiappa.
-
AuthorPosts
-
26 de julho de 2017 at 5:05 pm #108875airoospParticipant
Bom dia,
No banco 10g há views DBA_SCHEDULER … para obter informações sobre os jobs, só não consegui saber a data de quando um job falhou.
Por exemplo o job X é executado a cada 3 horas, sendo que o campo failed_count tem o valor 3
Alguém tem alguma dica/sugestão para encontrar essa informação?
Obrigado.
Airton
26 de julho de 2017 at 9:24 pm #108878José Laurindo ChiappaModeratorOi : é bem tranquilo isso se vc usa o JOB SCHEDULER, essa é uma das vantagens principais dele sobre os antigos JOBs disparados por JOB QUEUE tradicional via DBMS_JOB : o scheduler de jobs automagicamente já te loga muita informação, tanto nos sucessos quanto nas falhas….
Veja o exemplo de um job meu que deu falha :select LOG_ID, LOG_DATE, OPERATION, STATUS, ADDITIONAL_INFO from DBA_SCHEDULER_JOB_LOG where job_name = ‘EXEC_ATUALIZA_WEB’ and status ‘SUCCEEDED’;
LOG_ID LOG_DATE OPERATION STATUS ADDITIONAL_INFO
90777 26/06/17 13:14:13,388000000 -03:00 RUN STOPPED REASON="ORA-01014: ORACLE shutdown in progress"
Veja que já temos o código de erro ORA-xxx inclusive, MAS não só, a própria Execução em si foi logada :
select * from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name = ‘EXEC_ATUALIZA_WEB’ and status ‘SUCCEEDED’
LOG_ID LOG_DATE OWNER JOB_NAME JOB_SUBNAME STATUS ERROR# REQ_START_DATE ACTUAL_START_DATE RUN_DURATION INSTANCE_ID SESSION_ID SLAVE_PID CPU_USED
ADDITIONAL_INFO
90777 26/06/17 13:14:13,451000000 -03:00 ABACO EXEC_ATUALIZA_WEB STOPPED 1014 26/06/17 13:00:00,600000000 -03:00 26/06/17 13:00:00,696000000 -03:00 +00 00:14:12.000000 1 +00 00:00:00.000000
ORA-01014: encerramento do ORACLE em andamento
==> OU SEJA, isso não só responde a sua pergunta de quando deu erro mas também nos diz por quanto tempo o job estava executando quando deu o erro, a Causa do erro … Blz ?
Há porém um detalhe *** CRUCIAL *** aqui, que TEM que ser dito : obviamente RIGOROSAMENTE NADA impede de vc ter jobs que disparam a cada poucos minutos, então potencialmente esses logs de jobs podem crescer rapidamente e violentamente : sendo assim, o RDBMS Oracle ***** NÃO MANTÉM ****** esses logs eternamente, há um ROTATE automático…. Veja ainda o mesmo exemplo no meu caso :
select JOB_TYPE, JOB_ACTION, START_DATE, LAST_START_DATE, REPEAT_INTERVAL, ENABLED, RUN_COUNT, FAILURE_COUNT from DBA_SCHEDULER_JOBS where job_name = ‘EXEC_ATUALIZA_WEB’;
JOB_TYPE
JOB_ACTION
START_DATE LAST_START_DATE
REPEAT_INTERVAL
ENABL RUN_COUNT FAILURE_COUNT
PLSQL_BLOCK
BEGIN PR_WEB_ATUALIZA(‘P’); END;
19/04/17 14:47:19,019000000 -03:00 26/07/17 14:00:00,101000000 -03:00
FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI, SAT, SUN; BYHOUR=7,8,9,10,11,13,14,15,16,17,19, 21, 22, 23; BYMINUTE=0; BYSECOND=0;
TRUE 888 4==> Veja que esse job já teve no passado ** 4 ** falhas (sim, as colunas de FAILURE e RUN são ** cumulativas **), mas só uma falha tá registrada nos logs.. Por que ? Porque essas falhas outras aconteceram lá em abril e maio, quando nós tínhamos na ocasião uma falha intermitente de rede (esse meu job atualiza dados pela rede), os logs correspondentes já foram limpos pelo RDBMS…
PROVANDO isso, veja na consulta última acima que esse meu job foi criado em 19/04/17 14:47:19 e está Ativo desde então MAS só tenho logs pras datas mais ou menos dos últimos 30 dias :select min(log_date), max(log_date) from DBA_SCHEDULER_JOB_LOG where job_name = ‘EXEC_ATUALIZA_WEB’ ;
MIN(LOG_DATE) MAX(LOG_DATE)
26/06/17 07:18:31,087000000 -03:00 26/07/17 14:10:01,981000000 -03:00
======>>>>> É POR ISSO que você *** TEM *** que analisar logs DIARIAMENTE, pra ‘pegar’ o erro o mais breve possível : se vc moscou e não fez isso, há Boas Chances das evidências/logs já terem ido embora, blz ??
[]s
Chiappa
-
AuthorPosts
- You must be logged in to reply to this topic.