oracle作业管理.txt
### Oracle作业管理详解 #### 一、Oracle作业管理概述 Oracle数据库系统提供了强大的作业调度功能,使得用户可以灵活地安排数据库任务的执行时间与频率。本文档将详细解析Oracle作业管理的基本概念及其配置方法。 #### 二、Oracle作业管理的核心组件 在深入探讨之前,我们需要了解几个关键的概念: - **Job Queue Processes (JOB_QUEUE_PROCESSES)**:这是一个系统参数,用于设置同时运行的作业队列进程的数量。 - **Job Queue Interval (JOB_QUEUE_INTERVAL)**:另一个重要的系统参数,它定义了系统检查作业队列并启动新作业的时间间隔(以秒为单位)。 - **dbms_job**:这是一个Oracle提供的包,包含了一系列用于管理作业的PL/SQL过程和函数。 #### 三、配置作业队列 为了使Oracle能够正确处理作业调度,首先需要确保作业队列进程被正确配置。 1. **启用受限会话**: - 使用命令 `svrmgrl> alter system enable restricted session;` 启用受限会话模式,这是启动作业队列进程的前提条件之一。 - 如果需要关闭受限会话,则可以使用命令 `sql> alter system disable restricted session;`。 2. **确认Oracle系统已开启SNP(Scheduler Notification Process)**: - SNP是作业调度通知进程,必须确保其已经启动。 - SNP通常位于Oracle的安装目录下 `ORACLE_HOME/dbs` 目录中的初始化文件 `init<Oracle_SID>.ora` 中。 - 在该文件中,需要设置以下两个参数: - `job_queue_processes = n`:其中 `n` 表示同时运行的作业队列进程的数量,默认值为 `0`,取值范围为 `0` 至 `36`。 - `job_queue_interval = N`:其中 `N` 表示作业队列进程检查作业队列的时间间隔(以秒为单位),默认值为 `60`,取值范围为 `1` 至 `3600` 秒。 - 需要注意的是,如果作业数量较多,那么 `job_queue_processes` 的值应该适当增加以提高处理效率。 #### 四、提交作业 作业的提交是通过调用 `dbms_job` 包中的 `submit` 过程实现的。该过程需要指定以下参数: - **job**:一个整数,表示作业的标识符。 - **what**:一个字符串,表示执行的SQL语句或存储过程的名称。 - **next_date**:一个日期值,表示作业首次执行的时间。 - **interval**:一个字符串,表示作业重复执行的时间间隔。 例如,下面的示例代码用于提交一个每隔4分钟执行一次的作业: ```sql DECLARE n NUMBER; BEGIN dbms_job.submit(job => :n, what => 'my_job', next_date => sysdate, interval => 'sysdate + 1/360'); COMMIT; END; / ``` 执行完成后,可以使用 `SELECT` 语句查询作业的状态: ```sql SELECT job, next_date, next_sec, failures, broken FROM user_jobs; ``` #### 五、作业状态管理 Oracle提供了多种方法来管理和监控作业的状态: - **dbms_job.change**:用于更改作业的某些属性,如执行时间和间隔等。 - **dbms_job.what**:用于获取作业的执行语句。 - **dbms_job.interval**:用于获取作业的执行间隔。 - **dbms_job.remove**:用于删除指定的作业。 如果作业在执行过程中出现错误,可以使用 `dbms_job.run` 强制执行作业,或者使用 `dbms_job.broken` 将作业标记为不可用。 #### 六、总结 Oracle作业管理提供了丰富的工具和API,帮助数据库管理员和开发者轻松地管理复杂的定时任务。通过合理配置作业队列参数和灵活使用 `dbms_job` 包中的函数,可以有效提高系统的自动化水平和运维效率。希望本文档能够为读者提供实用的指导,帮助大家更好地掌握Oracle作业管理的相关知识和技术。



















时间紧张
来不及写了
你看看这个文章对你有什么帮助没
―――――――――――――――――――――――――――――――――――
1.确保Oracle的工作模式允许启动任务队列管理器
Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:
svrmgrl>; alter system enable restricted session;
或sql>; alter system disenable restricted session;
利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。
2.确保Oracle的系统已经配置了任务队列管理器的启动参数
SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话,则初始化文件就是initmyora8.ora,在文件中对SNP启动参数的描述部分如下:
job_queue_process=n
job_queue_interval=N
第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。
第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。
如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效。注意:如果任务要求执行的间隔很短的话,N的配置也要相应地小一点。
3.将任务加入到数据库的任务队列中
调用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中:
dbms_job.submit( job out binary_integer,
what in archar2,
next_date in date,
interval in varchar2,
no_parse in boolean)
其中:


- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电网企业大数据的价值实现探析.docx
- 基本台账-安全生产网络组织台帐.doc
- 扩频通信抗干扰系统分析大学本科方案设计书.doc
- 机械设计制造及其自动化-外文翻译-外文文献-英文文献-液压支架的最优化设计.doc
- 油气勘探项目管理的探讨.docx
- 智能家居中家庭总体布线实战技术解析.docx
- 数字图像处理锐化技术的原理与实现.docx
- 计算机软件的安全检测技术分析.docx
- 51单片机的多路温度采集控制系统方案设计书.doc
- 上海XX有限公司网络安全解决方案.ppt
- 基于网络经济时代下市场营销策略的转变.docx
- 从全球视角看中国移动互联网产业发展现状及地位.docx
- 最新家庭医疗网络救护医疗保健ppt模板.pptx
- 《电气控制与PLC应用》课程整体设计措施.doc
- 国内外工程项目管理现状比较与探讨80801.doc
- 第一章旅游网站基于营销优化的内容建设.docx


