oracle的 job,Oracle job 管理

SVRMGR> select * from dba_jobs;

初始化相关参数job_queue_processes

alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000  ;job_queue_interval = 10  //调度作业刷新频率秒为单位

DBA_JOBS describes all jobs in the database.

USER_JOBS describes all jobs owned by the current user

1  select job,what,to_char(last_date,‘yyyy-mm-dd HH24:mi:ss‘),to_char(next_date,‘yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)

2 select job,what,last_date,next_date,interval from  dba_jobs where job in (1,3);

查询job的情况。

show paramter background_dump_dest.

看alter.log 和trace

SVRMGR> select * from dba_jobs;

初始化相关参数job_queue_processes

alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000

job_queue_interval = 10  //调度作业刷新频率秒为单位

DBA_JOBS describes all jobs in the database.

USER_JOBS describes all jobs owned by the current user

1  select job,what,to_char(last_date,‘yyyy-mm-dd HH24:mi:ss‘),to_char(next_date,‘yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)

2 select job,what,last_date,next_date,interval from  dba_jobs where job in (1,3);

查询job的情况。

show paramter background_dump_dest.

看alter.log 和trace

请问我如何停止一个JOB

SQL> exec dbms_job.broken(1,true)

PL/SQL 过程已成功完成。

SQL>commit  //必须提交否则无效

启动作业

SQL> exec dbms_job.broken(1,false)

PL/SQL 过程已成功完成。

停其他用户的job

SQL>exec sys.dbms_ijob.broken(98,true);

SQL>commit;

============================

exec dbms_job.broken(:job) 停止

exec dbms_job.broken(186,true) //标记位broken

exec dbms_job.broken(186,false)//标记为非broken

exec dbms_job.broken(186,false,next_day(sysdate,‘monday‘)) //标记为非broken,指定执行时间

exec dbms_job.remove(:job);删除

exec dbms_job.remove(186);

commit;

把一个broken job重新运行

三、查看相关job信息

1、相关视图

dba_jobs

all_jobs

user_jobs

dba_jobs_running 包含正在运行job相关信息

创建JOB

variable jobno number;

begin

dbms_job.submit(:jobno, ‘statspack.snap;‘, trunc(sysdate+1/24,‘HH‘), ‘trunc(SYSDATE+1/24,‘‘HH‘‘)‘, TRUE, :instno);

commit;

end;

print jobno

例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:

sql> variable n number;

sql> begin

dbms_job.submit(:n‘my_job;’,sysdate,

‘sysdate+1/360’);

commit;

end;

Sql> print :n;

系统提示执行成功。

Sql> print :n;

系统打印此任务的编号,例如结果为300。

简单例子

一个简单例子:

创建测试表

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 过程已成功完成。

=======================================

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>/

========================================

SQL> create table a(a date);

Table created

创建一个过程

SQL> create or replace procedure test as

2  begin

3  insert into a values(sysdate);

4  end;

5  /

Procedure created

提交作业

SQL> declare

2  job1 number;   //定义一个数字型变量

3  begin

4  dbms_job.submit(:job1,‘test;‘,sysdate,‘sysdate+1/1440‘);  //按分钟算一天1440分钟

5  end;

6  /

PL/SQL procedure successfully completed

job1

---------

4

SQL> commit;

Commit complete

运行作业

SQL> begin

2  dbms_job.run(4);

3  end;

4  /

PL/SQL procedure successfully completed

删除作业

SQL> begin

2  dbms_job.remove(4);

3  end;

4  /

PL/SQL procedure successfully completed

SQL> commit;

Commit complete

job change//修改作业

execute dbms_job.change(186,null,null,‘sysdate+3‘);

execute dbms_job.change(186,‘scott.test(update)‘);

DBA_JOBS

===========================================

字段(列)          类型                 描述

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)‘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值