随笔 - 87, 文章 - 0, 评论 - 4, 阅读 - 24万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

ORA-23421: job number 225 is not a job in the job queue

Posted on   张鑫的园子  阅读(3090)  评论(0编辑  收藏  举报

  在对数据库进行异机恢复之后,为了防止上面作业自动执行,扰乱正常业务系统,需要将测试库上的作业和db_link进行删除:
但是使用sys用户连接进去,删除的时候报如下错误
SQL> exec DBMS_JOB.broken(225,true);
BEGIN DBMS_JOB.broken(225,true); END;
*
ERROR at line 1:
ORA-23421: job number 225 is not a job in the job queue
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.DBMS_IJOB", line 529
ORA-06512: at "SYS.DBMS_JOB", line 245
ORA-06512: at line 1


查看MOS,有两种可能:
第一:不是job的owner的用户delete,remove,broken一个job时,会报错:ORA-23421: job number XXXX is not a job in the job queue
第二:job$的索引INDEX I_JOB_JOB 损坏,导致此错误

对于第一种:只有job的owner才能够对job进行修改变更。
查询找到job的owner PRIV_USER
SQL> select job, what, log_user,broken from dba_jobs where job=225;
JOB WHAT LOG_USER PRIV_USER B
---------- ---------------------------------------- ---------- ---------- -
225 WEB_SMS.cleanAppBuffer; SYSTEM SYSTEM N

用上面的sql语句中查询到的PRIV_USER登录数据库
SQL> exec DBMS_JOB.broken(225,TRUE);
PL/SQL procedure successfully completed.


SQL> select job, log_user,broken from dba_jobs where job in (225);
JOB LOG_USER PRIV_USER B
---------- ---------- ---------- -
225 SYSTEM SYSTEM Y


另一种方法是以sys用户:
SQL> exec DBMS_IJOB.broken(225,true);
PL/SQL procedure successfully completed.

SQL> select job, what, log_user, PRIV_USER,broken from dba_jobs where job=225;
JOB WHAT LOG_USER PRIV_USER B
---------- ---------------------------------------- ---------- ---------- -
225 WEB_SMS.cleanAppBuffer; SYSTEM SYSTEM Y


尝试以system用户执行命令此命令,会报错:
SQL> exec DBMS_IJOB.broken(225,false);
BEGIN DBMS_IJOB.broken(225,false); END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_IJOB.BROKEN' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored


对于第二种情况,Rebuild the indexes related to job$:
SQL> CONN / AS SYSDBA
SQL> ALTER INDEX I_JOB_JOB REBUILD ONLINE;
SQL> ALTER INDEX I_JOB_NEXT REBUILD ONLINE;

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示