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 创建JOBcreate 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;
/
dec