oracle任务调度_oracle 作业和调度

oracle任务调度_oracle 作业和调度以下例子在scott用户下进行: 一、查看 先查看一下 当前用户的scheduler 的所有数据字典,看看要关注什么 SET LINE 200 PAGESIZE 2000COL TABLE_NAME

Oracle调度器Scheduler

以下例子在scott用户下进行:

一、查看

先查看一下  当前用户的scheduler   的所有数据字典,看看要关注什么


SET LINE 200 PAGESIZE 2000
COL TABLE_NAME FOR A60
COL COMMENTS FOR A120
SELECT TABLE_NAME,COMMENTS FROM DICTIONARY WHERE TABLE_NAME LIKE "%USER_SCHEDULER%" ORDER BY 1;

一大堆数据字典,暂时关注其中的三个,

SELECT * FROM USER_SCHEDULER_PROGRAMS;
SELECT * FROM USER_SCHEDULER_SCHEDULES;
SELECT * FROM USER_SCHEDULER_JOBS;

 

 

 

comments里有解析,但是我有不一样的想法,具体化为一个例子:我调了个闹钟,

闹钟响起要做什么(USER_SCHEDULER_PROGRAMS),

闹钟什么时候响(USER_SCHEDULER_SCHEDULES),

闹钟是否开启(USER_SCHEDULER_JOBS);

 

关于program、schedule、job的参数请参考:DBMS_SCHEDULER (oracle.com)

二、创建

在使用scheduler之前,最好先考虑一下要做什么(为什么设置这个闹钟)

我没想好,干脆把emp表的信息插入到一个临时表中吧。

 

先在sys用户把创建表、存储过程、JOB的权限给SCOTT

grant create table to scott;
grant create procedure to scott;
grant create job to scott;

 

先创建一个临时表:

create table temp as select * from emp where 1=2;

 

创建一个存储过程,作用:找出emp表的sal>1000的所有信息,插入到temp表中。

注意:在创建此存储过程之前把 or replace去掉,防止把已存在的procedure覆盖掉。

create or replace procedure my_procedure
as
cursor my_cur is select EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO from emp where sal>1000;
begin
for i in my_cur loop
insert into temp values (i.EMPNO,i.ENAME,i.JOB,i.MGR,i.HIREDATE,i.SAL,i.COMM,i.DEPTNO);
end loop;
end;
/

 

下面创建一个scheduler.program,program_action指定上面的存储过程

begin
dbms_scheduler.create_program(
program_name=>"scott.my_program_01",
program_type=>"stored_procedure",
program_action=>"my_procedure",
enabled=>true,
comments=>"这是我的第一个scheduler.program"
);
end;
/

 

随后创建一个scheduler.schedule,为了能尽快看到效果,把FREQ指定为SECONDLY类型,INTERVAL为30秒

附:为了防止忘记关掉,结束时间设置为开始后的1小时

begin
dbms_scheduler.create_schedule(
schedule_name=>"scott.my_schedule_01",
start_date=>sysdate,
repeat_interval=>"freq=secondly;interval=30",
end_date=>sysdate+1/24,
comments=>"这是我的第一个scheduler.schedule"
);
end;
/

 

最后,创建一个job,启用按schedule计划执行program

begin
dbms_scheduler.create_job(
job_name=>"scott.my_job_01",
program_name=>"scott.my_program_01",
schedule_name=>"scott.my_schedule_01",
enabled=>TRUE,
comments=>"这是我的第一个scheduler.job"
);
end;
/

 

等一段时间,查看temp表,不出意外的话已经有数据了。

 

随后查看数据字典

SELECT * FROM USER_SCHEDULER_PROGRAMS;
SELECT * FROM USER_SCHEDULER_SCHEDULES;
SELECT * FROM USER_SCHEDULER_JOBS;

可以看到program、schedule、job的信息。

 

 

二、停止与禁用与启用

停止只跟JOB有关,就相当于闹钟响了,停止正常响着的闹钟,但是明天闹钟该响还是响。

附:闹钟响多久(JOB IS RUNNING) 取决于执行的速度;

EXEC DBMS_SCHEDULER.STOP_JOB("SCOTT.JOB");

禁用就相当于把闹钟给关了,明天这个闹钟也不响了,除非再把这个闹钟打开。

EXEC DBMS_SCHEDULER.DISABLE("SCOTT.MY_JOB_01");

