Pular para o conteúdo
Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #108875
    Avatar de airoospairoosp
    Participant

      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

      #108878
      Avatar photoJosé Laurindo Chiappa
      Moderator

        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

      Viewing 2 posts - 1 through 2 (of 2 total)
      • You must be logged in to reply to this topic.
      plugins premium WordPress