查杀oracle正在执行的job,解决job broken后,但view job时total time还在增长
2014-05-20 16:22
806 查看
1.首先确定要停止的JOB号
select * from dba_jobs_running;--得到sid和job号
2.Broken你确认的JOB
可以在PL/SQL Developer中,直接选项broken;或者使用语句:
EXEC DBMS_JOB.BROKEN(job#,TRUE);--加入job号,注意commit
3.Kill 对应的Oracle Session
select * from v$session where sid='97' --根据sid号,得到SERIAL#
找到该job的对应SESSION(SID,SERIAL#),然后执行以下命令:
--ALTER SYSTEM KILL SESSION 'sid,serial#';
-- 如果使用ALTER SYSTEM KILL SESSION执行很长时间,其实可以使用OS的命令来快速KILL掉SESSION.步骤如下:
select * from v$session where sid='97'--根据sid号,得到paddr
select * from v$process where addr='6C8F14C4' -- 加入paddr的值,得到spid的值,杀命令时用
For Windows, at the DOS Prompt: orakill oraclesid spid--注意oraclesid为数据库实例名
For UNIX at the command line> kill –9 spid
4.检查你的JOB是否还在运行
检查你要停止的JOB是否还在运行,其实多数情况下,应该都已经停止了。尤其执行的第三步的“杀手”命令。
如果真的还是没有停止,而且dba_jobs_running已经查不到该job了,则执行以下步骤;
5.select name,value from v$parameter where name ='job_queue_processes';
将Job Queue Processes的数目修改为0
ALTER SYSTEM SET job_queue_processes = 0;
job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。
注:当Job Queue Processes的数目为0,所有的JOB都会停止。
6.修改你要修改的任何东西,甚至是JOB内的内容。将job执行的所有东西注掉,写return;否则不能编译
也可以将job里调用的所有存储过程内容都注掉,写return;编译。
7.修改完成后,将job的BROKEN状态停止。
SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE); --必须 commit
或者在PL/SQL Developer图形界面上操作,也一样;将job重新启起来。
8.恢复job_queue_processes的原始值
ALTER SYSTEM SET job_queue_processes = 10;
此时刷新几次job,total time一会儿就会停止增长。job彻底停止。
select * from dba_jobs_running;--得到sid和job号
2.Broken你确认的JOB
可以在PL/SQL Developer中,直接选项broken;或者使用语句:
EXEC DBMS_JOB.BROKEN(job#,TRUE);--加入job号,注意commit
3.Kill 对应的Oracle Session
select * from v$session where sid='97' --根据sid号,得到SERIAL#
找到该job的对应SESSION(SID,SERIAL#),然后执行以下命令:
--ALTER SYSTEM KILL SESSION 'sid,serial#';
-- 如果使用ALTER SYSTEM KILL SESSION执行很长时间,其实可以使用OS的命令来快速KILL掉SESSION.步骤如下:
select * from v$session where sid='97'--根据sid号,得到paddr
select * from v$process where addr='6C8F14C4' -- 加入paddr的值,得到spid的值,杀命令时用
For Windows, at the DOS Prompt: orakill oraclesid spid--注意oraclesid为数据库实例名
For UNIX at the command line> kill –9 spid
4.检查你的JOB是否还在运行
检查你要停止的JOB是否还在运行,其实多数情况下,应该都已经停止了。尤其执行的第三步的“杀手”命令。
如果真的还是没有停止,而且dba_jobs_running已经查不到该job了,则执行以下步骤;
5.select name,value from v$parameter where name ='job_queue_processes';
将Job Queue Processes的数目修改为0
ALTER SYSTEM SET job_queue_processes = 0;
job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。
注:当Job Queue Processes的数目为0,所有的JOB都会停止。
6.修改你要修改的任何东西,甚至是JOB内的内容。将job执行的所有东西注掉,写return;否则不能编译
也可以将job里调用的所有存储过程内容都注掉,写return;编译。
7.修改完成后,将job的BROKEN状态停止。
SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE); --必须 commit
或者在PL/SQL Developer图形界面上操作,也一样;将job重新启起来。
8.恢复job_queue_processes的原始值
ALTER SYSTEM SET job_queue_processes = 10;
此时刷新几次job,total time一会儿就会停止增长。job彻底停止。
相关文章推荐
- Oracle 关闭正在执行的job
- oracle job 设置自动执行,执行错误,如何解决呢?
- Oracle执行出现正在提交的原因及解决办法
- 解决关于oracle中job只执行一次的…
- oracle 10 job任务不自动执行,解决办法
- Oracle中的定时执行任务job
- Oracle利用job实现定时执行任务
- ORACLE监控数据库性能的SQL(包括监控谁正在执行什么SQL语句)
- Oracle诊断案例-Job任务停止执行
- oracle笔记 以及oracle的自增长问题解决
- Oracle JOB问题解决汇总
- Oracle JOB问题解决汇总
- Oracle中SQL语句执行效率问题的查找与解决
- Oracle诊断案例-Job任务停止执行
- Oracle使用总结(三):Oracle JOB问题解决汇总
- OracleJOB的建立,定时执行任务
- 解决oracle自增长sequence失效的问题
- oracle可执行文件s位导致的Cluster资源组无法正常启动的问题解决
- oracle-crontab与oracle job在执行时间上的差异
- oracle可执行文件s位导致的Cluster资源组无法正常启动的问题解决