ORACLE的Job
来源:互联网 发布:淘宝耳钉知乎 编辑:程序博客网 时间:2024/06/03 17:34
1. JOB的参数说明:与job相关的参数一个是job_queue_processes,这个是运行JOB时候所起的进程数,当然系统里面JOB大于这个数值后,就会有排队等候的,最小值是0,表示不运行JOB,最大值是36,在OS上对应的进程时SNPn,9i以后OS上管理JOB 的进程叫CJQn。可以使用下面这个SQL确定目前有几个SNP/CJQ在运行。
select * from v$bgprocess,这个paddr不为空的snp/cjq进程就是目前空闲的进程,有的表示正在工作的进程。
另外一个是job_queue_interval,范围在1--3600之间,单位是秒,这个是唤醒JOB的process,因为每次snp运行完他就休息了,需要定期唤醒他,这个值不能太小,太小会影响数据库的性能。
select * from dba_jobs
有时候我们发现他的next_date是4000年1月1日,说明job要不就是在running,要不就是状态是 break(broken=Y),如果发现JOB的broken值为Y,找用户了解一下,确定该JOB是否可以broken,如果不能broken,那就把broken值修改成N,修改再使用上面的SQL察看就发现他的last_date已经变了,JOB即可正常运行,修改broken状态的SQL如下:
2.L查询是否JOB还在Running
select * from dba_jobs_running
如果发现JOB已经Run了很久了还没有结束,就要查原因了。一般的JOB running时会锁定相关的相关的资源,可以查看一下v$access和v$locked_object这两个view,如果发现其他进程锁定了与 JOB相关的Object,包括PKG/Function/Procedure/Table等资源,那么就要把其他进程删除,有必要的话,把JOB的进程也删除,再重新跑看看结果。
3.如果上面都正常,但是JOB还不run,怎么办?那我们要考虑把JOB进程重启一次,防止是SNP进程死了造成JOB不跑,指令如下:
alter system set job_queue_processes=0 --关闭job进程,等待5--10秒钟
alter system set job_quene_processes=5 --恢复原来的值
4.Oracle的BUG
Oracle9i里面有一个BUG,当计数器到497天时,刚好达到它的最大值,再计数就会变成-1,继续计数就变成0了,然后计数器将不再跑了。
还可以参考文章
http://hi.baidu.com/yuncsoft/blog/item/a65b9cadc11e6a0e4a36d6cc.html
- [Oracle]job的建立
- oracle job的用法
- oracle job的用法
- ORACLE的JOB创建
- oracle的job学习
- oracle job的用法
- ORACLE的Job
- Oracle里的JOB
- 关于oracle的job
- oracle的job管理
- oracle的Job详解
- Oracle的Job
- oracle job的管理
- oracle job的使用
- oracle的job创建
- 停止oracle的job
- oracle的JOB
- Oracle的job任务
- js showModalDialog参数传递
- 012_《Delphi程序调试参考手册》
- Fixing "Base SDK Missing"
- SQL Server Integration Services (SSIS)的体系结构图
- 2.3
- ORACLE的Job
- 技术讨论
- ETL 介绍
- scjp310-065考题每天10道题1
- 【软件自动化测试-QTP实战技能 22】== QTP_DP_for the DeskTop objects
- Asp.Net Trace 全功略
- 喜欢一个人没理由
- I have a dream
- 用JAVA实现排序算法之一:冒泡排序