Oracle job实例

本文介绍了一个Oracle存储过程,用于自动将数据库中的所有表和视图信息添加到fbs_dataObject表中,并通过Job定时任务实现自动化管理。此外,还提供了创建、修改、暂停、重启及删除Job的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--建存储过程
create or replace procedure add_table_view_to_dataObject
IS
  --查询数据库中所有的系统
  CURSOR sysCur IS select sys_id from FBS_SYSTEM;
  --查询数据库中所有的用户表名
  CURSOR tabCur IS select TABLE_NAME from user_tables;
  --查询数据库中所有的用户视图名
  CURSOR viewCur IS select VIEW_NAME from user_views;
BEGIN
  --遍历所有的系统
  FOR sysId in sysCur LOOP
    --遍历所有的用户表
    FOR tabName in tabCur LOOP
        insert into fbs_dataObject(id,sys_id,object_name,type,sql,note,created_time)
        select sys_guid(),sysId.Sys_Id,tabName.Table_Name,'1','select * from '|| tabName.Table_Name,'Oracle job自动插入',sysdate
        from dual
        where not exists (select 1 from fbs_dataObject where sys_id=sysId.Sys_Id and type='1' and object_name = tabName.Table_Name);
    END LOOP;


    --遍历所有的用户视图
    FOR viewName in viewCur LOOP
        insert into fbs_dataObject(id,sys_id,object_name,type,sql,note,created_time)
        select sys_guid(),sysId.Sys_Id,viewName.View_Name,'2','select * from '|| viewName.View_Name,'Oracle job自动插入',sysdate
        from dual
        where not exists (select 1 from fbs_dataObject where sys_id=sysId.Sys_Id and type='2' and object_name = viewName.View_Name);
    END LOOP;
  END LOOP;
END;


-- 测试脚本
begin
  -- Call the procedure
  add_table_view_to_dataobject;
end;


--建job并提交(提交后默认立即运行)
declare      
   jobId number;
begin
   dbms_job.submit(jobId, 'add_table_view_to_dataObject;', sysdate, 'sysdate + 10/86400', true);--每10秒执行一次
end;


--查看系统中的用户job
select * from user_jobs;


--暂停job(立即停止)
begin  
  dbms_job.broken(24,true,sysdate);  
end;  


--重启job;
begin
   dbms_job.run(24);
end; 


--修改job的执行频率
dbms_job.interval(24,'sysdate + 10/86400');   


--删除job;
begin   
  dbms_job.remove(24);  
end;  

参考:http://www.cnblogs.com/hoojo/p/oracle_procedure_job_interval.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值