Ƿ dbms_job ֹʱķҪݿڲиµϵͳ ǾݿⱾ⡣
еһ˿ܹ㷺ʹ dbms_job ݿҵύ̨Уеʱʱϵȵȡ ȻҸоеĴ˲ô
ڵֻܹ PL/SQL ܴʹ洢Ԫ ݿⲿϵͳļִļеκζ Ϊˣòڲϵͳʵùߣ Unix е cron Windows е AT ߣʹͨṩͼûչֹܵĵߡ Ȼˣdbms_job һЩĶŵ㣺 ֻݿʱЧ ݿرգҵС ݿⲿĹ߱˹ݿǷ ܺѡ һŵ dbms_job ݿڲͨݿʵùߣ SQL*Plus Oracle ݿ 10g ȳṩ˸ĺô ֱݿڲһҵʵóǿ㹻͵ҵֻ PL/SQL Ρ õһǣݿԴģκζijɱ һУǽιġ ҵ Ҳͨһ ٶһ shell űԽ浵־ļתƵһͬļϵͳУ£/home/arup/dbtools/move_arcs.shȣҪʹݿ֪űһҪҵʹõij Ҫӵ CREATE JOB Ȩޡ
begin
dbms_scheduler.create_program
(
program_name => 'MOVE_ARCS',
program_type => 'EXECUTABLE',
program_action => '/home/arup/dbtools/move_arcs.sh',
enabled => TRUE,
comments => 'Moving Archived Logs to Staging Directory'
);
end;
/
һԪָΪִļעԪʲô һÿ 30 һεƻüƻΪ EVERY_30_MINS ʹһ begin
dbms_scheduler.create_schedule
(
schedule_name => 'EVERY_30_MINS',
repeat_interval => 'FREQ=MINUTELY; INTERVAL=30',
comments => 'Every 30-mins'
);
end;
/
ڴ˳ͼƻѳƻҵ begin
dbms_scheduler.create_job
(
job_name => 'ARC_MOVE',
program_name => 'MOVE_ARCS',
schedule_name => 'EVERY_30_MINS',
comments => 'Move Archived Logs to a Different Directory',
enabled => TRUE
);
end;
/
⽫һÿ 30 һεҵҵִ shell ű move_arcs.shݿڲĵȳ cron AT ʵùߡ ûгҵ £һһϵͳʵùһƻָеĴҵ ҪӳдҵҲԶضǡ 磬Դҵȴһ begin
dbms_scheduler.create_job
(
job_name => 'ARC_MOVE_2',
schedule_name => 'EVERY_30_MINS',
job_type => 'EXECUTABLE',
job_action => '/home/arup/dbtools/move_arcs.sh',
enabled => true,
comments => 'Move Archived Logs to a Different Directory'
);
end;
/
ֱָ OS ִļȽ䴴Ϊһ ͬԴһҵһļƻ begin
dbms_scheduler.create_job
(
job_name => 'ARC_MOVE_3',
job_type => 'EXECUTABLE',
job_action => '/home/arup/dbtools/move_arcs.sh',
repeat_interval => 'FREQ=MINUTELY; INTERVAL=30',
enabled => true,
comments => 'Move Archived Logs to a Different Directory'
);
end;
/
Scheduler dbms_job һŵпԺؿ ܹ OS ʵùߺͳֻ PL/SQL Ԫ һʹΪ Oracle ݿҵȫҵߡ ѾעһͬҪŵ㣺 ܹȻԶʱ עУҪǵļƻÿ 30 һΣͨһӢıʽ PL/SQL REPEAT_INTERVAL
'FREQ=MINUTELY; INTERVAL=30'
һӵԸõذ˵һŵ㡣 ٶӦó 7:00 3:00 ԾΪռϵͳͳݣһ 7:00 3:00 Statspack ʹ DBMS_JOB.SUBMIT һҵô NEXT_DATE
DECODE
(
SIGN
(
15 - TO_CHAR(SYSDATE,'HH24')
),
1,
TRUNC(SYSDATE)+15/24,
TRUNC
(
SYSDATE +
DECODE
(
TO_CHAR(SYSDATE,'D'), 6, 3, 1
)
)
+7/24
)
ִʵϲס ǿ DBMS_SCHEDULER еĵȼ۵ҵ REPEAT_INTERVAL ô 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15'⣬ֵԽոʱеһЩdzǿ ǸһЩӣ
- ÿµһ죺
FREQ=MONTHLY; BYDAY=-1SUN
- ÿµĵ壺
FREQ=MONTHLY; BYDAY=3FRI
- ÿµ𣨶Ǵÿ³𣩵ĵڶ壺
FREQ=MONTHLY; BYDAY=-2FRI
set serveroutput on size 999999
declare
L_start_date TIMESTAMP;
l_next_date TIMESTAMP;
l_return_date TIMESTAMP;
begin
l_start_date := trunc(SYSTIMESTAMP);
l_return_date := l_start_date;
for ctr in 1..10 loop
dbms_scheduler.evaluate_calendar_string(
'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15',
l_start_date, l_return_date, l_next_date
);
dbms_output.put_line('Next Run on: ' ||
to_char(l_next_date,'mm/dd/yyyy hh24:mi:ss')
);
l_return_date := l_next_date;
end loop;
end;
/
£ Next Run on: 03/22/2004 07:00:00 Next Run on: 03/22/2004 15:00:00 Next Run on: 03/23/2004 07:00:00 Next Run on: 03/23/2004 15:00:00 Next Run on: 03/24/2004 07:00:00 Next Run on: 03/24/2004 15:00:00 Next Run on: 03/25/2004 07:00:00 Next Run on: 03/25/2004 15:00:00 Next Run on: 03/26/2004 07:00:00 Next Run on: 03/26/2004 15:00:00ȷȷġ
ѡԣhttp://www.oracle.com/technology/global/cn/pub/articles/10gdba/week19_10gdba.html
鿴ȫ





