Oracle杀死死锁进程
查杀系统死锁的sql,最近想改造成存储过程,如下:
CREATE OR REPLACE PROCEDURE HERO_KILLLOCKSESSION
(OUT_COUNT OUT NUMBER, OUT_CUR OUT ZHUOCAIDEV.FUXJPACKAGE.FUXJRESULTSET) IS
BEGIN
SELECT COUNT(*)
INTO OUT_COUNT
FROM V$LOCKED_OBJECT L, DBA_OBJECTS B, V$SESSION X, V$PROCESS C
WHERE B.OBJECT_ID = L.OBJECT_ID
AND L.SESSION_ID = X.SID
AND C.ADDR = X.PADDR;
OPEN OUT_CUR FOR
SELECT B.OWNER,
B.OBJECT_NAME,
L.SESSION_ID,
X.SERIAL#,
X.USERNAME,
X.LOGON_TIME,
L.LOCKED_MODE,
'alter system kill session ''' || X.SID || ',' || X.SERIAL# ||'''' KILLSQL,
C.SPID AS OS_PROCESS_ID,
C.PID,
'ps -ef | grep ' || C.SPID AS CHECK_OS_PROCESS_COMMAND,
'kill -9 ' || C.SPID AS KILL_OS_PROCESS_COMMAND
FROM V$LOCKED_OBJECT L, DBA_OBJECTS B, V$SESSION X, V$PROCESS C
WHERE B.OBJECT_ID = L.OBJECT_ID
AND L.SESSION_ID = X.SID
AND C.ADDR = X.PADDR
ORDER BY X.LOGON_TIME ASC;
END;
在系统sys模式下可以正常运行,在zhuocaidev下面报 ORA-00942 表或视图不存在
但在正常的SQL中是能够对V$LOCKED_OBJECT , DBA_OBJECTS , V$SESSION , V$PROCESS 进行访问的。猜测估计是权限问题,联想到运行statspack报告的perfstat用户没有此问题,查看下statspack的创建脚本,发现需要单独使用下面语句进行赋权:
grant select on V_$SESSION to scott;
以sys用户登录,执行如下授权语句:
grant select on SYS.V_$LOCKED_OBJECT TO zhuocaidev; grant select on SYS.DBA_OBJECTS TO zhuocaidev; grant select on SYS.V_$SESSION TO zhuocaidev; grant select on SYS.V_$PROCESS TO zhuocaidev;
在以zhuocaidev登录,可以正常创建存储过程.
create or replace procedure pro_kill_lockprocess is /* 以sys用户登录,执行如下授权语句: grant select on SYS.V_$LOCKED_OBJECT TO gtdj; grant select on SYS.DBA_OBJECTS TO gtdj; grant select on SYS.V_$SESSION TO gtdj; grant select on SYS.V_$PROCESS TO gtdj; */ v_sql varchar2(4000); begin for rec1 in (SELECT /*+ rule */ s.username, l.type, decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL, o.owner, o.object_name, o.object_type, s.sid, s.serial# serial, s.terminal, s.machine, s.program, s.osuser, s.status FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND USERNAME = 'GTDJ' and object_name = 'ZX_GTDJ_LICENSE_TEMP' AND s.username is NOT NULL order by l.type) loop v_sql := 'alter system kill session ''' || rec1.sid || ',' || rec1.serial || ''''; dbms_output.put_line(v_sql); execute immediate v_sql; end loop;
end pro_kill_lockprocess;
批量杀死进程:
declare v_sql varchar2(4000); begin for rec1 in (SELECT /*+ rule */ s.username, l.type,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial# serial,s.terminal,s.machine,s.program,s.osuser,s.status
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+) AND USERNAME='GTDJ' and object_name='ZX_GTDJ_LICENSE_TEMP'
AND s.username is NOT NULL order by l.type ) loop
v_sql := 'alter system kill session '''||rec1.sid|| ','||rec1.serial||''''; dbms_output.put_line(v_sql); execute immediate v_sql; end loop;
end;
Oracle杀死死锁进程的更多相关文章
- Oracle删除死锁进程的方法
本文实例讲述了Oracle删除死锁进程的方法.分享给大家供大家参考.具体如下: 步骤1:用以下SQL查看进程列表,判断出被锁定的表 复制代码代码如下: SELECT dob.OBJECT_NAME T ...
- SqlServer 查询死锁,杀死死锁进程
-- 查询死锁 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sy ...
- SqlServer 查询死锁,杀死死锁进程*转载
原文: -- 查询死锁 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName fro ...
- oracle删除死锁进程
在命令行下运行: select SID,SERIAL# from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; alte ...
- sql server 查看表的死锁和Kill 死锁进程
查询出来 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableNa ...
- sql server 查询和Kill死锁进程
查询死锁进程语句 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tab ...
- Sqlserver查询死锁及杀死死锁的方法
-- 查询死锁 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sy ...
- 如何杀死oracle死锁进程
方法一:Oracle的死锁非常令人头疼,总结了一些点滴经验作为学习笔记 1.查哪个过程被锁查V$DB_OBJECT_CACHE视图: '; 2. 查是哪一个SID,通过SID可知道是哪个SESSION ...
- oracle杀死锁表的进程(转发+合并+自己实践)
之一: Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作 (1)锁表查询的代码有以下的形式:select count(*) from v$locked_object;sel ...
随机推荐
- Nodejs应用安全备忘录
本人新博客www.wjs.photo,基于360的firekylin,感兴趣的可以看看哈 本文翻译自 www.risingstack.com ,并非逐字逐句的翻译,有错误的地方请指出,谢谢啦 应用程序 ...
- C语言之自增和自减运算符
一 自增和自减 自增(++):就是给自己的值再加1 自减(--):就是给自己的值减1 tips: ++(--)可以放在前面,也可以放在后面,效果都是一样,都是会给自身+1(-1) 前缀++(--):会 ...
- 关于C/C++中的“auto”
C/C++ 98标准 C++03标准 意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存.auto的出现意味着,当前变量的作用域为当前函数或代码段的局部变量,意味着当 ...
- ASP.NET Zero--11.一个例子(4)商品分类管理-数据检验
虽然已经可以添加商品分类,但还需进行优化,比如:用户是否输入.输入字符串是否有格式限制等等. 打开添加分类按钮,名称不输入任何字符,直接保存,会发现列表添加一条空记录.在实际项目中,这是不允许出现的事 ...
- 【01背包】HDU 2602 Bone Collector (模板题)
Problem Description Many years ago , in Teddy's hometown there was a man who was called "Bone C ...
- IOS CALayer是什么
大家在开发IOS程序时,经常会遇到self.view.layer这个东西,我以前也是不求甚解,后来觉得有必要整理下. 简单介绍layer: 在IOS中,你能看得见摸得着的东西都是UIView,比如一个 ...
- 【LeetCode】30. Substring with Concatenation of All Words
You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...
- asp.net网站发布到服务器GET的技能
刚刚知道映射网络驱动器的作用(虽然才知道,但是我高兴) 把服务器上的硬盘或者其他电脑共享给你的盘映射到本地,就和操作本地硬盘一样. 双击计算机->映射网络驱动器->上面选择驱动器号 下面文 ...
- js格式化时间为JSON格式 ajax提交 后台处理
var effectRow = new Object();if ($('#grd_infos').datagrid('getChanges').length) { var update = $( ...
- aforge通过角点匹配图片相似度
我不知道什么原因,人品不好还是啥的 ExhaustiveTemplateMatching这个类无法高精确度的匹配图片 ........... 换一种方式,就好得多 /// <summary> ...