ORACLE 创建作业JOB

Oracle定时任务Job Oracle定时任务Job摘要 Oracle定时任务Job是数据库管理员常用的自动化工具,可通过脚本直接管理任务而无需界面操作。Oracle提供两种创建方式:传统的DBMS_JOB包和更先进的DBMS_SCHEDULER包(10g后推荐使用)。Job可以执行PL/SQL块、SQL语句或存储过程,支持定时或手动触发。 主要内容: 创建方式:DBMS_JOB使用submit()方法,DBMS_SCHEDULER使用create_job() 管理功能:可查看、修改、运行、停止和删除Job 相关视图:user_jo 阅读详情
--1.plsql中学习job   
--学习job  
--建表  
create table test_job(para_date date);  
commit;  

insert into test_job values(sysdate);  
commit; 

select * from test_job;

--建立存贮过程   
create or replace procedure test_jobproce   as  
begin  
insert into test_job values(sysdate);  
end test_jobproce; 

--建立job  
--建立job后默认是执行的  

declare  test_job_really number;  
begin  
dbms_job.submit(test_job_really,'test_jobproce;',sysdate,'sysdate+1/1440');  
commit;  
end;  

---停止job  25是建立的job test_job_really  
begin  
dbms_job.broken(25,true);  
commit;  
end;  

--启动job  
begin  
dbms_job.run(25);  
commit;  
end;  

--删除job  

begin   
dbms_job.remove(25);  
commit;  
end;  

--查看执行结果  
select  * from test_job order by test_job.para_date desc;   

--查看job  
select * from sys.user_jobs   

--使用下面的SQL查询是否JOB还在Running,前提是需要job执行时间不能过短  

select * from dba_jobs_running  

--除了submit参数外,其余的几个参数有:  
--运行job 
dbms_job.run(v_job);  

--停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。  
dbms_job.broke(v_job,true,next_date); 

--删除某个job  
dbms_job.remove(v_job);  
dbms_job.what(v_job,'sp_fact_charge_code;'); 

--修改某个job名 修改下一次运行时间  
 dbms_job.next_date(v_job,sysdate);

Oracle中job的使用详解

我们在项目开发中,常常会有一些复杂的业务逻辑。使用oracle的存储过程,可以大大减少java程序代码的编写工作量,而且存储过程执行在数据库上,这样可以利用oracle的良好性能支持,极大地提高程序执行效率和稳定性。定时执行存储过程,就要用到job。

以下是常用的参数说明:

字段(列)          类型                 描述 
JOB                NUMBER          任务的唯一标示号 
LOG_USER           VARCHAR2(30)    提交任务的用户 
PRIV_USER          VARCHAR2(30)    赋予任务权限的用户 
SCHEMA_USER        VARCHAR2(30)    对任务作语法分析的用户模式 
LAST_DATE          DATE            最后一次成功运行任务的时间 
LAST_SEC           VARCHAR2(8)     如HH24:MM:SS格式的last_date日期的小时,分钟和秒 
THIS_DATE          DATE            正在运行任务的开始时间,如果没有运行任务则为null 
THIS_SEC           VARCHAR2(8)     如HH24:MM:SS格式的this_date日期的小时,分钟和秒 
NEXT_DATE          DATE            下一次定时运行任务的时间 
NEXT_SEC           VARCHAR2(8)     如HH24:MM:SS格式的next_date日期的小时,分钟和秒 
TOTAL_TIME         NUMBER          该任务运行所需要的总时间,单位为秒 
BROKEN             VARCHAR2(1)     标志参数,Y标示任务中断,以后不会运行 
INTERVAL           VARCHAR2(200)   用于计算下一运行时间的表达式 
FAILURES            NUMBER         任务运行连续没有成功的次数 
WHAT               VARCHAR2(2000)  执行任务的PL/SQL块 
CURRENT_SESSION_LABEL RAW          MLSLABEL 该任务的信任Oracle会话符 
CLEARANCE_HI      RAW MLSLABEL     该任务可信任的Oracle最大间隙 
CLEARANCE_LO      RAW              MLSLABEL 该任务可信任的Oracle最小间隙 
NLS_ENV           VARCHAR2(2000)   任务运行的NLS会话设置 
MISC_ENV          RAW(32)          任务运行的其他一些会话参数
描述                          INTERVAL参数值 
每天午夜12点              'TRUNC(SYSDATE + 1)' 
每天早上8点30分           'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)' 
每星期二中午12点          'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24' 
每个月第一天的午夜12点     'TRUNC(LAST_DAY(SYSDATE ) + 1)' 
每个季度最后一天的晚上11点  'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' 
每星期六和日早上6点10分    'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

