`
goodguyzl
  • 浏览: 46038 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

oracle XE ,procedure死循环导致100%CPU解决

阅读更多

  

     写了个procedure,在cursor里用loop的时候忘记写exit when了,结果用job去调度执行起来后,oracle的进程就占掉100%CPU了,shutdown了后重新startp,马上又是100%了。想用toad等工具去连都基本没反应了。没办法,只能sqlplus了,用sys用户登进去,select * from dba_jobs where broken='N';可以看到自己创建的job号21,说明这个任务没有broken,还会执行。先把它broken掉: exec dbms_job.broken(21,true); 报错:

    *
第 1 行出现错误:
ORA-23421: 作业编号22在作业队列中不是一个作业
ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: 在 "SYS.DBMS_IJOB", line 529
ORA-06512: 在 "SYS.DBMS_JOB", line 245
ORA-06512: 在 line 1

怪了,明明可以看到这个任务,为什么又说不是一个作业呢?

    换创建任务的用户登录,执行select * from user_jobs where broken='N';仍然可以看到job21,再执行exec dbms_job.broken(21,true); 嘿嘿 ,提示“PL/SQL 过程已成功完成”。然后可以把job删掉了,exec dbms_job.remove(22); 但是发觉CPU还是100%,重启之后,正常了。哈哈~~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics