承接上文,本片具体讨论一下plan_jobs,在数据库中常常需要用到很多的计划任务,
主要是实现数据的定时处理。比如在本次开发中,我们有一个酒店取消预订的计划任务需要实施,存储过程如下
----取消房间预订
PROCEDURE CANCELPREBOOK
AS
cursor cur_prebook is
select t.prebookid,t.roomid
from prebook t
where t.valid=0
and t.roomid =-1
and t.scheduledate<sysdate;
CURSOR CUR_HASPREBOOK IS
select t.prebookid,t.roomid
from prebook t
where t.valid=0
AND T.ROOMID<>-1
and t.scheduledate<sysdate;
v_id number;
v_roomid number;
V_STATUS NUMBER;
BEGIN
open cur_prebook;
loop
fetch cur_prebook into v_id,v_roomid;
exit when cur_prebook%notfound;
----取消预订表
update prebook t
set t.valid=1
where t.valid=0
and t.prebookid=v_id;
----取消预订房间
update rooms rm
set rm.status=1
where rm.roomid=v_roomid;
end loop;
close cur_prebook;
----CANCEL HASN'T IN
OPEN CUR_HASPREBOOK;
loop
fetch CUR_HASPREBOOK into v_id,v_roomid;
exit when CUR_HASPREBOOK%notfound;
SELECT T.STATUS INTO V_STATUS
FROM ROOMS T WHERE T.ROOMID=V_ROOMID;
IF V_STATUS=2 THEN
----CANCEL ROOM
UPDATE ROOMS RS SET RS.STATUS=1
WHERE RS.ROOMID=v_roomid;
---CANCEL PREBOOK RECORD
UPDATE PREBOOK BK SET BK.VALID=1
WHERE BK.PREBOOKID= v_id;
END IF;
END LOOP;
CLOSE CUR_HASPREBOOK;
END CANCELPREBOOK;
具体的方法是:
1,打开pl/sql的command window。
2,定义一个number变量叫jobno。
sql>variable jobno number;
3,提交任务。
SQL> begin
2 dbms_job.submit(--pro C的语法
:jobno,----任务计划系统编号
'ems_planjob_pkg.CANCELPREBOOK;',----调用计划包中的目标过程
sysdate+(45/1440),----首次执行时间
'sysdate+1'-----间隔执行时间
);
3 end;
4 /-----激活
成功后提示如下
PL/SQL procedure successfully completed
用户可以查询出当前的任务计划,确认是否正确,语句如下
select * from user_jobs;
分享到:
相关推荐
本教程将通过实例深入探讨如何在Oracle中设置计划任务。 首先,我们需要了解Oracle中的计划任务组件。`DBMS_SCHEDULER`是Oracle提供的包,用于创建、管理和执行计划任务。这个包提供了丰富的接口,可以创建一次性...
在Linux环境中手动构建Oracle实例是一项高级且复杂的任务,通常适用于需要定制化配置或特殊需求的场景。本文档将根据给定的信息,详细介绍如何在Linux环境下手动创建Oracle实例的过程,并深入解释每个步骤中的关键...
在 Linux 环境中,为了正确运行 Oracle,首先需要设置一系列环境变量,这些变量用于指定 Oracle 的安装目录、实例名等关键信息。具体操作如下: ```bash export ORACLE_BASE=/oracle export ORACLE_HOME=/oracle/...
【Oracle 10G单实例ASM】是一种Oracle数据库技术,用于在单一数据库实例中管理存储。这个技术,称为Automatic Storage Management(自动存储管理),能够自动处理数据文件、控制文件、重做日志文件等的存储和管理,...
在Oracle RAC环境中进行实例管理是一项重要的任务,包括添加新的实例或删除现有的实例。本文将详细介绍如何在Oracle RAC集群中删除一个实例。 #### 二、准备工作 在进行Oracle RAC实例删除之前,需要进行一系列的...
Oracle 创建 Job 实例是指在 Oracle 数据库中创建一个计划任务,用于在特定的时间点执行特定的操作。以下是创建 Job 实例的详细过程和相关知识点: 一、创建 Job 实例 要创建一个 Job 实例,需要使用 dbms_job....
在Oracle单一主机上配置多个实例和多个监听器是一项复杂但关键的任务,它能显著提升系统的性能和稳定性。通过理解并正确设置`local_listener`参数,以及熟练掌握`lsnrctl`命令和`listener.ora`文件的配置,管理员...
本文将详细介绍如何利用任务计划和批处理脚本来实现Oracle数据库的定时备份。 一、任务计划(Task Scheduler) Windows的任务计划程序允许用户设置定期执行特定任务,如运行一个批处理文件。创建任务计划的过程...
Oracle 11g 创建数据库实例是一项关键任务,用于在计算机上建立一个运行Oracle数据库的环境。这个过程包括多个步骤,确保实例能够正确地管理和存储数据。以下是对标题和描述中所述知识点的详细说明: 首先,Oracle...
总结来说,为Oracle数据库在Linux系统上增加新实例的过程是一个系统性的任务,涉及到文件系统的管理、数据库配置、安全设置以及网络通信的调整。每个步骤都至关重要,确保了新实例能够正确地创建和运行。在整个过程...
以下是对Oracle日常维护实例的详细说明: 首先,DBA每天需要对Oracle数据库的运行状态进行监控,确保所有实例处于正常状态。可以通过登录到所有数据库实例,使用`ps -ef | grep ora`命令查看Oracle后台进程,以确认...
初始化参数文件(如initORCL.ora)是Oracle实例的核心配置文件,它定义了数据库实例的运行参数,如缓存设置、文件配置、安全设置等。文件中的参数配置直接影响到数据库的性能和安全性。 #### 关键参数解读: - **...
本文将详细讲述如何在Oracle 11g环境下设置一个监听器对应多个实例的配置方法。 首先,Oracle的网络配置可以分为图形界面配置和命令行配置两种方式。 在图形界面下,主要通过Net Configuration Assistant工具来...
Oracle高级复制是Oracle数据库系统中的一种复杂的数据同步技术,它允许在不同的数据库之间实时或近实时地复制数据。这项技术对于分布式系统、灾难恢复、负载均衡以及数据分发等场景非常有用。以下是对Oracle高级复制...
在Linux操作系统上创建和管理ORACLE数据库实例是一个技术性较强的任务,涉及到多个步骤和系统级别的配置。以下是对"Linux上建第二个ORACLE实例分析"这一主题的详细解释: 首先,我们要理解ORACLE实例是什么。在...
4. **启动后台进程**:Oracle实例运行时,需要一系列后台进程,如DBWR(数据库写入进程)、LGWR(日志写入进程)、PMON(进程监控进程)等,它们执行各种任务,如数据写入磁盘、日志记录、故障恢复等。 5. **创建...
### Oracle 删除归档日志实例 #### 背景与目的 在Oracle数据库管理中,归档日志的处理是一项重要的任务。对于选择了非归档模式但仍希望使用闪回等功能的数据库来说,随着时间的推移,归档日志可能会占用大量的磁盘...
这包括选择合适的版本、安装步骤、设置环境变量以及创建数据库实例。数据库实例是Oracle运行时环境的一部分,它包含内存结构和后台进程,使得用户可以与数据库进行交互。理解实例的创建和管理是Oracle数据库管理员的...