一、设置初始化参数 job_queue_processes

  sql> alter system set job_queue_processes=n;(n>0)

job_queue_processes最大值为1000
  
查看job queue 后台进程

  sql>select name,description from v$bgprocess;

二,dbms_job package 用法介绍

包含以下子过程:
  

Broken()过程。   
change()过程。   
Interval()过程。   
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。

1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
这个过程有三个参数:job 、broken与next_date。

PROCEDURE Broken (job    IN binary_integer,
           Broken  IN boolean,
           next_date IN date :=SYSDATE)

job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。 bitsCN.Com
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。

job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken重新启动状态为broken的job,有如下两种方式;
  a、利用dbms_job.run()立即执行该job
  

  sql>begin
    sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
    sql>end;
    sql>/

  b、利用dbms_job.broken()重新将broken标记为false
  

  sql>begin
    sql>dbms_job.broken (:job,false,next_date)
    sql>end;
    sql>/

2、Change()过程用来改变指定工作的设置。
  这个过程有四个参数:job、what 、next_date与interval。
  

  PROCEDURE Change (job    IN binary_integer,
           What    IN varchar2,
           next_date IN date,
           interval  IN varchar2)

  
  此job参数是一个整数值,它唯一标识此工作。
  What参数是由此工作运行的一块PL/SQL代码块。
  next_date参数指示何时此工作将被执行。
  interval参数指示一个工作重执行的频度。 中国.网管联盟
  
3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。这个过程有两个参数:job与interval。
  

  PROCEDURE Interval (job   IN binary_integer,
            Interval IN varchar2)

  
  job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。
  
4、ISubmit()过程用来用特定的工作号提交一个工作。这个过程有五个参数:job、what、next_date、interval与no_parse。
  

  PROCEDURE ISubmit (job    IN binary_ineger,
            What   IN varchar2,
            next_date IN date,
            interval IN varchar2,
            no_parse IN booean:=FALSE)

  
  这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。
  
5、Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。
  

  PROCEDURE Next_Date(job     IN binary_ineger,
            next_date  IN date)

  job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。
  
6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:
  

  PROCEDURE Remove(job IN binary_ineger);

  
  job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。已正在运行的工作不能由调用过程序删除。
  
7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:
  

  PROCEDURE Run(job IN binary_ineger) 

  
  job参数标识将被立即执行的工作。
  
8、使用Submit()过程,工作被正常地计划好。
  这个过程有五个参数:job、what、next_date、interval与no_parse。
  

  PROCEDURE Submit ( job    OUT binary_ineger,
            What   IN varchar2,
            next_date IN date,
            interval IN varchar2,
            no_parse IN booean:=FALSE)

  
  job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
  what参数是将被执行的PL/SQL代码块。
  next_date参数指识何时将运行这个工作。
  interval参数何时这个工作将被重执行。
  no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。
  
9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。
  此程序有两个参数:job与my_call。
  

  PROCEDURE User_Export(job    IN binary_ineger,
             my_call  IN OUT varchar2)

  
  job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要的正文。
  
10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。
  
  PROCEDURE What (job IN binary_ineger,
          What IN OUT varchar2)
  job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。
  
三、查看相关job信息
  1、相关视图
  dba_jobs
  all_jobs
  user_jobs
  dba_jobs_running 包含正在运行job相关信息

2、查看相关信息

  SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN
  SQL>FROM DBA_JOBS;
  
  JOB NEXT_DATE NEXT_SEC FAILURES B
  ------- --------- -------- -------- -
  9125 01-JUN-01 00:00:00 4 N
  14144 24-OCT-01 16:35:35 0 N
  9127 01-JUN-01 00:00:00 16 Y
  3 rows selected.

正在运行的JOB相关信息

  SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC
  FROM DBA_JOBS_RUNNING r, DBA_JOBS j
  WHERE r.JOB = j.JOB;
  
  SID JOB LOG_USER THIS_DATE THIS_SEC
  ----- ---------- ------------- --------- --------
  12 14144 HR 24-OCT-94 17:21:24
  25 8536 QS 24-OCT-94 16:45:12
  2 rows selected.

  
