1 - Criando os schedules
begin
dbms_scheduler.create_schedule (
SCHEDULE_NAME=>
'interval_every_30_minutes',
START_DATE => trunc(sysdate)+15/24, -
Start as 15 horas.
REPEAT_INTERVAL=> 'freq=minutely;
interval=30′,
COMMENTS=> 'Execucao a cada 30 minutos'
);
end;
/
Com as expressões abaixo podemos crier qualquer agendamento.
Frequencia:
YEARLY
MONTTHLY
WEELY
DAILY
HOURLY
MINUTELY
SECONDLY
Para um melhor detalhamento pode ser usar.
BYMONTH
BYWEEKNO
BYYEARDAY
BYMONTHDAY
BYHOUR
BYMINUTE
BYSECOND
Bom agora que criamos os schedules vamos criar os Jobs e
associa-los aos seus respectivos agendamentos.
2 - Criando os jobs
- Job de free tablespace
/*begin
dbms_scheduler.create_job (
job_name => 'TBSPACE_FREE',
schedule_name=>'interval_every_30_minutes',
job_type => 'EXECUTABLE',
JOB_ACTION => 'C:\rotina\TBSPACE_FREE.cmd',
enabled=>true,
auto_drop=>false,
comments=>'Espaço livre nas tablespaces');
end;
/
- Job de move alert.log
begin
dbms_scheduler.create_job (
job_name => 'MOVE_ALERT',
schedule_name=>'interval_every_30_minutes',
job_type => 'EXECUTABLE',
JOB_ACTION => 'C:\rotina\MOVE_ALERT.cmd',
enabled=>true,
auto_drop=>false,
comments=>'Valida o status do listener');
end;
/
Você pode criar "N" schedules / Jobs de acordo com as suas
necessidades, eu dei apenas dois exemplos básico de utilização.
Para o gerenciamento do jobs temos várias views, vou citar
algumas:
DBA_SCHEDULER_JOBS - Gerencia os jobs criados na base.
DBA_SCHEDULER_JOB_RUN_DETAILS - Detalhes sobre a execução
dos jobs, com informações sobre possíveis erros.
DBA_SCHEDULER_JOB_LOG - Tabela de com informação
sobre sucesso ou falha da execução dos jobs.
DBA_SCHEDULER_SCHEDULES - Visão sobre os schedules criados
na base.