oracle scheduler任務
一、job有兩個元件scheduler和programs
1.把programs程式碼和scheduler放在job引數中,不用元件化
a.建立一個log表用於測試
create table log(
user_name varchar2(10),
user_date date)
b.建立儲存過程pro_insert_t 每次執行該過程都會向T表插入一條記錄
create or replace procedure pro_insert_t as
begin
insert into log values (user,sysdate);
end;
c.建立一個job
begin
DBMS_SCHEDULER.create_job(
job_name => 'exec_procedure',
job_type => 'STORED_PROCEDURE', --執行儲存過程
job_action => 'pro_insert_t', --儲存過程名
start_date => sysdate,
repeat_interval => 'FREQ=minutely;INTERVAL=1;', --每三分鐘執行一次,重複間隔
comments => 'My first job');
end;
d.啟動job
exec dbms_scheduler.enable('exec_procedure');
e.檢視job執行情況
SQL> select log_id,log_date,job_name,status from user_scheduler_job_run_details;
LOG_ID LOG_DATE JOB_NAME STATUS
---------- --------------------------------------------------------------------------- -------------------- ----------------
7243 19-MAR-14 08.48.22.156000 PM +08:00 EXEC_PROCEDURE SUCCEEDED
SQL> select *from log;
USER_NAME USER_DATE
---------- ------------
SCOTT 19-MAR-14
f.禁用job
SQL> exec dbms_scheduler.disable('exec_procedure');
PL/SQL procedure successfully completed.
g.刪除job
begin
dbms_scheduler.drop_job('exec_proc');
end;
/
2.把scheduler和名字和programs的名字放在job引數中
每隔1分鐘新增一條資料
1)建立一個表
create table log(
user_name varchar2(10),
user_date date)
2)建立一個過程
create or replace procedure pro_insert_t as
begin
insert into log values (user,sysdate);
end;
3)grant create job to scott;
4)建立program
begin
dbms_scheduler.create_program(
program_name=>'prog1',
program_action=>'scott.pro_insert_t',
program_type=>'STORED_PROCEDURE',
enabled=>true,
comments=>'first program');
end;
SQL> select program_name,program_type,program_action from user_scheduler_programs;
PROGRAM_NAME PROGRAM_TYPE PROGRAM_ACTION
------------------------------ ---------------- ---------------------------------------
PROG1 STORED_PROCEDURE scott.pro_insert_t
5)建立scheduler
begin
dbms_scheduler.create_schedule(
schedule_name=>'scheduler1',
start_date=>systimestamp,
end_date=>systimestamp+1,
repeat_interval=>'freq=minutely;interval=1',
comments=>'every minutely');
end;
SQL> select schedule_name,schedule_type,start_date from user_scheduler_schedules;
SCHEDULE_NAME SCHEDULE START_DATE
------------------------------ -------- -----------------------------------------------------
SCHEDULER1 CALENDAR 19-MAR-14 09.07.21.656000 PM +08:00
6)建立job
begin
dbms_scheduler.create_job
(
job_name=>'job1',
program_name=>'scott.prog1',
schedule_name=>'scott.scheduler1'
);
end;
7)啟用job
SQL> select job_name,enabled from user_scheduler_jobs;
JOB_NAME ENABL
-------------------- -----
JOB1 FALSE
EXEC_PROCEDURE FALSE
begin
dbms_scheduler.enable('job1');
end;
8)監控job執行狀況(user_scheduler_job_run_details)
SQL> select log_id,log_date,job_name,status from user_scheduler_job_run_details;
LOG_ID LOG_DATE JOB_NAME STATUS
---------- --------------------------------------------------------------------------- -------------------- ----------------
7243 19-MAR-14 08.48.22.156000 PM +08:00 EXEC_PROCEDURE SUCCEEDED
7244 19-MAR-14 08.51.22.125000 PM +08:00 EXEC_PROCEDURE SUCCEEDED
7245 19-MAR-14 09.15.21.093000 PM +08:00 JOB1 SUCCEEDED
7246 19-MAR-14 09.16.21.109000 PM +08:00 JOB1 SUCCEEDED
SQL> select * from log;
USER_NAME USER_DATE
---------- ------------
SCOTT 19-MAR-14
SCOTT 19-MAR-14
SCOTT 19-MAR-14
SCOTT 19-MAR-14
9)停用、刪除job
dbms_scheduler.disable('job1');
dbms_scheduler.drop_job('job1');
dbms_scheduler.drop_scheduler('SCHEDULER1');
dbms_scheduler.drop_program('PROG1');
二.檢視所有job
dba_scheduler_job
三.監控job執行情況
dba_scheduler_job_run_details
1.把programs程式碼和scheduler放在job引數中,不用元件化
a.建立一個log表用於測試
create table log(
user_name varchar2(10),
user_date date)
b.建立儲存過程pro_insert_t 每次執行該過程都會向T表插入一條記錄
create or replace procedure pro_insert_t as
begin
insert into log values (user,sysdate);
end;
c.建立一個job
begin
DBMS_SCHEDULER.create_job(
job_name => 'exec_procedure',
job_type => 'STORED_PROCEDURE', --執行儲存過程
job_action => 'pro_insert_t', --儲存過程名
start_date => sysdate,
repeat_interval => 'FREQ=minutely;INTERVAL=1;', --每三分鐘執行一次,重複間隔
comments => 'My first job');
end;
d.啟動job
exec dbms_scheduler.enable('exec_procedure');
e.檢視job執行情況
SQL> select log_id,log_date,job_name,status from user_scheduler_job_run_details;
LOG_ID LOG_DATE JOB_NAME STATUS
---------- --------------------------------------------------------------------------- -------------------- ----------------
7243 19-MAR-14 08.48.22.156000 PM +08:00 EXEC_PROCEDURE SUCCEEDED
SQL> select *from log;
USER_NAME USER_DATE
---------- ------------
SCOTT 19-MAR-14
f.禁用job
SQL> exec dbms_scheduler.disable('exec_procedure');
PL/SQL procedure successfully completed.
g.刪除job
begin
dbms_scheduler.drop_job('exec_proc');
end;
/
2.把scheduler和名字和programs的名字放在job引數中
每隔1分鐘新增一條資料
1)建立一個表
create table log(
user_name varchar2(10),
user_date date)
2)建立一個過程
create or replace procedure pro_insert_t as
begin
insert into log values (user,sysdate);
end;
3)grant create job to scott;
4)建立program
begin
dbms_scheduler.create_program(
program_name=>'prog1',
program_action=>'scott.pro_insert_t',
program_type=>'STORED_PROCEDURE',
enabled=>true,
comments=>'first program');
end;
SQL> select program_name,program_type,program_action from user_scheduler_programs;
PROGRAM_NAME PROGRAM_TYPE PROGRAM_ACTION
------------------------------ ---------------- ---------------------------------------
PROG1 STORED_PROCEDURE scott.pro_insert_t
5)建立scheduler
begin
dbms_scheduler.create_schedule(
schedule_name=>'scheduler1',
start_date=>systimestamp,
end_date=>systimestamp+1,
repeat_interval=>'freq=minutely;interval=1',
comments=>'every minutely');
end;
SQL> select schedule_name,schedule_type,start_date from user_scheduler_schedules;
SCHEDULE_NAME SCHEDULE START_DATE
------------------------------ -------- -----------------------------------------------------
SCHEDULER1 CALENDAR 19-MAR-14 09.07.21.656000 PM +08:00
6)建立job
begin
dbms_scheduler.create_job
(
job_name=>'job1',
program_name=>'scott.prog1',
schedule_name=>'scott.scheduler1'
);
end;
7)啟用job
SQL> select job_name,enabled from user_scheduler_jobs;
JOB_NAME ENABL
-------------------- -----
JOB1 FALSE
EXEC_PROCEDURE FALSE
begin
dbms_scheduler.enable('job1');
end;
8)監控job執行狀況(user_scheduler_job_run_details)
SQL> select log_id,log_date,job_name,status from user_scheduler_job_run_details;
LOG_ID LOG_DATE JOB_NAME STATUS
---------- --------------------------------------------------------------------------- -------------------- ----------------
7243 19-MAR-14 08.48.22.156000 PM +08:00 EXEC_PROCEDURE SUCCEEDED
7244 19-MAR-14 08.51.22.125000 PM +08:00 EXEC_PROCEDURE SUCCEEDED
7245 19-MAR-14 09.15.21.093000 PM +08:00 JOB1 SUCCEEDED
7246 19-MAR-14 09.16.21.109000 PM +08:00 JOB1 SUCCEEDED
SQL> select * from log;
USER_NAME USER_DATE
---------- ------------
SCOTT 19-MAR-14
SCOTT 19-MAR-14
SCOTT 19-MAR-14
SCOTT 19-MAR-14
9)停用、刪除job
dbms_scheduler.disable('job1');
dbms_scheduler.drop_job('job1');
dbms_scheduler.drop_scheduler('SCHEDULER1');
dbms_scheduler.drop_program('PROG1');
二.檢視所有job
dba_scheduler_job
三.監控job執行情況
dba_scheduler_job_run_details
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26937943/viewspace-1125313/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle定時任務dbms_schedulerOracle
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- 定時任務scheduler
- oracle定時任務dbms_job與dbms_scheduler使用方法Oracle
- Oracle Database Scheduler整理OracleDatabase
- Oracle定時任務Oracle
- mysql和oracle計劃任務MySqlOracle
- 詳解 MySQL 用事件排程器 Event Scheduler 建立定時任務MySql事件
- 詳解MySQL用事件排程器Event Scheduler建立定時任務MySql事件
- Scheduler in Oracle Database 10g(轉)OracleDatabase
- Easy Scheduler 1.0.2 釋出,分散式工作流任務排程系統分散式
- oracle排程程式作業dbms_schedulerOracle
- oracle使用DBMS_SCHEDULER排程作業Oracle
- Oracle 定時任務job實際應用Oracle
- Oracle診斷案例-Job任務停止執行Oracle
- 任務佇列,巨集任務與微任務佇列
- oracle11g: Scheduler Maintenance Tasks or Autotasks (Doc ID 756734.1)OracleAINaN
- XXL-JOB定時任務框架(Oracle定製版)框架Oracle
- 巨集任務和微任務
- SpringBoot與非同步任務、定時任務、郵件任務Spring Boot非同步
- JavaScript巨集任務和微任務JavaScript
- 任務
- JavaScript的巨集任務與微任務JavaScript
- 任務系統之Jenkins子任務Jenkins
- Event Loop、 巨集任務和微任務OOP
- Oracle無法自動排程DBMS_JOB&DBMS_SCHEDULER案例分析Oracle
- ORACLE dbms_scheduler.create_job建立job作業遭遇PLS-00306Oracle
- 微任務、巨集任務與Event-LoopOOP
- macrotask 巨集任務 + microtask 微任務區別Mac
- js中的巨集任務和微任務JS
- ORACLE 11G 維護視窗和自動維護任務Oracle
- crontab任務
- 任務一
- 任務池
- 2020.11.21 任務
- 任務05
- 任務1
- 任務。1
- 任務4