Oracle恢复已损坏定时任务(Jobs)

修复已损坏定时任务,可根据下面步骤进行恢复

诊断:为什么Job 23会损坏?

一个Job被标记为"损坏"(Broken),最常见的原因是它连续多次执行失败(FAILURES次数累积)。这通常是因为它调用的存储过程、SQL语句或内部逻辑出了错,系统为了保护资源,自动将其暂停。

修复:三步让Job 23恢复正常

你可以按照下面的步骤来修复它:

  1. 第一步:找出病因(查看具体错误)

    首先,我们需要知道是什么错误导致了Job失败。通过以下SQL语句,可以查看Job 23的详细信息和最近一次执行失败的错误代码(LAST_ERR或查看数据库的告警日志alert.log)。

    sql 复制代码
    -- 查看Job 23的详细信息
    SELECT JOB, WHAT, LAST_DATE, NEXT_DATE, INTERVAL, FAILURES, BROKEN, LAST_ERR
    FROM DBA_JOBS 
    WHERE JOB = 23;

    重点关注

    • FAILURES:失败的次数。
    • LAST_ERR:最后一次执行失败时,Oracle返回的错误代码(例如,如果这里显示ORA-00942,就表示是"表或视图不存在"的错误)。
  2. 第二步:釜底抽薪(修复Job内部逻辑)

    根据第一步查出的错误,你需要去修复Job 23内部调用的WHAT内容(比如是一个存储过程SDHXEM_MDI_TEMP;)。这通常意味着你需要:

    • 登录到数据库,找到Job 23所执行的PL/SQL代码或存储过程。
    • 修正其中的SQL语法错误、权限问题或引用了不存在的对象。
    • 这个过程需要在数据库内部完成,你需要有相应的权限去修改这些数据库对象。
  3. 第三步:手动唤醒(清除损坏标记)

    当底层的代码逻辑被修复后,我们就可以"唤醒"这个沉睡的Job了。最直接的方法是手动执行一次,成功后,损坏标记通常会被自动清除。

    sql 复制代码
    -- 手动运行Job 23
    BEGIN
      DBMS_JOB.RUN(23);
      COMMIT;
    END;
    /

    如果手动执行成功,你再查询 DBA_JOBS,应该会看到 BROKEN 列变为了 NFAILURES 变为了 0

    如果手动执行后损坏标记依然存在,可以执行强制修复命令:

    sql 复制代码
    -- 强制清除损坏标记
    BEGIN
      DBMS_JOB.BROKEN(23, FALSE);
      COMMIT;
    END;
    /

重要提醒

  • 别忘了提交 :在使用DBMS_JOB包进行操作(如RUNBROKEN)后,一定要执行COMMIT;,否则更改不会生效。
  • 检查进程 :正如我们上次讨论的,也顺便确认一下数据库的Job队列进程是开启的:SHOW PARAMETER JOB_QUEUE_PROCESSES;,这个参数值必须大于0。

你可以先执行第一步,看看LAST_ERR里具体是哪个错误代码。如果查到了具体的错误但不确定如何修复,可以把错误代码发给我,我帮你看看~

相关推荐
拾光Ծ33 分钟前
【MySQL】对表数据的操作:增删查改(CRUD)
android·数据库·sql·mysql
这个DBA有点耶14 小时前
2026年分布式数据库有哪些主流选择?先评估这5个维度再决定
数据库·分布式·dba
这个DBA有点耶16 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
胡写代码16 小时前
数据库审计字段,别再每张表各写一套了——我统一成这 6 个字段
数据库
SelectDB20 小时前
为什么 JSON 正在成为分析数据库新的竞争点?
数据库·json·agent
ClouGence21 小时前
开源数据库管理工具 CloudDM 4.2.0 发布,新增 GoldenDB、KingbaseES 等数据源
数据库·dba·devops
发霉的馒头1 天前
ORA-00845: MEMORY_TARGET not supported on this system的解决方法
数据库
草莓熊Lotso1 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
煎饼皮皮侠1 天前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_1 天前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js