DBA_JOBS describes all jobs in the database. ALL_JOBS describes all jobs in the database that are accessible to the current user. USER_JOBS describes all jobs owned by the user. DBA_JOBS_RUNNING lists all jobs that are currently running in the instance.一个相关的重要参数,可同时运行的job上限值 SQL> show parameter job_queue_processes;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ job_queue_processes integer 10
SQL> 1.dbms_job.submit 创建job SQL> create or replace procedure resch as 2 begin 3 delete from emp where empno = 2; 4 COMMIT; 5 delete from emp where empno = 3; 6 COMMIT; 7 delete from emp where empno = 4; 8 COMMIT; 9 end; 10 /
Procedure created
SQL> set serveroutput on SQL> SQL> DECLARE 2 v_job NUMBER(20); 3 BEGIN 4 dbms_job.submit(v_job,'begin resch; end;',SYSDATE,'SYSDATE+1/24/60'); 5 dbms_output.put_line(v_job); 6 END; 7 /
70
PL/SQL procedure successfully completed --注:next_date参数决定下次运行时间.下次运行前会调用interval参数计算再下次的运行时间. SQL> select * from dba_jobs t where t.JOB=70;
JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE ---------- ------------------------------ ------------------------------ ------------------------------ ----------- ---------------- ----------- ---------------- ----------- ---------------- ---------- ------ -------------------------------------------------------------------------------- ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------------------------------- ---------- 87 SCOTT SCOTT SCOTT 2010-8-25 1 17:09:25 0 N SYSDATE+1/24/60 begin resch; end; NLS_LANGUAGE='SIMPLIFIED CHINESE' NLS_TERRITORY='CHINA' NLS_CURRENCY='¥' NLS_ISO 0102000200000000 0
ALL_JOBS describes all jobs in the database that are accessible to the current user.
USER_JOBS describes all jobs owned by the user.
DBA_JOBS_RUNNING lists all jobs that are currently running in the instance.一个相关的重要参数,可同时运行的job上限值
SQL> show parameter job_queue_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
SQL>
1.dbms_job.submit 创建job
SQL> create or replace procedure resch as
2 begin
3 delete from emp where empno = 2;
4 COMMIT;
5 delete from emp where empno = 3;
6 COMMIT;
7 delete from emp where empno = 4;
8 COMMIT;
9 end;
10 /
Procedure created
SQL> set serveroutput on
SQL>
SQL> DECLARE
2 v_job NUMBER(20);
3 BEGIN
4 dbms_job.submit(v_job,'begin resch; end;',SYSDATE,'SYSDATE+1/24/60');
5 dbms_output.put_line(v_job);
6 END;
7 /
70
PL/SQL procedure successfully completed
--注:next_date参数决定下次运行时间.下次运行前会调用interval参数计算再下次的运行时间.
SQL> select * from dba_jobs t where t.JOB=70;
JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE
---------- ------------------------------ ------------------------------ ------------------------------ ----------- ---------------- ----------- ---------------- ----------- ---------------- ---------- ------ -------------------------------------------------------------------------------- ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------------------------------- ----------
87 SCOTT SCOTT SCOTT 2010-8-25 1 17:09:25 0 N SYSDATE+1/24/60 begin resch; end; NLS_LANGUAGE='SIMPLIFIED CHINESE' NLS_TERRITORY='CHINA' NLS_CURRENCY='¥' NLS_ISO 0102000200000000 0
SQL>
2.dbms_job.broken 停止job或唤醒jobSQL> exec dbms_job.broken(job => 87,broken => true,next_date => sysdate);--停止job
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
SQL> exec dbms_job.broken(job => 87,broken => false,next_date => sysdate);--唤醒job
PL/SQL procedure successfully completed
SQL> commit
2 ;
Commit complete
SQL>
3.dbms_job.remove 删除job
SQL> exec dbms_job.remove(job => 87);--删除job
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
SQL> select * from dba_jobs t where t.JOB=87;--已无数据
JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE
---------- ------------------------------ ------------------------------ ------------------------------ ----------- ---------------- ----------- ---------------- ----------- ---------------- ---------- ------ -------------------------------------------------------------------------------- ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------------------------------- ----------
SQL>