Oracle中通过dbms_scheduler替换Linux中的crontab

At 2010-01-24

转载请注明文章转载自:Dbabc.Net [http://dbabc.net]
本文链接:http://dbabc.net/archives/2010/01/24/oracle-dbms_scheduler.shtml

比如完成周日0级全备、周三1级备份、其它星期为2级备份,每天都是4:30开始执行,crontab里是如下设置:

$ crontab -l
30 4 * * 0 /orahome/backup/rman_level.sh 0
30 4 * * 3 /orahome/backup/rman_level.sh 1
30 4 * * 1,2,4,5,6 /orahome/backup/rman_level.sh 2

现在可以在oracle里通过dbms_scheduler包来设置,完成以上功能的调度设置如下:

SQL> conn /as sysdba

SQL> BEGIN
DBMS_SCHEDULER.drop_job (job_name => ‘rman_level0′);
END;
/
SQL> BEGIN
DBMS_SCHEDULER.drop_job (job_name => ‘rman_level1′);
END;
/
SQL> BEGIN
DBMS_SCHEDULER.drop_job (job_name => ‘rman_level2′);
END;
/

SQL> BEGIN
DBMS_SCHEDULER.create_job (
job_name              => ‘rman_level0′,
job_type              => ‘EXECUTABLE’,
job_action            => ‘/orahome/backup/rman_level.sh’,
number_of_arguments   => 1,
repeat_interval       => ‘freq=daily; BYDAY=SUN; byhour=4; byminute=30′,
enabled               => FALSE,
auto_drop             => FALSE,
comments              => ‘rman incremental level 0 backup database’
);
DBMS_SCHEDULER.set_job_argument_value (‘rman_level0′, 1, ’0′);
DBMS_SCHEDULER.enable (‘rman_level0′);
END;
/

SQL> BEGIN
DBMS_SCHEDULER.create_job (
job_name              => ‘rman_level1′,
job_type              => ‘EXECUTABLE’,
job_action            => ‘/orahome/backup/rman_level.sh’,
number_of_arguments   => 1,
repeat_interval       => ‘freq=daily; BYDAY=WED; byhour=4; byminute=30′,
enabled               => FALSE,
auto_drop             => FALSE,
comments              => ‘rman incremental level 1 backup database’
);
DBMS_SCHEDULER.set_job_argument_value (‘rman_level1′, 1, ’1′);
DBMS_SCHEDULER.enable (‘rman_level1′);
END;
/

SQL> BEGIN
DBMS_SCHEDULER.create_job (
job_name              => ‘rman_level2′,
job_type              => ‘EXECUTABLE’,
job_action            => ‘/orahome/backup/rman_level.sh’,
number_of_arguments   => 1,
repeat_interval       => ‘freq=daily; BYDAY=MON,TUE,THU,FRI,SAT; byhour=4; byminute=30′,
enabled               => FALSE,
auto_drop             => FALSE,
comments              => ‘rman incremental level 2 backup database’
);
DBMS_SCHEDULER.set_job_argument_value (‘rman_level2′, 1, ’2′);
DBMS_SCHEDULER.enable (‘rman_level2′);
END;
/

使用dbms_sheduler包来设置定时任务的主要优势,除了安全原因外(也就是不想让能登陆linux的用户能看到数据库的备份策略),还有就是可以通过查看表dba_scheduler_job_run_details获得每次调度的详细信息:

SQL> SELECT   log_date,
status,
req_start_date,
actual_start_date,
run_duration,
additional_info
FROM   dba_scheduler_job_run_details
WHERE   job_name LIKE ‘RMAN%’
ORDER BY   1 DESC;

无觅相关文章插件,快速提升流量

Copyright © Dbabc.Net All Rights Reserved. 本站内容仅代表个人观点, 与其他任何组织或公司无关

-The End-

发表评论


*

为你保密









Copyright © Dbabc.Net All Rights Reserved. 本站内容仅代表个人观点, 与其他任何组织或公司无关

Powered by Wordpress and Theme by WPYOU