Oracle如何查询和中止正在运行的JOB

2023-11-04

今天遇到一个问题,有一个JOB会一直不停的执行,不能按照设定的间隔来执行。通过查询相关资料发现原来如此:

当一个oracle job运行时返回一个error时,oracle会再次设法执行它,第一次尝试是在一分钟后,第二次是在2分钟后,第三次是4分钟后,以此类推。每次尝试的周期加倍,直到下一次的运行时刻来到,又再次尝试,当尝试执行失败16次时,oracle自动标示此job为broken,不再执行此任务。

由于这是一个不能重复跑的JOB,就查找如何停止正在运行的JOB,操作如下:

1. 首先确定要停止的JOB号

select sid from dba_jobs_running;

查找到正在运行的JOB的spid:

select a.spid from v$process a ,v$session b where a.addr=b.paddr and b.sid in (select sid from dba_jobs_running);

2. Broken你确认的JOB

注意使用DBMS_JOB包来标识你的JOB为BROKEN。

SQL> EXEC DBMS_JOB.BROKEN(job#,TRUE);

注意:当执行完该命令你选择的这个JOB还是在运行着的。

3. Kill 对应的Oracle Session

因为BROKEN后该JOB还在运行,如果要求该JOB立刻停止,就需要找到该JOB的对应SESSION(SID,SERIAL#),然后执行以下命令:

ALTER SYSTEM KILL SESSION 'sid,serial#';

或者直接KILL对应的操作系统的SESSION,如果使用ALTER SYSTEM KILL SESSION执行很长时间,其实可以使用OS的命令来快速KILL掉SESSION.

For Windows, at the DOS Prompt:

> orakill sid spid

For UNIX at the command line:

# kill –9 spid

注:ALTER SYSTEM KILL SESSION ‘sid,serial#’; 有时候是关闭不掉的,杀掉之后又会自动执行,因此建议直接kill系统线程。

4. 检查你的JOB是否还在运行

检查你要停止的JOB是否还在运行,其实多数情况下,应该都已经停止了。尤其执行了第三步的“杀手”命令。如果真的还是没有停止,只好从第一道第三步重新做一下了。

5. 将Job Queue Processes的数目修改为0

首先确认当前的Job Queue Processes数目:

SQL> select name,value from v$parameter where name ='job_queue_processes';

然后将Job Queue Processes的数目修改为0:

SQL> ALTER SYSTEM SET job_queue_processes = 0;

保证所有的JOB都会停止。

6. 修改你要修改的任何东西,甚至是JOB内的内容

7. 修改完成后,将job的BROKEN状态停止

SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE):

8. 恢复job_queue_processes的原始值

SQL>ALTER SYSTEM SET job_queue_processes = original_value;

至此整个停止并修改JOB完成

但是需要另外注意一下的是,在MARK一个BROKEN状态的时候,因为JOB内部执行SQL的原因,所以执行时或许要“煎熬”一段时间。所以在建立JOB时一定要仔细考虑,同时如果可能可以在你设计的PL/SQL代码中,增加一些判断“停止信号”的部分。来避免费力执行上面的步骤。

毕竟,ORACLE在执行JOB时,还是很“倔强”的 。

附录:ORAKILL用法
很多时候遇到某个session一直处于active,使得CPU一直处于高使用状态,虽然kill 了,但是却不能够使得使得线程结束。 kill session只是kill这个进程,但是线程一直处于活动状态。需要真正的kill线程才能够解决cpu使用率高的问题。

os :windows2003

ORAKILL用法是 orakill sid spid 其中sid为实例名,spid为线程号。

怎么样取得这个spid呢?

以下给出查找spid的语句:

select spid, osuser, s.program from v$process p, v$session s
where p.addr=s.paddr and s.sid = XXX;

–说明:XXX为session的sid (不是数据库SID 呵呵)。自己输入就可以。

orakill instance_name spid

这样就能够成功解决cpu使用率高的问题

补充:
– 查询Oracle的JOB

SELECT * FROM DBA_JOBS;

SELECT * FROM all_jobs;
select * from user_scheduler_jobs;

SELECT * FROM USER_SCHEDULER_RUNNING_JOBS;

– 停止正在运行的 JOB

EXEC DBMS_SCHEDULER.stop_job('JOB名称');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle如何查询和中止正在运行的JOB 的相关文章

  • Oracle Text 包含单字符索引搜索不起作用

    我有一个名为 index search 的简单表 创建如下 BEGIN ctx ddl create preference my pref BASIC WORDLIST ctx ddl set attribute my pref SUBST
  • SQL Server 与 Oracle DBMS_METADATA.GET_DDL 并行吗?

    我正在寻找命令行或脚本化解决方案来从 SQL Server 2005 中为所有数据库对象提取 DDL 表 存储过程 视图 索引 索引 约束等 GUI 工具不感兴趣 优先选择内置工具 因为它最能与 Oracle 的 DBMS METADATA
  • Oracle SQL 列转行(无需 UNPIVOT)

    我目前拥有的 Team User Apples Oranges Pears Red Adam 4 5 6 Red Avril 11 12 13 Blue David 21 22 23 需要什么 Team User Product Count
  • Oracle 函数中的加密/解密密码

    由于以前设计不佳的结构 我必须使用的当前数据库将用户密码存储为文本 现在 我正在构建一个必须使用这些密码的前端部分 我当然不想发送未加密的密码 我的想法是编写一个 Oracle 函数来加密和解密文本密码 并在存储过程中使用这些函数来返回加密
  • 如何在oracle日志中打印http请求

    我们正在使用以下方式调用外部 URLUTL HTTP方法并设置 HTTP 标头 例如basic authentication keep alive content soap action所以我需要打印我设置为标题的内容 DBMS OUTPU
  • 在 apex 中根据 2 种不同类型的用户进行自定义身份验证

    我有一种身份验证方案 目前仅验证用户是否在一个表中 即雇主表中 现在我希望这个身份验证方案来验证用户是雇主还是雇员 并且根据他们是雇主还是雇员 它应该将他们重定向到不同的页面 首先 我如何在身份验证脚本中包含第二个表 我最大的问题是 当员工
  • 如何在oracle sql查询中提取括号之间的字符串

    我正在尝试从字符串中提取括号之间的值 我怎样才能做到这一点 例如 我有这个字符串 Gupta Abha 01792 我想得到括号之间的结果 即 01792 我正在尝试编写这样的查询 select substr Gupta Abha 0179
  • 为什么这个触发器会失败?它说无效标识符

    CREATE MATERIALIZED VIEW ORDERS MV BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND AS SELECT FROM ORDERS CREATE OR REPLACE TR
  • 计算Oracle中逗号分隔字符串中的元素数量

    假设我有一张桌子Col2是 varchar Col1 Col2 1 001 002 2 003 004 005 我需要计算 Col2 中的元素数量 并返回它 如果我这样做的话 select do something here with co
  • 通过 OCI 调用 Oracle 存储过程并使用 C++ 中的 out ref 游标返回结果

    我想使用 OCI 接口从 C 调用 Oracle 存储过程 并使用 out SYS REF CURSOR 作为过程的参数来迭代结果 我是 OCI 新手 所以可能会遗漏一些简单的东西 大部分代码取自这里 我的存储过程是 CREATE OR R
  • 如何使用 SQLPLUS 假脱机到 CSV 格式的文件?

    我想将一些查询提取为 CSV 输出格式 不幸的是 我无法使用任何奇特的 SQL 客户端或任何语言来做到这一点 我必须使用SQLPLUS 我该怎么做 您还可以使用以下内容 尽管它确实在字段之间引入了空格 set colsep separate
  • 如何使用 oracle SQL 执行线性插值?

    我正在尝试使用 Oracle 11g 开发中为 11 1 生产中为 11 2 进行数值分析 特别是对具有三列感兴趣的表进行线性插值 时间戳 deviceid 和值 值列保存来自设备 具有 ID deviceid 的数据 这些数据是在时间戳中
  • where 子句中忽略空白字符

    我做了以下事情 create table test col char 10 insert into test values hello select from test where col hello 有人建议我上面的内容不应返回任何结果
  • Oracle SQL - 如何使用 RANK() 或 DENSE_RANK() 和 ROW_NUMBER() 分析函数获取不同的行?

    我希望获得每个部门前 3 名不同的薪资 我能够使用RANK or DENSE RANK or ROW NUMBER 但我的表有一些工资相同的记录 下面提到的是我的查询及其结果 20部薪资前三名应该是6000 3000 2975 但是有 2
  • 在 PL/SQL 块中定义引用其自身集合的记录类型

    如何在 PL SQL 匿名块中定义包含自身集合属性的记录类型 看下面的例子 DECLARE type t item is record name varchar2 64 children t items referencing t item
  • 在 Oracle 过程中实现多线程

    我正在研究 Oracle 10gR2 这是我的问题 我有一个程序 我们称之为 proc parent 在包内 应该调用另一个过程 让我们调用它 用户创建 我得打电话 用户创建 在一个循环中 它从表中读取一些列 并且这些列值作为参数传递给 用
  • 使用 SQL 序数位置表示法的好处?

    背景资料 序数位置表示法 又称序数 是基于列列表中的列顺序的列简写 SELECT子句 而不是列名或列别名 通常支持在ORDER BY子句 某些数据库 MySQL 3 23 PostgreSQL 8 0 支持语法GROUP BY条款也是如此
  • Oracle中如何检测4字节UTF8字符

    我们已经看到oracle中存储了4字节的UTF 8字符 我们需要检测特定列中有多少行包含此类字符 尝试了这里给出的建议 UTF 16 补充字符 https stackoverflow com questions 34720830 how t
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人

随机推荐

  • Jenkins 安装及使用 ( Jenkins 部署 Maven 项目、Jenkins 部署 Vue 项目)

    Jenkins 安装及使用 Jenkins 部署 Maven 项目 Jenkins 部署 Vue 项目 一 准备阶段 1 组件及版本 2 Jenkins部署方式 3 查看防火墙的状态 二 Jenkins安装部署 1 密码 2 登录 3 选择
  • 软件工程学习(九)RUP与UML的关系

    UML是建模语言 可以用来表示软件的动态 静态方面 RUP是软件工程过程 要来描述软件生命周期过程 每一个过程都可以用UML来描述
  • 毕业设计 - ESP32单片机疫情防交叉感染洗手液分配系统 -物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 API链接 用于获取Corona实时数据 电路图 为Covid19 Tracker编程ESP32 使用Covid19 Tracker测试自动洗手液 5 最后 0 前言
  • MySQL主从复制配置详解

    1 配置环境 操作系统 两台CentOS 7 6的Linux系统 数据库版本 MySQL 5 6 39 主服务器IP 192 168 0 1 从服务器IP 192 168 0 2 2 安装数据库 之前已经给小伙伴们详细的讲解了CentOS安
  • android平台一些网页不能正常打开的问题

    最近发现在android平台一些网页怎么也打不开 尝试更改apn设置也无效 还发现这些网页在ubuntu系统下也是打不开的 最后经过查阅和尝试解决了这个问题 在此做下记录 在linux平台proc文件系统下存在一个文件即 proc sys
  • AI 绘画基础 - 细数 Stable Diffusion 中的各种常用模型 【 魔导士装备图鉴】

    AI 绘画新手魔导士在刚开始玩 Stable Diffusion 时总会遇到各种新的概念 让人困惑 其中就包括各种模型和他们之间的关系 魔法师入门得先认识各种法师装备 各种模型 让我们遇到问题知道使用何种装备来协助自己发挥更大的效果 saf
  • SpringBoot @JsonField注解格式化日期失效

    昨天在进行登陆测试返回数据格式时 前端显示的日期都是以标准时间格式显示的 因为后端数据库定义的datetime类型 实体定义的date类型 以json格式返回给前端后 日期都格式化为标准类型 一看这个问题 就想到 JsonField注解 直
  • C与C++的函数相互调用

    无法直接调用原因 C 和 C 的函数可以相互调用 但需要一些特殊的注意事项 因为它们有不同的编译和链接规则以及一些语法差异 链接规则 C 语言的链接器通常使用 C 标准的函数命名和调用约定 而 C 链接器使用 C 的函数命名和调用约定 这意
  • c 语言private用法,举例分析private的作用(c/c++学习)

    c 中private的用处 我知道我们可以用 public 中的值 把private中的数据给提出来 但是还是搞不懂private该怎么用 或者说在一个具体程序中 private有什么用 class fun public void setn
  • HTTP协议版本检测

    HTTP 2 0在2015年就已经正式发布了 但是现在大部分网站还在使用HTTP 1 1协议 具体怎么查看网站采用的是HTTP 1 1 还是HTTP 2 0呢 本篇就介绍几种检测HTTP协议版本的方法 所有的操作都是基于Chrome浏览器
  • Week 2 Git& Github: Branch

    首先进入git目录 建议通过windows powershell操作 git branch new branch 创建一个新分支 git checkout branch 跳转到指定分支 git checkout b branchname 创
  • Spring MVC Controller传递枚举值示例

    功能描述 本文将通过一个小示例 展示在请求参数中传递枚举值 枚举定义 角色类定义 public enum RoleEnum EMPLOYEE short 1 Employee MANAGER short 2 Manager private
  • echarts前后端交互数据_前后端交互技术有哪些

    我们都知道 一个完整的IT项目是由多个不同岗位的成员共同完成 包括UI设计 前端开发 后端开发 测试等 为了实现项目的完整性 前后端需要运用技术实现联通 不过 前后端交互技术有哪些 参加郑州Web前端培训班会学吗 且看小编的分析 目前常用的
  • Java常见算法(六)【省份数量- 分组算法:深度优先、广度优先、并查集 】

    文章目录 省份数量 经典的分组算法 1 深度优先遍历 2 广度优先 3 并查集 算法 实验源码 省份数量 经典的分组算法 https www bilibili com video BV1Jv411A7Ty p 34 比如现在有三个城市 A城
  • Ai-M61/62系列的固件烧录指导

    文章目录 前言 一 软硬件的准备 二 原始硬件接线 三 烧录软件的使用 联系我们 前言 本文介绍Ai M61 62系列模组 开发板的固件烧录 一 软硬件的准备 Ai M61 62系列模组或者开发板一个 Ai M61 62烧录软件 下载链接
  • 进程和计划服务管理

    一 进程和服务 服务 是在操作系统内部活依赖网络环境运行的一种软件组件提供特定的功能或服务 服务一般在后台运行 职责包括接受请求 处理数据 执行操作 服务可以是系统自带的 也可以是基于linux开发的应用程序 服务特点 1 服务可以通过端口
  • YouTube-8M: A Large-Scale Video Classification Benchmark

    Abstract Many recent advancements in Computer Vision are attributed to large datasets Open source software packages for
  • 基于Android studio 的rpg游戏大地图的绘制

    今天开始写第一篇博客 好激动呢 衷心希望自己能坚持下去 不说闲话了 我们马上开始 最近一直在做一个基于Android studio的rpg2D角色扮演游戏 虽然说这个游戏已经烂大街了 其中的逻辑也是有了很多准确的简便的解释 不过真正做起来还
  • 【c++迭代器模拟实现】

    目录 前言 一 STL初始 二 六大组件之迭代器 迭代器初始 迭代器的模拟实现 1 victor 正向迭代器 反向迭代器1 反向迭代器2 反向迭代器3 2 list 正向迭代器 反向迭代器 总结 前言 打怪升级 第52天 一 STL初始 什
  • Oracle如何查询和中止正在运行的JOB

    今天遇到一个问题 有一个JOB会一直不停的执行 不能按照设定的间隔来执行 通过查询相关资料发现原来如此 当一个oracle job运行时返回一个error时 oracle会再次设法执行它 第一次尝试是在一分钟后 第二次是在2分钟后 第三次是