Oracle SQL(七)

11. Oracle 定时任务基础

11.1 简介

oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器。

11.2 查询

--当前库中运行的 job
SELECT t.* FROM  dba_jobs t

11.3 创建

11.3.1 SQL语句执行创建

declare
  job number;
BEGIN
  DBMS_JOB.SUBMIT(
        JOB => job,  /*自动生成JOB_ID*/
        WHAT =>‘PRO_USER_ORDER(to_char(SYSDATE,‘yyyyMMdd‘));‘,  /*需要执行的存储过程名称或SQL语句*/
        NEXT_DATE => sysdate,  /*初次执行时间(立即执行)*/
        INTERVAL => ‘trunc(sysdate,‘‘mi‘‘)+1/(24*60)‘ /*执行间隔(每隔1分钟执行一次)*/
      );
  commit;
end;

11.3.2 pl/sql 图形化界面创建

11.4 查询某job的下一次执行时间

--查询定时任务的下一次执行时间

SELECT job,next_date,what FROM dba_jobs WHERE JOB = 14;  --14:定时任务的唯一标识码(即job编号)

11.5 手动执行某个job

--手动调用job

BEGIN
    DBMS_JOB.RUN (14) ; --14:job的id
END ;

11.6 手动停止某个job

--手动停止job

/*
    格式:dbms_job.broken(jobId,broken,next_date);
    jobId:job的ID。
    broken:值为true时,表示禁用job,false时,表示启用job。
    next_date:(某一时刻停止),也可是sysdate(立刻停止)(默认值为sysdate)。
*/
BEGIN
    dbms_job.broken (jobId, TRUE, next_date) ;
COMMIT ;
END ;

11.7 手动删除某个job

--手动删除job

begin
  dbms_job.remove(83);  --删除自动执行的job,参数是 job的id
  commit;
end;

11.8 修改定时任务的执行间隔

--修改job的间隔时间

/*
    job:job的ID
    interval: 任务执行间隔的时间表达式
*/
begin
  dbms_job.interval(job,interval);
  commit;
end;

11.9 修改定时任务的下一次执行时间

--修改job的下一次执行时间

/*
    job:job的ID
    next_date: 下一次任务执行的时间表达式
*/
begin
   dbms_job.next_date(job,next_date);
   commit;
end;

11.10 修改定时任务 job 要执行的操作

--修改定时任务 job 要执行的操作

/*
    jobId:job的ID
    newProcedures(): 新的存过
*/
begin
    dbms_job.what(jobId,‘newProcedures();‘);
  commit;
end;


Oracle SQL(七)

原文地址:https://www.cnblogs.com/cy-8593/p/12559348.html

时间: 2024-08-04 15:54:06

Oracle SQL(七)的相关文章

Oracle SQL七次提速技巧

以下SQL执行时间按序号递减. 1,动态SQL,没有绑定变量,每次执行都做硬解析操作,占用较大的共享池空间,若共享池空间不足,会导致其他SQL语句的解析信息被挤出共享池. create or replace procedure proc1 as begin for i in 1..100000 loop execute immediate 'insert into t values('||i||')'; commit; end loop; end; 2,动态SQL,绑定变量,SQL语句只要执行一

oracle sql优化

第一掌 避免对列的操作 任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数.计算表达式等等,查询时要尽可能将操作移至等式的右边,甚至去掉函数. 例1:下列SQL条件语句中的列都建有恰当的索引,但30万行数据情况下执行速度却非常慢: select * from record where  substrb(CardNo,1,4)='5378'(13秒) select * from record where  amount/30< 1000(11秒) select * from recor

Oracle SQL执行计划基线总结(SQL Plan Baseline)

一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PROFILE的改进版本,基本上它的主要作用可以归纳为如下两个: 1.稳定给定SQL语句的执行计划,防止执行环境或对象统计信息等等因子的改变对SQL语句的执行计划产生影响! 2.减少数据库中出现SQL语句性能退化的概率,理论上不允许一条语句切换到一个比已经执行过的执行计划慢很多的新的执行计划上! 注意:

使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g

ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench. 什么是Oracle SQL Developer?在官方页面上,是这样介绍它的: Oracle SQL Developer is a free and fully supported graphical tool for database development. With SQL Developer, you can browse database objects, run SQL st

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第2/5套:Oracle SQL语言DDL和对象管理.主要学习Oracle数据库模式对象和表中可用的数据类型,表/临时表的创建与使用,索引/约束的创建与管理,视图/同义词/序列的创建和使用,触发器/存储过程/包的创建和使用. Oracle SQL语言DDL和对象管理,课程内容详细如下

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第3/5套:Oracle SQL语言DML语句与事务.主要学习Oracle数据库SQL语句INSERT命令,学习使用UPDATE命令,学习使用DELETE命令,学习创建PL/SQL对象,事务概念与控制,锁的检测和锁争用,了解撤销数据. Oracle SQL语言DML语句与事务管理,课

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

oracle sql语句取得本周本月本年的数据

[sql] --国内从周一到周日 国外是周日到周六  select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期-- [sql] --取本周时间内的数据  select * from table  where DTIME >=trunc(next_day(sysdate-8,1)+1) and DTIME<=trunc(next_day(sysdate-8,1)+7)+1 ;     select * from table  whe