[size=large]
搞过oracle开发的人都知道,oracle在10g之后推出了新的job创建方式。10g引入的这个dbms_scheduler包,替代了之前的dbms_job包,该包功能更强大,可以将job需要的各种资源分开再进行组合。
本文不针对dbms_scheduler包进行解析,只是对比create_job方法和之前创建job之间的区别。
一、创建方式不同
1.dbms_scheduler包
方式:
首先给当前用户赋予create job 权限。
grant create job to scott;
然后创建代码:
begin
dbms_scheduler.create_job(
job_name => 'job_g_test2',
job_type => 'STORED_PROCEDURE',
job_action => 'prc_g_test2',
start_date => sysdate,
repeat_interval => 'sysdate+1/1440'
);
end;
job_name: 顾名思义,每个job都必须有一个的名称
schedule_name: 如果定义了计划,在这里指定计划的名称
job_type: 目前支持三种类型:
PL/SQL块: PLSQL_BLOCK,
存储过程: STORED_PROCEDURE
外部程序: EXECUTABLE (外部程序可以是一个shell脚本,也可以是操作系统级别的指令).
job_action: 根据job_type的不同,job_action有不同的含义.
如果job_type指定的是存储过程,就需要指定存储过程的名字;
如果job_type指定的是PL/SQL块,就需要输入完整的PL/SQL代码;
如果job_type指定的外部程序,就需要输入script的名称或者操作系统的指令名
enabled: 上面已经说过了,指定job创建完毕是否自动激活
comments: 对于job的简单说明
start_date :开始时间
repeat_interval :频率
2.10g之前创建方式
declare
job number;
begin
dbms_job.submit(job,'prc_g_test;',sysdate,'sysdate+1/1440');
end;
使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE Submit ( job OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块。
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
指示此PL/SQL代码在它第一次执行时应进行语法分析,
而FALSE指示本PL/SQL代码应立即进行语法分析。
在command window窗口中执行下面脚本
variable job1 number;
begin
sys.dbms_job.submit(job => :job,
what => 'prc_g_test;',
next_date => to_date('22-10-2008 10:06:41', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
commit;
end;
/
----------------------------------------------------------------------------------
在plSQL中我的做法是:
declare
job number;
begin
sys.dbms_job.submit(job,'prc_g_test;',sysdate,'sysdate+1/1440');
end;
----------------------------------------------------------------------------------
这样创建的job,在plsql developer中可以之间看到
而用dbms_scheduler包创建的只能通过查询字典表得到:user_scheduler_jobs
用传统方式创建的查询字典表:user_jobs
二、比较经确定
例子是,通过两种方式均创建一个job,均调用存储过程,向不同表中每1分钟插入一条数据,并记录插入时间,比较结果如图:
传统方式:
dbms_scheduler包创建方式:
可见,针对精确度,dbms_scheduler包确实比传统方式好了太多了!!!
[/size]
- 大小: 8.6 KB
- 大小: 54.4 KB
- 大小: 72.8 KB
分享到:
相关推荐
创建 Job 有两种方式:使用代码创建 Job 和使用设置的方式创建 Job。 3.1 使用代码创建 Job ```sql declare test_job_really number; begin dbms_job.submit(test_job_really, 'test_jobproce;', sysdate, '...
Oracle Job是Oracle数据库中的一种调度工具,用于在指定的时间自动执行PL/SQL代码或存储过程。这在数据库管理和维护中非常有用,特别是对于定期运行的任务,如数据清理、备份、统计分析等。以下是对创建Oracle Job的...
- **变量赋值**:在Oracle中,变量赋值有两种方式,即`=赋值`和`SELECT ... INTO 变量 FROM DUAL`。对于动态SQL,`execute immediate`是必要的,因为它允许在运行时构建和执行SQL语句。 - **权限管理**:存储过程中...
`job_test_log`表被创建,包含两个字段:`XH`(编号)和`nr`(备注)。其中`XH`被定义为主键,不允许为空。主键用于唯一标识表中的每一行记录,确保数据的完整性和一致性。 ### 3. 创建触发器(Trigger) `Trigger...
Oracle作业是一种定时执行的数据库任务,它可以通过DBMS_JOB包来创建、管理和控制。一个作业通常由以下几个部分组成: - **JOB编号**:系统自动分配的唯一标识符。 - **WHAT**:执行的具体SQL语句或存储过程。 - **...
##### 创建Job示例: ```sql DECLARE job_num NUMBER; BEGIN DBMS_JOB.SUBMIT ( job => :job_num, what => 'test_proc;', next_date => SYSDATE, interval => 'sysdate+1/24/60'); COMMIT; END; ``` 上述...
2. Oracle Job任务的类型:Oracle Job任务可以分为两种:一次性任务和循环任务。一旦性任务只执行一次,而循环任务则可以根据设置的时间频率执行多次。 3. Oracle Job任务的调度:Oracle Job任务的调度是通过DBMS_...
创建Job的过程包括定义任务、指定执行时间以及关联执行的SQL或PL/SQL代码。例如,`MYPROC.prc`可能是一个自定义的存储过程,用于执行数据同步的相关操作。通过设置Job,我们可以确保这个过程在我们需要的时间点自动...
根据提供的信息,我们可以详细探讨关于 Oracle Job 的一系列关键知识点,包括如何在 Oracle 数据库中创建、管理和维护定时任务(Jobs)。 ### Oracle Job 概念 Oracle Job 是一种数据库特性,允许用户设置定时任务...
在Oracle数据库系统中,"Job调度存储过程"和"触发器"是两种强大的工具,用于自动化数据库维护和管理任务。本教程将深入探讨这两个概念以及它们如何协同工作以实现定时更新数据库。 首先,我们来理解"Job调度存储...
Oracle Job 是一种在 Oracle 数据库中用于自动化任务执行的机制,尤其适合于定期维护和后台处理。`DBMS_JOB` 是一个系统包,提供了一系列的子程序,允许用户创建、修改、删除和管理作业(Jobs),这些作业可以在指定...
XXL-JOB是一个分布式任务调度平台,主要由两部分组成:调度中心(xxl-job-admin)和执行器(xxl-job-executor)。本资源“xxl-job-admin-2.4.1-SNAPSHOT”是针对Oracle数据库的版本,意味着它已经配置好与Oracle...
创建一个Oracle JOB通常涉及以下几个步骤:定义作业(DBMS_SCHEDULER.CREATE_JOB),指定执行时间(DBMS_SCHEDULER.SET_ATTRIBUTE),启动作业(DBMS_SCHEDULER.RUN_JOB),以及监控和管理作业状态(DBMS_SCHEDULER....
Oracle 定时执行存储过程是一种高效的方式来执行存储过程,通过使用 Oracle 提供的 job 机制来实现。Job 机制允许开发者创建、计划和执行存储过程,实现自动化和批量处理。 Broken() 过程 Broken() 过程用于更新...
这可以通过使用SQLPlus和SQLDeveloper两种方式实现。SQLPlus是一个命令行工具,可用于执行SQL语句和PL/SQL程序。通过输入用户名和密码,你可以连接到Oracle数据库并查询用户下的对象。SQLDeveloper是一个图形界面...
Oracle 数据库提供了一种称为“带参数视图”的特性,允许我们在创建视图时传递参数,从而使得视图能够根据这些参数的变化展示不同的数据。 #### 带参数视图的实现原理 实现带参数视图的基本思路是利用 PL/SQL 包...
综上所述,Oracle提供了两种方式来实现定时任务——`DBMS_JOB`和`DBMS_SCHEDULER`。对于简单的定时任务,`DBMS_JOB`就足够了;而对于更复杂的需求,建议使用功能更为强大的`DBMS_SCHEDULER`。无论是哪种方式,都允许...
- 查看该参数的方法有两种: - `show parameter job_queue_processes;` - `select * from v$parameter where name = 'job_queue_processes';` - 修改该参数: `alter system set job_queue_processes = 10;` ####...