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
一、新建数据迁移存储过程
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
相关文章推荐
- ORACLE实现自动备份功能(操作系统:计划任务)
- Oracle Job 任务计划管理[作业,定期执行任务]
- 使用PL/SQL Developer图形界面轻松实现oracle定期计划任务
- window用计划任务实现oracle数据备份
- windows 任务计划 实现oracle远程 数据库备份
- 利用windows任务计划实现oracle的定期备份
- Oracle_批处理+任务计划实现数据库自动定时备份
- oracle怎么实现每天定时执行一个计划任务
- Oracle Job 任务计划管理[作业,定期执行任务]
- oracle实现每天定时执行一个计划任务
- ORACLE实现Job定时计划任务
- oracle triggers 实现两个结构相同的表的数据级联更新操作
- oracle怎么实现每天定时执行一个计划任务
- 利用windows任务计划实现oracle的定期备份
- window用计划任务实现oracle数据备份
- 利用windows任务计划实现oracle的定期备份
- Oracle_批处理+任务计划实现数据库自动定时备份
- oracle实现每天定时执行一个计划任务
- MySQL使用递归存储过程实现树状结构,实现Oracle的Connect By 功能在Mysql中如何实现Oracle中的递归
- Oracle计划任务