热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

oracle作业计划任务配合Oracle存储过程实现多张相同表结构间数据迁移一、新建数据迁移存储过程www.2cto.comcreateorreplaceprocedureproc_pay_data_move_tohis/*名称:缴费表数据迁移功能:迁移缴费...SyntaxHi

oracle作业计划任务配合Oracle存储过程实现多张相同表结构间数据迁移
 
一、新建数据迁移存储过程 
  www.2cto.com  
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
   delete TB_PAY_MOBILE where TRANTIME
   
-- 2、迁移 联通 缴费记录 
   insert into Tb_HIS_PAY_UNICOM 
   select * from Tb_PAY_UNICOM where TRANTIME
   delete Tb_PAY_UNICOM where TRANTIME
   
-- 3、迁移 电信 缴费记录 
   insert into TB_HIS_PAY_TELECOM 
   select * from TB_PAY_TELECOM where TRANTIME
   delete TB_PAY_TELECOM where TRANTIME
 
   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; 
  www.2cto.com  
2、用PL/SQL Developer进行可视化创建 
步骤如下: 
点击菜单栏 文件->新建->作业(J);或者右键点击左边树形列表Jobs->新建,即可跳出配置窗口,如下: 
 

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

 
注意:What 值文本框里面的proc_pay_data_move_tohis;存储过程名称后面一定要打“;“号,当然,如果你配置的参数有问题,你点击应用按钮的时候是无法通过的,会提示你错误信息,你根据错误信息稍作调整即可。 
图例参数说明: 
What值:存储过程名称或要执行的计划名称; 
下一个日期:即开始执行的日期时间; 
间隔:执行间隔,即多长时间执行一次; 
  www.2cto.com  
三、总结 
 
到此,整个过程就已经OK了,该作业计划任务会按照你设置的时间定期自动进行数据迁移,你还可以根据自己的需要自行调整存储过程里面迁移数据的日期范围条件及作业计划任务的执行日期时间。 
 
四、查看作业计划任务 
 
你还可以通过sql语句查看作业计划任务,sql语句如下: 
1、查看该用户下的所有计划任务 
select * from user_jobs 
2、查看该数据库的所有计划任务 
select * from dba_jobs 
3、查看正在执行的计划任务 
select * from dba_jobs_running
 

推荐阅读
author-avatar
魔术师-文放
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有