Oracle-定时任务】的更多相关文章

最简单的一个Oracle定时任务一.在PLSQL中创建表:create table HWQY.TEST(CARNO     VARCHAR2(30),CARINFOID NUMBER) 二.在PLSQL中创建存储过程:create or replace PRocedure pro_testAScarinfo_id number;BEGINselect s_CarInfoID.nextval into carinfo_idfrom dual;insert into test(test.carno,…
一.简介 当我们需要oracle数据库定时自动执行一些脚本,或进行数据库备份.数据库的性能优化,包括重建索引等工作是需要使用到定时任务. 定时任务可以使用以下两种完成. 1.操作系统级的定时任务,win的定时任务,unix的crontab 2.数据库级的定时任务. 相对来说,数据库的定时任务效率会更高. oracle的定时任务:使用oracle定时任务时,需要使用到oracle中dbms_job.submit函数. DBMS_JOB过程的公共参数 Job BINARY_INTEGER 任务的唯一…
定时任务应用场景: 某一个生产系统上面,临时表不断变多,占了不少磁盘空间.由于这套软件是直接买的,不方便修改源代码.所以考虑使用Oracle定时任务直接从数据库层删除临时表. 定时任务业务: 首先写好一个存储过程.读当前用户所有以tempXXXXX开头的临时表,然后依次删除所有的临时表.然后在建立Oracle Job每天晚上定时调用这个存储过程. 存储过程代码: create or replace PROCEDURE KDDROPTEMPTABLE AS BEGIN  declare  curs…
       在Oracle的包里面,有一个名字叫做DBMS_JOB的包,它的作用是安排和管理作业队列.通过作业队列,可以让Oracle数据库定期执行特定的任务.当使用DBMS_JOB管理作业的时候,必须确保设置了初始化参数JOB_QUEUE_PROCESSES(不能为0). 1. SUBMIT 该过程用于建立一个新的作业,当建立作业的时候,需要通过设置相应的参数来告诉Oracle要执行的内容,要执行的时间,要执行任务的间隔.如下格式: DBMS_JOB.SUBMIT( JOB OUT BINA…
说明:请在plsql工具的命令窗口中,依次按步骤执行如下脚本   (1)建立备份表 my_test_log2create table my_test_log2 as select * from my_test_log t where 1=2; (2)创建索引create index ind_userId on my_test_log2(userId); (3)创建存储过程:每天移植数据到my_test_log2 CREATE OR REPLACE PROCEDURE MV_MY_TEST_LOG…
业务需求是:二元化编号规则:RYH+年月+001(开始),按月计算,每月1号重置为001 数据库中已有序列和函数如下: 解决方法:采用Oracle定时任务,每月1号重置该序列从1开始增长,SQL如下: select GET_RYH_NO from dual; select SEQ_RYH_NO_ID.NEXTVAL from dual; select * from user_jobs;/*查询定时任务*/ /*新建每月01号重置二元化序列为1起始的存储过程*/ CREATE OR REPLACE…
一.Oracle定时任务基础 简介 oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器. 查询 --当前库中运行的 job SELECT t.* FROM dba_jobs t 创建 (1)SQL语句执行创建 declare job number; BEGIN DBMS_JOB.SUBMIT( JOB => job, /*自动生成JOB_ID*/ WHAT =>'PRO_USER_ORDER(to_char(SYSDATE,'yyyyMMdd'));',…
用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.submit(:jobno, —-job号                  'your_procedure;',—-执行的存储过程, ';'不能省略                 next_date, —-下次执行时间                  'interval' —-每次间隔时间,int…
author:skate time:2007-09-12 http://publish.it168.com/2006/0311/20060311017002.shtml 今天总结下Oracle的任务队列管理器(job queue ),以后也方便查询. 我们要做定时任务时,有两种办法 一种是: 操作系统的定时,win的定时任务,unix的crontab一种是: 数据库级的定时,她的效率更高, 再有大量的表级操作时,建议用数据库本身的job queue,这样方便,效率高;如果用系统级定时,会增加很多…
用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.submit(:jobno, —-job号                  'your_procedure;',—-执行的存储过程, ';'不能省略                 next_date, —-下次执行时间                  'interval' —-每次间隔时间,int…
前几天,公司的job调度出现了问题,由于权限管的严,没有查看oracle 一些重要的数据字典,后面联系DBA,是由于数据库切换到备机时,参数设置不对,导致db job没有正常调度. 今天刚好有时间,想总结下 oracle 的定时任务,写的不好的地方,请多多指教! --1.先检查 oracle job 两个重要参数 job_queue_processes 和 aq_tm_processes SQL> show parameter job_queue_processes;NAME TYPE VALU…
写在前面 需求 1.备份系统日志表T_S_LOG, 按照操作时间字段OPERATETIME, 将每天的日志增量备份到另一张表. 思路 1.创建一张数据结构完全相同的表T_S_LOG_BAK作为备份表 2.查出T_S_LOG中需要备份的数据 3.将数据赋给游标变量 4.遍历游标将数据逐条插入T_S_LOG_BAK 5.创建无参存储过程将游标的这部分操作作为存储过程主体执行 6.创建定时任务定时执行该存储过程 操作环境 Oracle11g T_S_LOG日志表(部分数据) -- ----------…
需求简述 一个数据表中包含此数据的录入时间,此数据的初始状态是有效,五天后系统自动置该数据的状态为无效. 方案 写一个存储过程,用于更新字段(改状态): 写一个job,用于定时执行存储过程: 方案逻辑 存储过程 前提条件:此数据的状态为有效状态: 获取当前系统时间: 获取数据输入时间: 计算二者差值:如果二者差值大于5,置数据状态为无效,反之,不做操作. Job 设置每天0:00自动执行存储过程:(为了尽快看到测试结果,这里设置时间为每分钟执行一次job.) 测试小案例 创建表 --创建表 cr…
在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法: 1.创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 create or replace procedure YxtestJob is begin insert into ztest(name,createdate) values('test',sysdate); end; 2.定时器对应的DBMS_Jobs文件夹,右键新建(new) 3.创建任务 (1)…
declare jobno number; begin dbms_job.submit( jobno,--定时器ID,系统自动获得 'PRC_INSERT;', --what执行的过程名 sysdate,--next_date,定时器开始执行的时间,这样写表示立即执行 'sysdate + 15/1440'--interval,设置定时器执行的频率,这样写每隔15分钟执行一次 ); commit; end; 这里第一个参数是任务编号,系统自动赋值.也可以采用isubmit来手动指定 第二个参数是…
--创建序列 --入库create sequence rk_seq;--出库create sequence ck_seq;--移库create sequence yk_seq; --创建存储过程 create or replace procedure reset_seq(rk_seq_name in varchar2, ck_seq_name in varchar2, yk_seq_name in varchar2) is l_val number;begin --rk execute imme…
增: 创建一个计划任务 begin sys.dbms_job.submit(job=>:job, what=>'要定时执行的存储过程名:',--例如:包名.存储过程名;  记得写分号 next_date=>to_date(''2021-10-08 7:00:00','yyyy-mm-dd hh24:mi:ss''),--下一次执行时间 interval=>'sysdate+7/24 );--执行间隔 每天7点执行 commit; end; 删: exec sys.dbms_job.…
创建 -- 创建定时任务 DECLARE jobno NUMBER; BEGIN dbms_job.submit ( jobno, -- 定时器ID,系统自动获得 'PRC_INSERT;', -- what执行的过程名,多个存储过程以";"分隔,末尾要带";" SYSDATE, -- next_date,定时器开始执行的时间,这样写表示立即执行 'sysdate + 15/1440' -- interval,设置定时器执行的频率,这样写每隔15分钟执行一次 );…
在jobs上点新建  what值:statisticsToDay;  这个是存储过程的名字间隔:sysdate+1/24   表示每个小时运行一次          1:每分钟执行 Interval => TRUNC(sysdate,'mi') + 1/ (24*60) 或 Interval => sysdate+1/1440 2:每天定时执行 例如:每天的凌晨1点执行 Interval => TRUNC(sysdate) + 1 +1/ (24) 3:每周定时执行 例如:每周一凌晨1点…
示例如下: -- 每隔一分钟执行存储过程p1 create or replace procedure p2 as job_num number; begin dbms_job.submit(job_num, 'p1;', sysdate, 'sysdate + 1/1440'); dbms_job.run(job_num); end; 分析如下: 1.dbms_job.submit(job, what, next_date, interval)的参数说明如下. job:系统分配的标识job的id…