需求:

客户环境12.2.0.1,三节点RAC需要,将一个正在运行的Job session kill掉,

但是通过DBA_JOBS_RUNNING发现,无法发现其它实例运行的JOB,因此需要登陆多台实例进行查询验证。

一/标准做法

登陆每个数据库实例,执行如下SQL,根据JOB信息,业务人员确认JOB信息,得到SID
select * from dba_jobs_running;
*如果开发人员无法确认JOB_ID,可以通过
select * from DBA_JOBS; WHAT--字段追踪job执行的PLSQL 然后根据v$session
select sid,serial# from v$session where sid=xx;

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);

alter system kill session 'sid,serial#' immediate;
问题已处理 或者通过

--禁用JOB
SQL> EXEC DBMS_JOB.BROKEN(job#,TRUE);
--启用JOB
SQL> EXEC DBMS_JOB.BROKEN(job#,FALSE);

broken  --官方文档定义,TURE则损坏状态
Sets the job as broken or not broken. TRUE sets it as broken; FALSE sets it as not broken.

二/问题分析

为什么dba_jobs_running视图无法获取远程实例执行的JOB Session?

SQL> select owner,object_name,object_id,status,object_type from dba_objects where object_name='DBA_JOBS_RUNNING';
OWNER OBJECT_NAME OBJECT_ID STATUS OBJECT_TYPE
---------- ------------------------------ ---------- ------- -------------------
SYS DBA_JOBS_RUNNING 4923 VALID VIEW
PUBLIC DBA_JOBS_RUNNING 4924 VALID SYNONYM SQL> select dbms_metadata.get_ddl('VIEW','DBA_JOBS_RUNNING','SYS') ddl_text from dual;
DDL_TEXT
--------------------------------------------------------------------------------
CREATE OR REPLACE FORCE VIEW "SYS"."DBA_JOBS_RUNNING" ("SID", "JOB", "FAILURES
", "LAST_DATE", "LAST_SEC", "THIS_DATE", "THIS_SEC", "INSTANCE") AS
select v.SID, v.id2 JOB, j.FAILURES,
LAST_DATE, substr(to_char(last_date,'HH24:MI:SS'),1,8) LAST_SEC,
THIS_DATE, substr(to_char(this_date,'HH24:MI:SS'),1,8) THIS_SEC,
j.field1 INSTANCE
from sys.job$ j, v$lock v
where v.type = 'JQ' and j.job (+)= v.id2 从上述SQL中,我们能知道,为什么DBA_JOBS_RUNNING 这个视图无法获取RAC其它实例正在运行的JOB,因为获取的条件是V$LOCK TYPE=JQ,其它实例信息无法捕捉。
想法,使用一个SQL,能够获取到RAC环境下所有运行的JOB

三/改写SQL

添加了JOB运行的实例ID,RAC环境无需登陆多个节点查询
select v.inst_id,v.SID, v.id2 JOB, j.FAILURES,
LAST_DATE, substr(to_char(last_date,'HH24:MI:SS'),,) LAST_SEC,
THIS_DATE, substr(to_char(this_date,'HH24:MI:SS'),,) THIS_SEC,
j.field1 INSTANCE
from sys.job$ j, gv$lock v
where v.type = 'JQ' and j.job (+)= v.id2;

添加了SESSION,SERIAL#信息,kill session更加快速
select v.inst_id,v.SID,s.serial#,v.id2 JOB, j.FAILURES,
LAST_DATE, substr(to_char(last_date,'HH24:MI:SS'),,) LAST_SEC,
THIS_DATE, substr(to_char(this_date,'HH24:MI:SS'),,) THIS_SEC,
j.field1 INSTANCE
from sys.job$ j, gv$lock v,gv$session s
where v.type = 'JQ' and j.job (+)= v.id2 and v.inst_id=s.inst_id and v.sid=s.sid; --建议测试后谨慎操作

select 'alter system kill session '''||v.SID||','||s.serial#||',@'||v.inst_id||''' immediate; '
from sys.job$ j, gv$lock v,gv$session s
where v.type = 'JQ' and j.job (+)= v.id2 and v.inst_id=s.inst_id and v.sid=s.sid and v.id2=&job_id;

 
添加了JOB运行的实例ID,RAC环境无需登陆多个节点查询
select v.SID, v.id2 JOB, j.FAILURES, LAST_DATE, 
substr(to_char(last_date, 'HH24:MI:SS'), , ) LAST_SEC,
THIS_DATE, substr(to_char(this_date, 'HH24:MI:SS'), , ) THIS_SEC,
v.INST_ID instance
from sys.job$ j, gv$lock v
where v.type = 'JQ' and j.job(+) = v.id2; create or replace view dba_jobs_running_rac
as
select v.SID, v.id2 JOB, j.FAILURES,
LAST_DATE, substr(to_char(last_date, 'HH24:MI:SS'), , ) LAST_SEC,
THIS_DATE, substr(to_char(this_date, 'HH24:MI:SS'), , ) THIS_SEC,
v.INST_ID instance
from sys.job$ j, gv$lock v
where v.type = 'JQ' and j.job(+) = v.id2; select * from dba_jobs_running_rac;

RAC环境查询JOB正在运行的信息的更多相关文章

  1. Linux下chkconfig命令详解--(启动或停止)和查询系统服务的运行级信息

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...

  2. chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...

  3. Oracle阻塞会话源头查找-单机和RAC环境

    在写 Oracle session相关数据字典(一)  这篇文章时,提到使用v$session视图的树形查询可以得到Oracle锁树,这样就便于我们找出阻塞会话的源头,但是仅仅可以在单机环境中使用.今 ...

  4. 利用XAG在RAC环境下实现GoldenGate自动Failover

    概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...

  5. Oracle RAC环境的日志体系

    转摘:http://blog.itpub.net/22664653/viewspace-722463/ 在Oracle RAC环境中比单个系统的日志体系要复杂:见下图: 简单介绍一下有关Oracle集 ...

  6. RAC 环境下参数文件(spfile)管理

    RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置, ...

  7. RAC 环境下修改归档模式

    RAC环境下的归档模式切换与单实例稍有不同,主要是共享存储所产生的差异.在这种情况下,我们可以将RAC数据库切换到非集群状态下,仅仅在一个实例上来实施归档模式切换即可完成RAC数据库的归档模式转换问题 ...

  8. Oracle-11g-R2 RAC 环境下 GPnP Profile 文件

    GPnP Profile 文件的作用: GPnP Profile 文件是一个保存于 $GRID_HOME/gpnp/<hostname>/profiles/peer 目录下的小型 XML ...

  9. Oracle RAC环境下定位并杀掉最终阻塞的会话-续

    之前在<Oracle RAC环境下定位并杀掉最终阻塞的会话>中,最终使用一个SQL查询出RAC实例之间的所有阻塞关系.但是实际在某些极端的生产环境,是不允许执行复杂的SQL语句,即使允许执 ...

随机推荐

  1. docker基本操作教程

    镜像操作 获取镜像 从Docker Hub搜索镜像: docker search ubuntu 下载镜像: docker pull ubuntu:18.04 若下载镜像速度较慢,更改镜像源: Ubun ...

  2. python_day1(初始Python)

    1.编码 ASCII (英文1字节,没中文)=> GB => GBK =>uncoode (中英文都2字节) => utf-8 (可变长字节储存,中文3字节,英文1字节) 2. ...

  3. html5基本页面

    html5基本页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. [复现论文程序图]High Speed Continuous Variable Source-Independent Quantum Random Number Generation

    这次的任务是复现该文章的图2(C),过程如下. ①翻译了整篇文章,断断续续,花了3-4天时间. ②阅读文章,并且记录下每个符号的意义,记在单独的1个word文档里. ③开始编程,用的matlab201 ...

  5. nyoj 655-光棍的yy (python, 未A)

    655-光棍的yy 内存限制:64MB 时间限制:1000ms 特判: No 通过数:4 提交数:7 难度:2 题目描述: yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结 ...

  6. 力扣(LeetCode)二进制间距 个人题解

    输入:6 输出:1 解释: 6 的二进制是 0b110 . 示例 4: 输入:8 输出:0 解释: 8 的二进制是 0b1000 . 在 8 的二进制表示中没有连续的 1,所以返回 0 . 提示: 1 ...

  7. secureCRT安装与激活

    SecureCRT安装及激活方式 百度网盘地址: SecureCRT及激活软件的地址: 1. 安装secureCRT 百度网盘下载,点击scrt814-x64.exe,按照提示安装secureCRT, ...

  8. (线段树)A Corrupt Mayor's Performance Art

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 题意: 区间更新, 区间询问: 题解: 区间更新, 区间询问, 一共30种颜色, 可用int 来 ...

  9. SQL中Truncate的用法

    SQL中Truncate的用法转自:http://www.studyofnet.com/news/555.html本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE ...

  10. vue的一些小记录

    1.在一个标签中,不推荐v-for 与 v-if 同时用 //当 v-if 与 v-for,v-for 具有比 v-if 更高的优先级. //当它们处于同一节点(同一标签 一起使用时),v-for 的 ...