Thứ Ba, 1 tháng 12, 2020

Quản lý Scheduler Job trong Oracle Database

DBMS_SCHEDULER là 1 giải pháp lên lịch chạy chương trình có từ Oracle 10g.  Cách tạo job cũ với DBMS_JOB vẫn có thể sử dụng

NỘI DUNG
1    Tạo 1 job
2    Xóa 1 job
3    Chạy 1 job ngay lập tức 
4    Thay đổi các thuộc tính của job
5    Stop job đang chạy
6    Enable / Disable a job
7    Giám sát jobs

1. TẠO JOB

Phải có quyền CREATE JOB mới được tạo:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
     job_name           => 'my_java_job',
     job_type           => 'EXECUTABLE',
     job_action         => '/usr/bin/java myClass',
     repeat_interval    => 'FREQ=MINUTELY',
     enabled            => TRUE
  );
END;
/

begin
dbms_scheduler.create_job (
   job_name           =>  'migrate_files',
   job_type           =>  'executable',
   job_action         =>  '/home/oracle/bin/migrate_files.sh',
   start_date         =>  '01-mar-2010 07:00:00 am',
   repeat_interval    =>  'freq=daily',
   enabled            =>  true);
end;
/

repeat_intervalMô tả

freq=hourly

Chạy hàng giờ

freq=daily; byhour=3

Chạy hàng ngày lúc 3 am 

freq=daily; byhour=8,20

Chạy hàng ngày lúc  8 am và 8 pm 

freq=monthly; bymonthday=1

Chạy hàng tháng vào ngày đầu tiên

freq=monthly; bymonthday=-1

Chạy hàng tháng vào ngày cuối cùng của tháng

freq=yearly; bymonth=sep; bymonthday=20;

Chạy hàng năm vào ngày 20 tháng 09

2. XÓA JOB
EXEC DBMS_SCHEDULER.DROP_JOB('my_java_job');

begin
dbms_scheduler.drop_job ('run_load_sales');
end;
/

3. CHẠY JOB NGAY BÂY GIỜ

EXEC dbms_scheduler.run_job('myjob');

begin
dbms_scheduler.run_job (job_name => 'run_load_sales');
end;
/

hoặc

begin
dbms_scheduler.run_job('myjob');
end;

4. THAY ĐỔI THUỌC TÍNH JOB

EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('WEEKNIGHT_WINDOW', 'duration', '+000 06:00:00');
BEGIN 
  DBMS_SCHEDULER.SET_ATTRIBUTE
     ('WEEKNIGHT_WINDOW', 'repeat_interval', 
      'freq=daily;byday=MON, TUE, WED, THU, FRI;byhour=0;byminute=0;bysecond=0');
END;

begin
dbms_scheduler.set_attribute (
name               =>  'run_load_sales',
attribute          =>  'repeat_interval',
value              =>  'freq=daily; byhour=3');
end;
/

5. Stop Jobs đang chạy

begin
dbms_scheduler.stop_job (job_name => 'run_load_sales');
end;
/


6. Enable / Disable job

BEGIN 
  DBMS_SCHEDULER.ENABLE('myjob');
END;

begin
dbms_scheduler.enable (job_name => 'run_load_sales');
end;
/

BEGIN 
  DBMS_SCHEDULER.DISABLE('myjob');
END;

begin
dbms_scheduler.disable (job_name => 'run_load_sales');
end;
/

7. Giám sát job
-- Check job chạy lâu nhất, job chạy gần nhất cách đây 60 ngày

select owner,job_name,job_creator,state,job_type,last_run_duration,job_action,schedule_type,start_date,repeat_interval,last_start_date,next_run_date from dba_scheduler_jobs

where    owner not  like 'SYS'

and state!='DISABLED'

--and last_start_date > sysdate-60

order by last_run_duration desc;


SELECT * FROM dba_scheduler_running_jobs WHERE job_name = 'MY_JAVA_JOB';

SELECT * FROM dba_scheduler_jobs WHERE job_name = 'MY_JAVA_JOB';

SELECT * FROM dba_scheduler_job_log WHERE job_name = 'MY_JAVA_JOB';

Hoặc kiểm tra JOB của schema khác

 SELECT * FROM user_scheduler_jobs WHERE job_name = 'MY_JAVA_JOB';

 SELECT * FROM user_scheduler_job_log WHERE job_name = 'MY_JAVA_JOB';


KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH: 📧 Mail: binhoracle@gmail.com ☎️ Mobile: 0902912888 ⚡️ Skype: tranbinh48ca 👨 Facebook: https://www.facebook.com/BinhOracleMaster 👨 Inbox Messenger: https://m.me/101036604657441 (profile) 👨 Fanpage: https://www.facebook.com/tranvanbinh.vn 👨 Inbox Fanpage: https://m.me/tranvanbinh.vn 👨👩 Group FB: https://www.facebook.com/groups/OracleDBAVietNam 👨 Website: http://www.tranvanbinh.vn 👨 Blogger: https://tranvanbinhmaster.blogspot.com 🎬 Youtube: http://bit.ly/ytb_binhoraclemaster 👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi 👨 Linkin: https://www.linkedin.com/in/binhoracle 👨 Twitter: https://twitter.com/binhoracle 👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội #OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #oce #ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master