oracle job

1. 定义

Job是一个可以被调度以在特定时间或按一定频率自动执行的数据库对象。Job通常用于执行预定的后台任务,如数据清理、统计信息更新、备份操作、数据导入导出、报告生成等。这些任务可以是任何可以在数据库环境中执行的操作,最常见的形式是调用存储过程。DBMS_JOB包已经被DBMS_SCHEDULER包所取代。

Job的创建和管理主要通过Oracle的DBMS_JOB包来进行,该包提供了用于提交、修改、删除、启用或禁用Job的PL/SQL过程。Job可以被配置为只运行一次,也可以按照特定的时间间隔重复执行

2.查看job

select * from dba_jobs;
select * from dba_jobs_running;
select * from user_jobs;
select * from all_jobs;

3.job

1.队列job
DBMS_JOB.SUBMIT( 
   job       OUT    BINARY_INTEGER,
   what      IN     VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE, 
   interval  IN     VARCHAR2 DEFAULT 'NULL',
   no_parse  IN     BOOLEAN DEFAULT FALSE,
   instance  IN     BINARY_INTEGER DEFAULT ANY_INSTANCE,
   force     IN     BOOLEAN DEFAULT FALSE);

2.更改job
 DBMS_JOB.CHANGE(  JOB IN BINARY_INTEGER,
   what                  IN VARCHAR2 DEFAULT NULL,
   next_date             IN DATE DEFAULT NULL,
   interval              IN VARCHAR2 DEFAULT NULL,
   instance              IN BINARY_INTEGER DEFAULT NULL,
   force                 IN BOOLEAN DEFAULT FALSE );

3.运行job
DBMS_JOB.RUN( 
      job    IN BINARY_INTEGER,
      force  IN BOOLEAN DEFAULT FALSE);

4.停止job
DBMS_JOB.BROKEN ( 
   job       IN  BINARY_INTEGER,
   broken    IN  BOOLEAN,
   next_date IN  DATE DEFAULT SYSDATE);

5.移除job
DBMS_JOB.REMOVE ( 
   job       IN  BINARY_INTEGER );

4.案例

1.建表
create table TEST(a date);

2.自定义过程
create or replace procedure myjob as
begin
insert into TEST values(sysdate);
end;
/

3.创建JOB
variable job1 number;

begin
dbms_job.submit(:job1,'myjob;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
end;
/

4.运行JOB
begin
dbms_job.run(:job1);
end;
/

5.验证
select to_char(a,'yyyy/mm/dd hh24:mi:ss') time from TEST;

TIME
-------------------
2024/06/16 13:43:53
2024/06/16 13:44:53

6.删除job
begin
dbms_job.remove(:job1);
end;
/ 

or

begin
  dbms_job.remove(23);
  commit;
end;
/

7.验证
select * from dba_jobs';
select * from dba_jobs_running;
select * from user_jobs;
select * from all_jobs;

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 15:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 15:16:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 15:16:02       82 阅读
  4. Python语言-面向对象

    2024-06-16 15:16:02       91 阅读

热门阅读

  1. Vite支持的React项目使用SASS指南

    2024-06-16 15:16:02       36 阅读
  2. Web前端行业文:揭秘技术与创新的交织之路

    2024-06-16 15:16:02       31 阅读
  3. React Hooks小记(二)_useRef

    2024-06-16 15:16:02       31 阅读