Oracle job 管理

上一篇 / 下一篇  2009-03-01 17:12:34 / 个人分类:Oracle

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP
---------------------------------------------------------------
Oracle job 管理,介绍job的创建、删除、查看,及其各参数。
SVRMGR> select * from dba_jobs;
51Testing软件测试网;n%@2A,M ju C*Dh

初始化相关参数job_queue_processes
9N0qa(d8rfu0alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;job_queue_interval = 10 //调度作业刷新频率秒为单位51Testing软件测试网)|]Y9BNKp
DBA_JOBS describes all jobs in the database.
,GbY9o!` Q5n0USER_JOBS describes all jobs owned by the current user

\(VoYD8Kd051Testing软件测试网vn YZA-|"o:Pz

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)
8r'm;b$w&J02 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
51Testing软件测试网8W{c:Xo%z$x

8ke[%qYQW(k&|0
p_Xktz0查询job的情况。51Testing软件测试网@3{C+l0Em vLH
show paramter background_dump_dest.
4q0b$g!nV:YCS+w0看alter.log 和trace

9d@~~8U'W0

"{2X#B i'dHT0SVRMGR> select * from dba_jobs;51Testing软件测试网.\2M sC xpL"Ta

51Testing软件测试网 u3p.DrL?

初始化相关参数job_queue_processes
B/J%M9g%]T0alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000
51Testing软件测试网2m%s8VhUy0i

51Testing软件测试网.Hi {4K-\X!fy Y

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

v5C7]Ac8wn!|0

9[K-y2}y051Testing软件测试网'Lwq^Dm
DBA_JOBS describes all jobs in the database.51Testing软件测试网c\Q,mn
USER_JOBS describes all jobs owned by the current user
51Testing软件测试网&A)A[9@^q'A:l+g\!u

4gUq'Pc:bd.z01 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)51Testing软件测试网(h2N8?3Y%L
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
51Testing软件测试网J7E.y4T0s$j#B

s3e-`)wE1q9H n |0
}7u-^z+I8{0查询job的情况。51Testing软件测试网kJ/l.~!C*\6ZK\
show paramter background_dump_dest.
/[%t?*UJM0看alter.log 和trace
51Testing软件测试网cwnM ^{7j

51Testing软件测试网.tM`}7u#Q2G

请问我如何停止一个JOB51Testing软件测试网4|"b%Jt@3^'|2c%|
SQL> exec dbms_job.broken(1,true)
51Testing软件测试网meR(aTn7^8I.kf

/qU| B(H q4a/~WU\0PL/SQL 过程已成功完成。51Testing软件测试网Hj H*{(Z p
SQL>commit //必须提交否则无效
51Testing软件测试网8^a:Dz9z%v;r

#a$j{&yb{U#x&~0启动作业51Testing软件测试网Z+rwC!xm
SQL> exec dbms_job.broken(1,false)

&f&I8Wxg;O0

I3s y(N2znAy0PL/SQL 过程已成功完成。51Testing软件测试网H,q9Ch\E4L

?%b&F0dk lIE*V%[0其他用户的job
g G^ V8?1kYl1Qx8`0SQL>exec sys.dbms_ijob.broken(98,true);51Testing软件测试网cj7["N6P2_4f
SQL>commit;
51Testing软件测试网N#Lft/sUz:t

aR`z-I_jH051Testing软件测试网5U W(P l/A
============================51Testing软件测试网N?Z6K+C8Di+]yR

51Testing软件测试网fh I$U HNZ:r.y's

exec dbms_job.broken(:job) 停止
}d1jrEX(J,R0exec dbms_job.broken(186,true) //标记位broken51Testing软件测试网-H@+o q.F,^q&B
exec dbms_job.broken(186,false)//标记为非broken51Testing软件测试网5vY#_:AAG0Pzi
exec dbms_job.broken(186,false,next_day(sysdate,'monday')) //标记为非broken,指定执行时间
7D5Y)r9VRf0exec dbms_job.remove(:job);删除
JGpV4G,_#po0exec dbms_job.remove(186);51Testing软件测试网)FFyLf8[{
commit;

)h2h |)t z b l#]4@051Testing软件测试网7W/f pG~2M2M

把一个broken job重新运行51Testing软件测试网0K I rR|2w

']}8Gw#J051Testing软件测试网c @ Z/a3DqoQ
三、查看相关job信息
rCq@.F.n8m01、相关视图
E[u.v7x0dba_jobs
o R4k S6}^ ER-H0all_jobs51Testing软件测试网P"d]k\H ?D
user_jobs51Testing软件测试网5Z8rN4d;V[%B.K
dba_jobs_running 包含正在运行job相关信息
51Testing软件测试网k[3{6w$F eU

51Testing软件测试网{ X9eP0G }k6b2?'s)U


+S"o4? nA5f0创建JOB
^ _,d"i6?"H[$d0variable jobno number;
+ovp ^C&x V-`0begin
(z'nB@ }0dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
u*m3H:q;Xf}#?0commit;51Testing软件测试网4^G l%Guc
end;
wa:yV| ]%l1w0print jobno
51Testing软件测试网4Q9v#_A e.j8`N$^1y

&V V1cY-k8HX0例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:51Testing软件测试网;^g"Kr;{s7[au\
sql> variable n number;51Testing软件测试网#z#x ~W6o
sql> begin
\FZ7K6Uvb*Q0dbms_job.submit(:n‘my_job;’,sysdate,
y;`g"A.p-W0‘sysdate+1/360’);51Testing软件测试网a~-N+AX#` `L
commit;51Testing软件测试网6Lw d:\M.a&[
end;51Testing软件测试网*\ |$I;NC
Sql> print :n;
51Testing软件测试网4G2Y7X5o |)I6J2w:k

51Testing软件测试网 Yfh+L!P;M8d L\

系统提示执行成功。
*}GC-Of0Sql> print :n;
{q5n4B5yif(w0系统打印此任务的编号,例如结果为300。
51Testing软件测试网em-W1ovu&sw#U3Y}3R

\D(AT~7f t0简单例子
,dl,Dj-_:zI'jx)Ho0一个简单例子:

4Uz)^XSvX+C0

$g!v }$K6\3w0sd0创建测试51Testing软件测试网0svU9gL-f
SQL> create table TEST(a date);
51Testing软件测试网dn2xA/?*Dd

7nXxc-B6cNbb;zY0表已创建。

#\ufVBW0

K!OC#p'hst0bR,n0创建一个自定义过程51Testing软件测试网2QSzL'I6St^
SQL> create or replace procedure MYPROC as
~!|o&_\wqy02 begin
2XB+b.\#gMiiiq03 insert into TEST values(sysdate);
%z;{2N0Xz-s{?04 end;
A.C w'^7c`t05 /
51Testing软件测试网w)g%Bbv ^#Q6T)F \

-_TZ{y%iF&XP0过程已创建。51Testing软件测试网1g+x5_fK!H iN

51Testing软件测试网:e^Rq_d

创建JOB
q!f-V9JL0SQL> variable job1 number;51Testing软件测试网9r$bm`.M8E
SQL>
b4y^g!nX5R$F:C0SQL> begin
5R)W UxWZc02 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次51Testing软件测试网 U9wVHq7PUla
3 end;
(x G"OI`*m'Zh6l2R04 /

_Z/a.L(F7~051Testing软件测试网,rB'u'V[!U.p8@

PL/SQL 过程已成功完成。

:@&A.h [PP^051Testing软件测试网9S c*e o4JB8d+f

运行JOB
)J$Q5Y!Z#e0SQL> begin51Testing软件测试网G+^4N+Q.rX
2 dbms_job.run(:job1);51Testing软件测试网 v)NX(I8@|$v
3 end;51Testing软件测试网:Pf:m7W4YG
4 /
51Testing软件测试网*C]/Z`.dx4e5H5?

51Testing软件测试网Rdg-AV jM(xJ

PL/SQL 过程已成功完成。51Testing软件测试网s8t!C[c$B$R

51Testing软件测试网7NjW1k ~g%kp%B

SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;51Testing软件测试网'J'T!\-pif!RUp6w

UPv+wq[M0时间
*O)O~,xZ5H/PiAY0-------------------
`G6[%TJ-hd02001/01/07 23:51:2151Testing软件测试网 {u;aMZ!d:Iy(z
2001/01/07 23:52:22
2R9z3m*JXG]5x02001/01/07 23:53:24

1|u&|4@)T9X0

(C@[p F0]$cCE0删除JOB51Testing软件测试网;Cts~%Q,S
SQL> begin
&LA"@XG.k*|7R02 dbms_job.remove(:job1);51Testing软件测试网gc#?$Js
3 end;51Testing软件测试网|7a*_]E
4 /

zlZRpi.w%n XD051Testing软件测试网*`p^|$Ca

PL/SQL 过程已成功完成。

H/g9X#eV{&IT k0

2aj;Z5l8{Y] \9N,u0=======================================51Testing软件测试网rq9U@0a']:Mz g

51Testing软件测试网!jQQCN1G


l9Uz5|^7v0a、利用dbms_job.run()立即执行该job51Testing软件测试网T I7p@Q,E7D/uP
sql>begin
? w%o h'f pZYjZ0sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
PqQoqqH;I0sql>end;
M|f O{&i^0sql>/
9P%q.mXoOj0b、利用dbms_job.broken()重新将broken标记为false
#f9Pk[A }0sql>begin
6`V*g#Y^:a0sql>dbms_job.broken (:job,false,next_date)
$x%?9_ s ?0sql>end;51Testing软件测试网)E0H0hD/zi
sql>/
51Testing软件测试网-?HqJZ,zt(?)R

fd$?.@-_F3_b'GU w/m0========================================51Testing软件测试网[|3@k(S `!@r.x-g
SQL> create table a(a date);51Testing软件测试网 @ BZx%i,^3h
Table created
51Testing软件测试网 B;}@4OuSh3@

*H"e!^I,T.Q+l]A)B0创建一个过程51Testing软件测试网+F4^#_LJ9s/uf
SQL> create or replace procedure test as
v5f$}8Wx.u jP02 begin51Testing软件测试网1@R;M"Q5TwjI6Zr@
3 insert into a values(sysdate);
q n-P yt rn04 end;51Testing软件测试网a I`:g.| c;`qp
5 /
"?M/BetVI0Procedure created

&ox;^c(f B:?051Testing软件测试网 si T$Dy

提交作业51Testing软件测试网\x-L4G2n V/]
SQL> declare51Testing软件测试网 I"h8^r p b@xg`4AO
2 job1 number; //定义一个数字型变量
N)P-G&[p03 begin51Testing软件测试网[a v8~Qu
4 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); //按分钟算一天1440分钟51Testing软件测试网*kwi]qw
5 end;51Testing软件测试网,i&Wga4W
6 /
F6k0\X%DsE0PL/SQL procedure successfully completed
X1GuR5yj0wf0job1
k4N3D&o^Rg0I0---------
%F"GgK"hP:U(H04
!^ }!q%vBW'?w0SQL> commit;51Testing软件测试网9n v ? s$zQ!QBLhp
Commit complete
51Testing软件测试网K O!A%H!Y K\Z {

N?|#\9n0运行作业51Testing软件测试网?Vx2c7A4]y4ZI(o
SQL> begin51Testing软件测试网G W9v2SVv8e5R ws
2 dbms_job.run(4);51Testing软件测试网&GPlwwO
3 end;
YE)q"fV `04 /
\WKUO9nxa1fO0PL/SQL procedure successfully completed

3e.Jji{ hDjr0

2XN_M#v {Q0删除作业
:Q\Px-qK'N_0SQL> begin
/B k9M?C&{02 dbms_job.remove(4);
;CY!S`7Fo{1K7L+g03 end;
Q(]@.B(?r&_04 /
D~1}D-Bz0PL/SQL procedure successfully completed
A%T!t$RC7d({"s0SQL> commit;
9Kt&s@9y6Sl1r0Commit complete
51Testing软件测试网;IdH7E0b$i[

51Testing软件测试网#[*nd UT"l k#]

51Testing软件测试网r6x#ywg7^gT
job change//修改作业51Testing软件测试网*X&[)A}Y;[m,VME'L
execute dbms_job.change(186,null,null,'sysdate+3');
5R*h8[pg"V3T(dS'U0execute dbms_job.change(186,'scott.test(update)');
51Testing软件测试网,U5RkJ9Hy0l

51Testing软件测试网 ox!D,G$^ X

DBA_JOBS51Testing软件测试网:h E#`G4r%Rt*p
===========================================
#Ey#|~$Q)]0字段(列) 类型 描述
#hJ_{3JC0JOB NUMBER 任务的唯一标示号
Xv@4BVB#D$X0LOG_USER VARCHAR2(30) 提交任务的用户51Testing软件测试网/dG Zb8E1r.?6P
PRIV_USER VARCHAR2(30) 赋予任务权限的用户
(EFY0p OX0SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式51Testing软件测试网OCv,JgH+v w
LAST_DATE DATE 最后一次成功运行任务的时间
@rc3{ c Z0LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒51Testing软件测试网9t2[Q#\?Q)|1T.k+mS.t
THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为null51Testing软件测试网+hE"VP*B+c3a Q
THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒
f0[?9htU0NEXT_DATE DATE 下一次定时运行任务的时间51Testing软件测试网2P\rRS6I$C^0T
NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒
+g)o5]I,J `rs^4y0TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒51Testing软件测试网)q*PpP9Q
BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行51Testing软件测试网j1L{^'h+@ c
INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式
~g%|'~'h*^6Oy0FAILURES NUMBER 任务运行连续没有成功的次数
oq)E^6E$`0WHAT VARCHAR2(2000) 执行任务的PL/SQL块
;i*Y$T2M/g*iu8YV0CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符
aj'a,L H4W0CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙51Testing软件测试网8CvbT\Y
CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙51Testing软件测试网3MB,h Cf@
NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置51Testing软件测试网F"rjp1h t
MISC_ENV RAW(32) 任务运行的其他一些会话参数
51Testing软件测试网h c.Z JR]"fj

51Testing软件测试网!J9N t9IFB

9~.F}d2R`]0描述 INTERVAL参数值51Testing软件测试网LH4iy4e'JL
每天午夜12点 'TRUNC(SYSDATE + 1)'51Testing软件测试网^2mE:^ `1RO+g
每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'51Testing软件测试网3e'iI lCqg m
每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'51Testing软件测试网/q"ep*X/g4J3Bmm.u'Y$F:`
每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
v~^^w-m(k$j^0每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
B}/~'@mI@0每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

#H j-J;b0Bq*LY7D0

TAG:

 

评分:0

我来说两句

Open Toolbar