JOB QUEUE LOCK相关信息
  

  SELECT SID, TYPE, ID1, ID2
  FROM V$LOCK
  WHERE TYPE = 'JQ';
  
  SID TY ID1 ID2
  --------- -- --------- ---------
  12 JQ 0 14144
  1 row selected.

四、简单例子

一个简单例子:
  
创建测试表

  SQL> create table TEST(a date);

表已创建。
  
创建一个自定义过程

  SQL> create or replace procedure MYPROC as
   2 begin
   3 insert into TEST values(sysdate);
   4 end;
   5 /

过程已创建。
  
创建JOB

  SQL> variable job1 number;
  SQL> 
  SQL> begin
   2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
   3 end;
   4 /

PL/SQL 过程已成功完成。
  
运行JOB

  SQL> begin
   2 dbms_job.run(:job1);
   3 end;
   4 /

PL/SQL 过程已成功完成。 

  SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;
  
  时间
  -------------------
  2001/01/07 23:51:21
  2001/01/07 23:52:22
  2001/01/07 23:53:24

  
删除JOB

  SQL> begin
   2 dbms_job.remove(:job1);
   3 end;
   4 /

PL/SQL 过程已成功完成。

【Oracle】Oracle JOB常用操作 【代码】Oracle job常用操作。 阅读详情

相关推荐

车底盘:阿克曼转向和四轮差速

特性四轮差速四轮转向阿克曼转向转向方式控制左右轮组速度差控制四个轮子的角度控制前轮角度(后轮固定)运动原理滑移摩擦(搓着走)纯滚动(滚着走)近乎纯滚动(低速时)能耗高低(实现纯滚动时)中轮胎磨损非常严重小中灵活性高(可原地旋转)极高(可全向移动)低(转弯半径大)控制精度较低(受地面摩擦影响大)极高高机械复杂度低(通常只需2个驱动电机)极高(需4个转向+4个驱动执行器)中(需1个转向+2个驱动执行器)典型应用坦克、履带车辆、简单AGV、扫地机器人豪华轿车、高性能全向AGV。

bing_feilong的博客 1928

ORACLE JOB创建及使用详解

都有哪些

m0_38048955的博客 5560

网口电路/Bob Smith电路思考及测试

上表中的数据为实际数据,此时可以看出在结果比对中,分别为以上三种时,结果基本上变化很小,且网口一致性指标都是测试通过的,而且如果真的Bob Smith电路是有阻抗变换的作用的,我的以上操作(保留阻容、去掉电阻、去掉电阻电容)完全破环了阻抗平衡,但是实际上对网口一致性指标没有多大的影响,这是我认为该电路不具有阻抗变换的第一个原因。网口变压器的共模电感,就是电流型中的T10、T14、T17、T18,我们知道辐射超标一般都是共模电流导致的,而共模电感就是来消耗差分线路中的共模电流的,而对差模电流基本无影响。

domen_pan的博客 6059

oracle 创建job两种方法

目前支持三种类型:PL/SQL块: PLSQL_BLOCK,存储过程: STORED_PROCEDURE,外部程序: EXECUTABLE (外部程序可以是一个shell脚本,也可以是操作系统级别的指令)job_action:根据job_type的不同,job_action有不同的含义,这里我们指定的是存储过程类型,这里就写的是相对应的存储过程名字。job_name:顾名思义给job起个名字,相比较用dbms_job创建job使用数字代表job,schedule_job更具可读性。comments:备注。

雨花石 7834

手把手教你学simulink(13.2)--构建一个单相并网逆变器Simulink仿真模型

基于Simulink的单相并网逆变器项目的详细仿真实例。这个项目将重点放在逆变器的详细建模、最大功率点跟踪(MPPT)控制策略、并网控制和仿真分析上。我们将使用MATLAB/Simulink来构建整个系统,并通过具体的代码和模块来实现各个功能。

MHD0815的博客 545

使用 Simulink + Simscape Electrical 对锂电池储能系统的充放电管理策略进行建模与仿真

