您的位置:首页 > 数据库 > Oracle

oracle作业计划任务配合Oracle存储过程实现多张相同表结构间数据迁移

2012-11-21 15:52 453 查看
oracle作业计划任务配合Oracle存储过程实现多张相同表结构间数据迁移

一、新建数据迁移存储过程

create or replace procedure proc_pay_data_move_tohis

/*

名称:缴费表数据迁移

功能:迁移缴费正式表数据到历史表

版本:V1.0.0

作者:G007N

日期:2012年11月21日

涉及的表:

移动:TB_PAY_MOBILE -> TB_HIS_PAY_MOBILE

联通:Tb_PAY_UNICOM -> Tb_HIS_PAY_UNICOM

电信:TB_PAY_TELECOM -> TB_HIS_PAY_TELECOM

*/

is

-- 正式表保留31天数据

iDayNum NUMBER :=31;

curdate date := SYSDATE-iDayNum;

begin

-- 1、迁移 移动 缴费记录

insert into TB_HIS_PAY_MOBILE

select * from TB_PAY_MOBILE where TRANTIME<curdate;

delete TB_PAY_MOBILE where TRANTIME<curdate;

-- 2、迁移 联通 缴费记录

insert into Tb_HIS_PAY_UNICOM

select * from Tb_PAY_UNICOM where TRANTIME<curdate;

delete Tb_PAY_UNICOM where TRANTIME<curdate;

-- 3、迁移 电信 缴费记录

insert into TB_HIS_PAY_TELECOM

select * from TB_PAY_TELECOM where TRANTIME<curdate;

delete TB_PAY_TELECOM where TRANTIME<curdate;

commit;

-- 异常处理

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

end;

二、创建作业计划任务

可以用以下两种方式创建:

1、用语句创建

begin

sys.dbms_job.submit(job => :job,

what => 'proc_pay_data_move_tohis;',--分号必须加

next_date => to_date('13-08-2010 11:26:13', 'dd-mm-yyyy hh24:mi:ss'), --开始执行时间

interval => 'sysdate+31); --字符型,执行间隔,这里是31天执行一次

commit;

end;

2、用PL/SQL Developer进行可视化创建

步骤如下:

点击菜单栏 文件->新建->作业(J);或者右键点击左边树形列表Jobs->新建,即可跳出配置窗口,如下:



输入参数后点击应用按钮即可,之后你可以在左边树形列表Jobs下面看到你创建的作业计划任务,右键点击该任务,选择查看,就可看到下图所示:



注意:What 值文本框里面的proc_pay_data_move_tohis;存储过程名称后面一定要打“;“号,当然,如果你配置的参数有问题,你点击应用按钮的时候是无法通过的,会提示你错误信息,你根据错误信息稍作调整即可。

图例参数说明:

What值:存储过程名称或要执行的计划名称;

下一个日期:即开始执行的日期时间;

间隔:执行间隔,即多长时间执行一次;

三、总结

到此,整个过程就已经OK了,该作业计划任务会按照你设置的时间定期自动进行数据迁移,你还可以根据自己的需要自行调整存储过程里面迁移数据的日期范围条件及作业计划任务的执行日期时间。

四、查看作业计划任务

你还可以通过sql语句查看作业计划任务,sql语句如下:

1、查看该用户下的所有计划任务

select * from user_jobs

2、查看该数据库的所有计划任务

select * from dba_jobs

3、查看正在执行的计划任务

select * from dba_jobs_running
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: