Pular para o conteúdo

Fóruns Banco de dados Oracle Bco 10g saber a data que um job falhou DBA_SCHEDUL Bco 10g saber a data que um job falhou DBA_SCHEDUL

#108878
Avatar photoJosé Laurindo Chiappa
Moderador

    Oi : é 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