1

我想以 1000 行为单位对大量行进行更新。当将更新语句放入一些定期执行的 DBMS_JOB 中时,是否有办法在受影响的行数变为零后让作业自行挂起?

一个工作可以找到它自己的工作 ID 以便它可以调用DBMS_JOB.Broken()吗?

4

2 回答 2

2
select JOB from all_jobs
where what like '%YOUR_JOB_PROCEDURE%';

另外,我建议使用 DBMS_SCHEDULER 而不是 DBMS_JOB,如果它在您的 Oracle 版本中也可用 http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm

于 2012-09-07T13:05:19.090 回答
2

JOB ID 是 JOB 列:

select * from dba_jobs

当前正在运行的作业:

select dbr.sid, s.serial#, s.username, dbj.* 
from dba_jobs_running dbr, dba_jobs dbj , v$session s 
where dbr.job=dbj.job and s.sid=dbr.sid;
于 2012-09-07T12:57:02.267 回答