ORA-27366 / ORA-27478 无法停止job

这篇博客讨论了在遇到ORA-27366和ORA-27478错误时,如何处理无法停止的数据库作业。内容来源于ITPUB博客,详细分析了问题的原因和可能的解决方案,对数据库管理员处理类似问题具有参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天有位客户在使用plsql/devleop编译存储过程时老是导致整个操作界面hang住长时间无法响应,以下是我的处理过程,简要记录之。
原因:
 应用编写了一个存储过程,在执行job后,几小时内都没有数据传入,同时job执行已达17小时,正当客户kill时,发现报
ORA-27478: job "" is running
ORA-06512: at "SYS.DBMS_ISCHED", line 182
ORA-06512: at "SYS.DBMS_SCHEDULER", line 615
ORA-06512: at line 1

ORA-27366: job "" is not running
ORA-06512: at "SYS.DBMS_ISCHED", line 168
ORA-06512: at "SYS.DBMS_SCHEDULER", line 515
ORA-06512: at line 1

第一步、通过查询v$session视图确定hang住的会话相关信息
第二步、dba_jobs_running和dba_scheduler_running_jobs数据字典确定了该job调用方式为scheduler

select job_name,session_id,cpu_used from dba_scheduler_running_jobs where owner='XXX'
第三步、通过job_name停掉
 首先使用 :dbms_scheduler.disable
 其次使用:dbms_schedule.stop_job
 最后使用:dbms_scheduler_enable
 注意:前两者使用时都要加参数参数' force=>true'

在MOS中提到,有可能是网络阻塞,或者是应用瓶颈,当然也有可能是BUG
Bug 8780871 : EXTERNAL JOB CANNOT BE STOPPED
单击此项可添加到收藏夹 通过电子邮件发送此文档的链接 可打印页 转到底部转到底部
 
隐藏 Bug 属性

Bug 属性

 

类型 B - Defect 已在产品版本中修复 11.2.0.2
严重性 2 - Severe Loss of Service 产品版本 10.2.0.4
状态 80 - Development to QA/Fix Delivered Internal 平台 226 - Linux x86-64
创建时间 2009-8-10 平台版本 NO DATA
更新时间 2015-6-23 基本 Bug 3887932
数据库版本 10.2.0.4 影响平台 Generic
产品源 Oracle 与此 Bug 相关的知识, 补丁程序和 Bug
 
隐藏 相关产品

相关产品

 

产品线 Oracle Database Products 系列 Oracle Database Suite
区域 Oracle Database 产品 5 - Oracle Database - Enterprise Edition

现在我们来演示下:
错误的使用方法:
SQL> exec DBMS_SCHEDULER.DROP_JOB( job_name => 'job1', force => TRUE );
BEGIN DBMS_SCHEDULER.DROP_JOB( job_name => 'job1', force => TRUE ); END;


*
ERROR at line 1:
ORA-27475: "DEV.JOB1" must be a job
ORA-06512: at "SYS.DBMS_ISCHED", line 178
ORA-06512: at "SYS.DBMS_SCHEDULER", line 544
ORA-06512: at line 1


SQL>select job_name from dba_scheduler_jobs where job_name ='job1';


JOB_NAME
——————————
job1


正确使用方法:
SQL>exec DBMS_SCHEDULER.CREATE_JOB (job_name=>'"job1"',job_type => 'PLSQL_BLOCK',job_action => 'begin null; end;');


PL/SQL procedure successfully completed.


SQL>select job_name from dba_scheduler_jobs where job_name ='job1';


JOB_NAME
——————————
job1


SQL>exec DBMS_SCHEDULER.drop_JOB (job_name=>'"job1"', force=>TRUE);


PL/SQL procedure successfully completed.



dbms_scheduler.disable 使用:注意根据版本添加 ' force=>true
SQL> execute dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
SQL> execute dbms_scheduler.disable('job1, job2, sys.jobclass1');

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30430420/viewspace-1787680/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30430420/viewspace-1787680/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值