初次接触到项目需要用定时调度,数据备份任务。所以上网也查阅了很多资料,由此依据自己的学习能力整理下,请大家多补充多支持下。
用Oracle的存储过程,可以让我们在编写程序的时候减少很多的量,利用Oracle良好的性能作为基础,直接能提升程序的执行效率和稳定的性能。
定时执行存储过程的时候,就要用到“Oracle系统的包Job,还有功能包目前还没接触到...
本例中用PLSQL。首先登入你创建的用户,打开SQL执行窗口命令
输入:show parameter job
设置job执行个数为10,上限为1000。以上属性值为0,则导致job作业无法执行.手动执行job作业是可行的。但是无法执行指定时间内执行。
输入:select * from dba_jobs(dba下可能有内置的作业),先熟悉下Job的参数属性。
- 创建存储过程
功能:表数据批量插入另一种表(表数据迁移)<pre name="code" class="html" style="font-weight: bold;"><span style="font-size:10px;">create or replace procedure存储过程名称 as
</span>
begin
delete from 临时表 a where exists (select pid from 主表 b where b.pid=a.pid );
insert into 主表 select * from 临时表;
end;
- 调用的过程调试下(查找下Procedures文件夹下的过程没红叉一般没什么错误)你可先在临时表上增加几条数据(有几条和临时表主键是一样的{也可以用其他属性比如IP一样的或者name一样的}),主表上也是。
begin
存储过程名称;
commit;
end;
- 创建job作业
declare job1 number;
begin
dbms_job.submit(
job1, --定时器ID,系统会自动获得(递增)
'存储过程名称;', --执行的过程名
sysdate, --定时器开始的时间(当前系统时间)
'sysdate + 10/(24 * 60 * 60)' --设置定时器执行频率(这里是秒10秒执行一次)
);
commit;
end;
- 运行作业
dbms_job.run(系统分配作业的编号)
不知道可以查询下
select * from user_jobs(第一个属性就是啦~)
登入数据库查下你的job是不是每隔10秒改变一次下次执行的时间,在文件夹DMBS_Jobs里面。右键点击View既可。
功能:表数据批量插入另一种表(表数据迁移)
<pre name="code" class="html" style="font-weight: bold;"><span style="font-size:10px;">create or replace procedure存储过程名称 as
</span>
begindelete from 临时表 a where exists (select pid from 主表 b where b.pid=a.pid );
insert into 主表 select * from 临时表;
end;
begin
存储过程名称;
commit;
end;
declare job1 number;
begin
dbms_job.submit(
job1, --定时器ID,系统会自动获得(递增)
'存储过程名称;', --执行的过程名
sysdate, --定时器开始的时间(当前系统时间)
'sysdate + 10/(24 * 60 * 60)' --设置定时器执行频率(这里是秒10秒执行一次)
);
commit;
end;
dbms_job.run(系统分配作业的编号)
不知道可以查询下select * from user_jobs(第一个属性就是啦~)
登入数据库查下你的job是不是每隔10秒改变一次下次执行的时间,在文件夹DMBS_Jobs里面。右键点击View既可。