与禁用相对的就是启用

EXEC DBMS_SCHEDULER.ENABLE("SCOTT.MY_JOB_01");

 

 

三、修改

嘿,计划总赶不上变化,我决定换个时间

--修改schedule的start_date为当前时间
EXEC DBMS_SCHEDULER.SET_ATTRIBUTE("SCOTT.MY_SCHEDULE_01","START_DATE",SYSDATE);
--修改schedule的end_date为一小时后 EXEC DBMS_SCHEDULER.SET_ATTRIBUTE(
"SCOTT.MY_SCHEDULE_01","END_DATE",SYSDATE+1/24);

 

四、删除

 嗐,计划取消

EXEC DBMS_SCHEDULER.DROP_JOB("SCOTT.MY_JOB_01");
EXEC DBMS_SCHEDULER.DROP_SCHEDULE("MY_SCHEDULE_01");
EXEC DBMS_SCHEDULER.DROP_PROGRAM("MY_PROGRAM_01");

 

附:存储过程my_procedure的删除和temp表一样。

原文地址:https://www.cnblogs.com/wfkfytmy/archive/2022/08/03/16545605.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4935.html

(0)
上一篇 2023-05-29
下一篇 2023-05-29

相关推荐

  • mysql 分区表,为什么分区键必须是主键的一部分组成_oracle分区表本地索引和全局索引

    mysql 分区表,为什么分区键必须是主键的一部分组成_oracle分区表本地索引和全局索引随着业务的不断发展,数据库中的数据会越来越多,相应地,单表的数据量也会越到越大,大到一个临界值,单表的查询性能就会下降。 这个临界值,并不能一概而论,它与硬件能力、具体业务有关。 虽然在很多 MySQ

    2023-05-02
    215
  • Python可变参数详解

    Python可变参数详解在Python编程中,一个函数可以通过接收和处理参数来实现它的功能。函数参数有两种类型,即默认参数和可变参数,在本文中我们将重点解析可变参数。可变参数指在调用函数时,可以传入任意数量的参数,这些参数在函数定义中不需要被明确指定,这个特性使得函数的使用更加灵活。在Python中,可变参数主要有两种类型:*args和**kwargs。

    2024-05-05
    71
  • Deepin 下安装 LAMP

    Deepin 下安装 LAMPubuntu/deepin linux 下使用 apt-get 安装所需套的软件 LAMP 1. 安装 apacache2 apt-get install apache2 配置文件:/etc/apa…

    2023-02-06
    143
  • oracle常用sql语句大全_oracle基本查询语句

    oracle常用sql语句大全_oracle基本查询语句1.将一张表的某一个字段(多条单据)合并成一个字符串输出(逗号分隔) + “,(select LISTAGG(mo.model_code,',') within group(or…

    2023-02-25
    148
  • Python实现高效数据处理和分析

    Python实现高效数据处理和分析
    Pandas是Python中一个很重要的数据处理库,提供了类似Excel表格的数据结构,可以用于数据清洗、聚合、重构、分组、统计等操作。使用Pandas创建的数据结构,例如DataFrame、Series等,可以直接读取和写入多种文件格式,包括CSV、HTML、JSON、SQL等。同时,Pandas还提供了灵活和高效的数据读取和写入函数,能够处理非常大的数据集。

    2024-01-06
    107
  • [20221008]sql profile优化失效问题.txt

    [20221008]sql profile优化失效问题.txt[20221008]sql profile优化失效问题.txt//生产系统一条sql语句存在性能问题,使用sql profile优化固定执行计划,再次出现问题,以前也遇到类似的问题,做一个记录.1

    2023-06-09
    103
  • Python long数据类型详解

    Python long数据类型详解Python long数据类型是一种用于表示任意大整数的数据类型,与int数据类型不同,long类型可以表示任意大的整数,而int类型只能表示特定大小的整数。long数据类型是Python 2.x版本中的数据类型,而在Python 3.x版本中,int类型已可以表示任意大的整数,因此,long类型已经被废弃。

    2024-09-02
    20
  • Redis学习笔记(四)–安全[通俗易懂]

    Redis学习笔记(四)–安全[通俗易懂]Redis学习笔记(四)–安全 基于Redis6之前版本 一、设置数据库密码 1、配置文件“redis.conf”修改,需重启服务器 在配置文件中“redis.conf”设置”requirepas…

    2023-03-22
    167

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注