摘要:本文详细介绍了基于Simulink的锂电池储能系统充放电管理策略建模与仿真方法。重点阐述了系统结构设计、建模过程(包括锂电池模型、充放电控制器、热管理系统等模块搭建)以及仿真设置。通过分析荷电状态管理、温度控制和功率限制等核心要素,展示了如何实现安全高效的充放电策略。仿真结果可验证系统性能,为优化管理策略提供依据。该方法为新能源存储和智能电网应用提供了实用的仿真分析工具。

amy_mhd的博客 159

Oracle中的定时任务

Oracle中的定时任务jo

m0_71406734的博客 2万+

Python实战日志_P4_图书馆Web API服务

目标:使用Flask将图书馆系统升级为RESTful API服务,掌握Web开发基础难度:⭐⭐⭐⭐☆预计学习时间:75分钟前置要求:已完成第3篇《个人图书馆管理系统》

qq_39436086的博客 84

oracle 创建作业,ORACLE 创建作业JOB例子===

ORACLE 创建作业JOB例子--1.plsql中学习job--学习job--建表create table test_job(para_date date);commit;insert into test_job values(sysdate);commit;select*from test_job;--建立存贮过程create or replace procedure test_jobproc...

weixin_42514394的博客 182

解析AI人工智能领域AI芯片的散热技术

当你用ChatGPT写代码、用AI生成高清图片时,背后的AI芯片可能正在“发高烧”——全球TOP500超算的平均功耗已突破10兆瓦,单颗GPU的峰值功耗超过700W(相当于3台家用空调同时运行)。本文将聚焦AI芯片的散热技术,覆盖从基础原理到前沿方案的全链条解析,帮助读者理解“散热为什么比算力更重要”。

AIGC应用创新大全的博客 937

YOLO11有效改进专栏目录

YOLO11改进专栏导航

A1983Z的博客 3684

ORACLE dbms_scheduler.create_job创建job作业遭遇PLS-00306

今天,一同事创建job作业时遇到一个问题,在使用dbms_scheduler.create_job创建job作业遭遇PLS-00306报错。 具体的报错信息如下: dbms_scheduler.create_job * ERROR at line 2: ORA-06550: line 2, column 3: PLS-00306: wrong number or types of arguments in call to 'CREATE_JOB' ORA-06550: line...

www_xue_xi的博客 2393

开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了稳压电源的基础知识与应用实验。首先阐述了稳压电源的定义与类型,包括线性稳压电源(如LM7805/7905)和开关稳压电源(降压/升压/升降压式)的工作原理、参数特点及优劣势。随后详细讲解了各类稳压电源的实验设计,如线性稳压电源的电路实现、开关稳压电源的PWM控制方法等。最后汇总了硬件工程师相关的笔试面试资源,涵盖器件知识、电路仿真、企业真题等内容。全文结合理论分析与Multisim仿真,为电子工程学习者提供了稳压电源的实用技术参考。

XU157303764的博客 1641

oracle 作业怎么建,学习Oracle环境中job创建

Oracle中job的创建:create table date_log(create_date date constraint create_date_pk primary key);create or replace procedure create_date_log_rowisbegininsert into date_log(create_date)values(sysdate);end;/...

weixin_29291573的博客 138

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ORACLE 创建作业JOB例子

--1.plsql中学习job    --学习job   --建表   create table test_job(para_date date);   commit;      insert into test_job values(sysdate);   commit;    select * from test_job;    --建立存贮过程    create o

zjkdcwt520的博客 481

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Oracle 创建作业JOB的例子

链接地址:http://www.cnblogs.com/lumnm/archive/2012/08/31/2666155.html --1.plsql中学习job    --学习job   --建表   create table test_job(para_date date);   commit;      insert into test_job values(s

漂泊一剑客的专栏 946

oracle 作业怎么建,oracle创建作业(job)

创建job1、创建一张表g_testcreate table G_TEST(IDNUMBER(12),C_DATE DATE)2、创建一个sequencecreate sequence G_SEQminvalue 1maxvalue 999999999999999999999999999start with 141increment by 1cache 20;3、创建一个存储过程create o...

weixin_42137539的博客 1155

oracle创建定时作业(job)

创建job语句 begin sys.dbms_job.submit(job => :job, what => 'to17_check;', next_date => to_date('14-11-2014 06:00:00', 'dd-mm-yyyy hh24:mi:ss'),

莫弃c的博客 2743
上一篇: Oracle优化器(RBO与CBO)
下一篇: Oracle Job的使用(定时执行)
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值