Como criar um Job Scheduler no Oracle 12c

O exemplo 12c Scheduler a Oracle aqui cria um trabalho simples que executa um procedimento armazenado Programming Language / Structured Query Language (PL / SQL). O procedimento seleciona uma contagem do número de usuários no sistema e insere esse número em uma tabela com um timestamp. Ele é executado a cada cinco minutos.

Siga estes passos para agendar uma tarefa pela primeira vez:

  1. Entrar e SQL * Plus como o usuário SYS.

  2. Dê o criador de emprego destina-se a capacidade de criar postos de trabalho:

    Você deve ver o seguinte:

    Grant conseguiu.

    Este exemplo de trabalho é criado e executado por HR.

  3. Vamos HR veja a tabela V $ SESSION:

    Você deve ver o seguinte:

    Grant conseguiu.

    O _ em V_ $ SESSION não é um erro de digitação! V $ SESSION é um sinônimo para V_ $ SESSION. Para a concessão para o trabalho, você tem que dar o nome da visão.

  4. Entrar e SQL * Plus como o criador de emprego e fazer uma tabela para armazenar os dados:

    lt; criar USER_COUNT mesa (NUMBER_OF_USERS NÚMERO (4), TIME_OF_DAY timestamp) TABLESPACE usuários->

    Você vê isso:

    Tabela criado.
  5. Criar um procedimento armazenado:

    lt; CRIAR OU SUBSTITUIR Processo Número insert_user_count ASv_user_count (4) contagem -BEGINSELECT (*) INTO v_user_countFROM v $ sessionWHERE nome de usuário não é nula a inserir user_countVALUES INTO (v_user_count, SYSTIMESTAMP) -commit-END insert_user_count- />

    O procedimento armazenado reúne o número de usuários e insere-los para a mesa com um timestamp. Você deve ver o seguinte:

    Processo criado.
  6. Criar um programa para o trabalho:

    lt; BEGINDBMS_SCHEDULER.CREATE_PROGRAM (program_name => 'PROG_INSERT_USER_COUNT', program_action => 'INSERT_USER_COUNT', program_type => 'STORED_PROCEDURE') - END - />

    Você vê isso:

    Procedimento PL / SQL concluído com êxito.
  7. Ativar o programa:

    Você vê isso:

    Procedimento PL / SQL concluído com êxito.
  8. Criar um cronograma para a execução do trabalho:

    lt; BEGINDBMS_SCHEDULER.CREATE_SCHEDULE (schedule_name => 'my_weekend_5min_schedule', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ = MINUTELY- INTERVALO = 5- BYDAY = SAT, SUN', end_date => SYSTIMESTAMP + INTERVALO '30' dia, os comentários => ' A cada 5 minutos ') - END - />

    Este exemplo de trabalho é executado a cada cinco minutos. Você vê isso:

    Procedimento PL / SQL concluído com êxito.
  9. Criar o seu trabalho com o programa e agendar você definiu:

    lt; BEGINDBMS_SCHEDULER.CREATE_JOB (job_name => 'my_user_count_job', program_name => 'prog_insert_user_count', schedule_name => 'my_weekend_5min_schedule') - END - />

    Você vê isso:

    Procedimento PL / SQL concluído com êxito.
  10. Ativar o seu trabalho para ser executado dentro do cronograma definido:

    lt; dbms_scheduler.enable exec ( 'my_user_count_job')>

    Você vê isso:

    Procedimento PL / SQL concluído com êxito.

    O trabalho é executado no horário de início especificado (pelo SYSTIMESTAMP). Se você escolher uma data do calendário no futuro, ele não iniciar até então.

  11. Depois que o trabalho foi executado por 17 minutos, digite o seguinte para ver a sua tabela USER_COUNT:

    lt; select * from user_count->

    Você vê isso:

    NUMBER_OF_USERS TIME_OF_DAY --------------- --------------------------------- 14-09-AUG 13 02.15.14.118495 PM14 09-AUG-13 02.00.14.137300 PM13 09-AUG-13 02.05.14.120116 PM13 09-AUG-13 02.10.14.120680 PM

Quando você tem o trabalho em execução, você pode obter detalhes sobre o sucesso ou fracasso, consultando as seguintes exibições:

USER_SCHEDULER_JOB_RUN_DETAILSUSER_SCHEDULER_JOB_LOG

Estes pontos de vista mostrar apenas informações sobre seus trabalhos. Para obter informações sobre as recentes execuções de nosso trabalho, faça o login como o criador de emprego e tipo

lt; job_name select, status, run_duration, cpu_usedfrom USER_SCHEDULER_JOB_RUN_DETAILSwhere job_name = 'MY_USER_COUNT_JOB' ->

Você vê isso:

JOB_NAME STATUS RUN_DURATION CPU_USED -------------------- ---------- --------------- - ----------------- MY_USER_COUNT_JOB SUCCEEDED +000 00:00:00 000 00: 00: 00.01MY_USER_COUNT_JOB SUCCEEDED +000 00:00:00 000 00: 00: 00.01MY_USER_COUNT_JOB SUCCEEDED +000 00:00:00 000 00: 00: 00.00MY_USER_COUNT_JOB SUCCEEDED +000 00:00:00 000 00: 00: 00.01

menu