Scheduler 可以简单调度成百上千的tasks。Oracle Scheduler 通过在DBMS_SCHEDULER PL/SQL 包中存储和过程来执行,用普通的数据库用户做测试。
--创建表
createtable indextable(idnumber,namevarchar2(10));
--存储过程
createorreplaceprocedure p_insert_test
as
begin
for i in1..1000 loop
insertinto indextable values(i,'gang'||i);
endloop;
end;
--创建job,可选参数有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分别表示年、月、周、日、时、分、秒等单位
BEGIN
sys.DBMS_SCHEDULER.CREATE_JOB (
job_name => 'job_insert_test',
job_type => 'STORED_PROCEDURE',
job_action => 'p_insert_test', --调用的过程名称
start_date => sysdate,
repeat_interval => 'FREQ=SECONDLY;INTERVAL=1'); --每秒执行一次
end;
/
创建时报错,解决方式是用sys把create job的权限给此用户。
ORA-27486: 权限不足
ORA-06512: 在 "SYS.DBMS_ISCHED", line 99
ORA-06512: 在 "SYS.DBMS_SCHEDULER", line 262
ORA-06512: 在 line 3
--启用Job
exec dbms_scheduler.enable('job_insert_test');
--停止Job
exec dbms_scheduler.disable('job_insert_test');