1. 简介
在Oracle 10g之前,我们通过DBMS_JOB来管理定时任务;
而10g之后,则推荐使用DBMS_SCHEDULER来管理定时任务,因为它提供了更强大的功能和灵活的机制。
2. 需要的权限
CREATE JOB -- (必须, 要执行DBMS_SCHEDULER, 需要有create job权限)
CREATE EXTERNAL JOB -- (可选, 创建执行操作系统命令的job时需要)
# 查询用户所拥有的角色以及角色所包含的权限
select * from role_sys_privs where role in (
select granted_role from dba_role_privs where grantee='SCOTT'
) order by role;
# 查询直接授予用户的权限
select * from dba_sys_privs where grantee='SCOTT';
3. 一个简单的Demo
3.1 创建JOB
create table test_t1(id int, create_date date);
create or replace procedure test_p1
is
v_maxId test_t1.id%type := 1;
begin
select nvl(max(id), 0) into v_maxId from test_t1;
insert into test_t1 values(v_maxId + 1, sysdate);
commit;
end test_p1;
/
declare
v_count int := 0;
begin
select count(*) into v_count from user_scheduler_jobs where job_name='TEST_JOB1';
if v_count > 0 then
dbms_scheduler.drop_job('TEST_JOB1');
end if;
dbms_scheduler.create_job (
job_name => 'test_job1',
job_type => 'STORED_PROCEDURE',
job_action => 'TEST_P1',
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=1',
enabled => true
);
end;
/
# 参数说明
job_name : 必选, 任务名称
job_type : 必选, 任务类型(
PLSQL_BLOCK, -- 执行一个PL/SQL匿名快
STORED_PROCEDURE, -- 执行一个存储过程
EXECUTABLE, -- 执行一个外部程序
CHAIN -- 执行一个CHAIN
)
job_action : 必选, 任务内容, 与job_type配合使用
start_date : 可选, 首次执行时间, 为空时表示立即执行
repeat_interval : 可选, 执行频率, 为空时表示只执行一次(
FREQ=MINUTELY; -- 表示间隔单位, 可选值有YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY
INTERVAL=1 -- 表示间隔周期
)
enabled : 可选, 是否启用任务
详细参数可参考:
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS729603.2 查看JOB执行情况
-- 查看已创建的JOB
select job_name, job_type, enabled, state from user_scheduler_jobs;
-- 查看JOB运行日志
select log_id, log_date, status from user_scheduler_job_run_details where job_name='TEST_JOB1';
3.3 删除JOB
exec dbms_scheduler.drop_job('TEST_JOB1');
# 相关链接
http://blog.itpub.net/7607759/viewspace-610951
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS72300
分享到:
相关推荐
Oracle定时任务,也被称为Oracle数据库的调度作业,是Oracle数据库管理系统提供的一种功能,允许用户预定义一系列操作,如运行SQL脚本、数据备份或数据清理等,并设定在特定时间自动执行。这种机制对于自动化数据库...
### Oracle定时任务实现方法 #### 一、使用`DBMS_JOB` 在Oracle数据库中,`DBMS_JOB`包提供了一种简单的方式来安排周期性或一次性的工作。以下将详细介绍如何使用`DBMS_JOB`来创建、运行和管理定时任务。 ##### ...
Oracle定时任务,是数据库管理中的一个重要组成部分,它允许系统管理员或开发者按照预定义的时间间隔执行特定的任务,如数据备份、清理、报表生成等。在Oracle中,这种功能通常通过DBMS_SCHEDULER或以前的DBMS_JOB包...
5. **文件名称列表**:`oracle定时任务`和`存储过程`这两个文件名可能是指包含有关如何在实际环境中设置和使用这些功能的文档或脚本。在学习和实践中,可以参考这些文件以获取更具体的步骤和示例。 综上所述,...
dbms_scheduler.create_job ( job_name => 'AGENT_LIQUIDATION_JOB', job_type => 'STORED_PROCEDURE', job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存储过程名 start_date => sysdate, repeat_...
Oracle的Job定时功能是Oracle数据库系统提供的一种自动化任务调度机制,允许用户设定特定的时间点或时间间隔执行数据库操作。在项目开发中,特别是在大数据管理和分析的场景下,定时任务经常被用于更新数据、生成...
Oracle Jobs 是一种数据库级别的定时任务,通过DBMS_JOB或DBMS_SCHEDULER包来创建和管理。这些包提供了丰富的功能,如周期性执行、延迟启动、依赖关系设定等,使得数据库维护和业务流程自动化变得更加方便。 2. **...
1. **DBMS_SCHEDULER介绍**:DBMS_SCHEDULER是Oracle 11g引入的新的调度包,取代了旧的DBMS_JOB,提供了更灵活和安全的定时任务管理。它可以创建一次性或重复性的作业,支持多种执行模式,如PL/SQL程序、操作系统...
然后利用DBMS_SCHEDULER.CREATJOB包创建了一个定时任务,该任务计划在特定的时间(如每晚23:50)运行,以定时发送邮件到各部门主管的邮箱。 在DBMS_SCHEDULER的使用中,特别提到了DBA角色对于任务调度的重要性。DBA...
Oracle定时任务,也被称为Oracle调度(Oracle Scheduler),是Oracle数据库系统中的一个重要组件,用于安排数据库内的作业自动执行。这些作业可以包括数据备份、清理过期记录、运行统计分析等日常维护任务。Oracle ...
5. **监控和管理作业**:使用`DBA_JOBS`和`DBA_SCHEDULER_JOBS`视图可以查看作业的状态和历史,也可以通过`DBMS_SCHEDULER.DROP_JOB`删除不再需要的作业。 触发器在Oracle中的应用则更加注重于事件响应。它们可以在...
总结来说,Oracle的DBMS_SCHEDULER提供了丰富的功能,不仅允许创建和管理复杂的定时任务,还提供了灵活的参数配置,以满足各种业务需求。通过熟练掌握DBMS_SCHEDULER,数据库管理员能够更好地优化数据库性能,提高...
1. DBMS_SCHEDULER:Oracle的事件调度器允许我们创建、修改和管理计划任务。通过DBMS_SCHEDULER包中的函数和过程,我们可以设置任务在特定日期和时间执行,或者按周期重复。 创建定时任务的基本步骤: - 使用DBMS...
总结来说,Oracle Job 是数据库自动化管理的强大工具,无论是简单的定时任务还是复杂的作业链,都能通过 DBMS_JOB 或 DBMS_SCHEDULER 实现。理解并熟练掌握这一特性,将极大地提高数据库管理效率和任务自动化水平。
### Navicat创建计划任务和即时备份,修改默认备份目录操作说明 #### 一、创建计划任务 在使用Navicat进行数据库管理时,通过创建计划任务可以实现定期自动备份数据库的功能,这对于确保数据安全至关重要。 1. **...
- **查询 Job 状态**: `SELECT * FROM dba_scheduler_jobs WHERE job_name = 'INSERT_TEST_TBL';` #### 三、使用 Programs **2.1 创建 Programs** Program 是一组预定义操作的集合,可以被多个 Job 使用。创建 ...
实现Oracle定时任务的步骤通常包括以下几个部分: 1. **创建调度程序(Scheduler)**:首先,你需要启用Oracle的调度程序服务,这可以通过DBMS_SCHEDULER系统包中的START_SCHEDULER过程来完成。 2. **创建作业...