立深入浅出Oracle作业建立全攻略(oracle作业如何建)
立深入浅出:Oracle作业建立全攻略
Oracle作业建立是DBA管理数据库时必备的一项技能,可以方便地自动化执行一系列数据库操作任务,从而减少工作量,提高效率。本文旨在深入浅出地介绍Oracle作业建立全攻略,帮助DBA们快速掌握这项技能。
一、Oracle作业建立的定义
Oracle作业建立是指将一个或多个PL/SQL程序包、过程或脚本组成的任务打包成一个作业(job),并设置作业计划,实现自动执行这些任务的功能。Oracle作业建立可以完成的任务包括备份、数据清理、数据导出、统计信息等等。
二、Oracle作业建立的步骤
1. 创建作业
语法:DBMS_SCHEDULER.CREATE_JOB
示例代码:
begin
dbms_scheduler.create_job(job_name => ‘backup_database’, job_type => ‘PLSQL_BLOCK’, job_action => ‘begin backup_database; end;’, start_date => to_timestamp_tz(‘2022-08-01 00:05:00.00000 America/Los_Angeles’, ‘yyyy-mm-dd hh24:mi:ss.ff tzr’), repeat_interval => ‘FREQ=DLY;BYHOUR=1;’, enabled => TRUE, comments => ‘每天凌晨1点进行数据库备份’);
end;
该代码将创建一个名为backup_database的作业,使用PL/SQL_BLOCK类型,job_action执行备份数据库的操作,start_date指定起始时间,repeat_interval设置为每天凌晨1点执行备份,enabled确定它是否激活,comments为备注信息。
2. 定义作业任务
语法:DBMS_SCHEDULER.DEFINE_PROGRAM
示例代码:
begin
dbms_scheduler.define_program(program_name => ‘backup_database’, program_type => ‘STORED_PROCEDURE’, program_action => ‘backup_database’, comments => ‘备份数据库’);
end;
该代码将定义一个名为backup_database的程序,使用STORED_PROCEDURE类型,调用backup_database存储过程,comments为备注信息。
3. 绑定作业与任务
语法:DBMS_SCHEDULER.ASSIGN_PROGRAM
示例代码:
begin
dbms_scheduler.assign_program(job_name => ‘backup_database’, program_name => ‘backup_database’, comments => ‘备份数据库’);
end;
该代码将backup_database作业和backup_database程序绑定在一起,comments为备注信息。
4. 设置作业计划
语法:DBMS_SCHEDULER.SET_ATTRIBUTE
示例代码:
begin
dbms_scheduler.set_attribute(name => ‘backup_database’, attribute => ‘repeat_interval’, value => ‘FREQ=DLY;BYHOUR=1;’, comments => ‘每天凌晨1点进行数据库备份’);
end;
该代码将为backup_database作业设置重复间隔为每天凌晨1点进行数据库备份,comments为备注信息。
5. 启用作业
语法:DBMS_SCHEDULER.ENABLE、DBMS_SCHEDULER.DISABLE
示例代码:
begin
dbms_scheduler.enable(‘backup_database’);
— dbms_scheduler.disable(‘backup_database’);
end;
该代码将启用backup_database作业,如果要停用该作业,可使用dbms_scheduler.disable(‘backup_database’)。
三、Oracle作业管理
1. 查询作业列表
语法:DBMS_SCHEDULER.GET_JOBS
示例代码:
select * from table(dbms_scheduler.get_jobs);
该代码将列出所有已创建的作业。
2. 查询作业状态
语法:DBMS_SCHEDULER.RUN_JOB、DBMS_SCHEDULER.STOP_JOB、DBMS_SCHEDULER.PAUSE_JOB、DBMS_SCHEDULER.RESUME_JOB
示例代码:
begin
dbms_scheduler.run_job(job_name => ‘backup_database’, use_current_session => FALSE);
— dbms_scheduler.stop_job(job_name => ‘backup_database’, force => TRUE, commit_semantics => ‘TRANSACTIONAL’, wt_for_completion => TRUE);
— dbms_scheduler.pause_job(job_name => ‘backup_database’);
— dbms_scheduler.resume_job(job_name => ‘backup_database’);
end;
该代码将运行backup_database作业,如果要停用该作业,可使用dbms_scheduler.stop_job(job_name => ‘backup_database’),如果要暂停该作业,可使用dbms_scheduler.pause_job(job_name => ‘backup_database’),如果要恢复该作业,可使用dbms_scheduler.resume_job(job_name => ‘backup_database’)。
3. 删除作业
语法:DBMS_SCHEDULER.DROP_JOB
示例代码:
begin
dbms_scheduler.drop_job(job_name => ‘backup_database’, force => FALSE);
end;
该代码将删除backup_database作业,如果force设置为TRUE,则将删除与该作业关联的所有程序和计划。
四、总结
本文介绍了Oracle作业建立的定义、步骤和管理方法,并提供了相应的示例代码,可以帮助DBA们快速掌握这项技能。使用Oracle作业建立可以减少DBA的工作量,提高效率,极大地增强数据库管理能力。