怎样查看最消耗资源的sql语句 与 ora-00031:session marked for kill
来源:互联网 发布:node.js在线 编辑:程序博客网 时间:2024/06/07 00:08
方法一:
方法二:
我们可以首先使用top等工具,找到最好资源的进程(记住进程号),例如,操作系统进程号为2796,然后根据这个进程号(v$process.spid)在v$process中找到进程地址(v$process.addr),然后根据这个地址在v$session中找到相应的sid(v$session.sid),然后根据这个sid找到相应的hash alue(v$session. sql_hash_value),然后根据这个hash alue在v$sqltext,$sql,v$sqlarea等视图中找到对应的sql语句(sql_text)。
比如:我用top工具看到最消耗CPU的PID为26337,即V$PROCESS里面的字段SPID为26337
SQL> SELECT a.pid,a.spid,a.username,b.sid,b.serial#,c.hash_value,c.sql_text
2 FROM v$process a,v$session b,v$sqltext c
3 WHERE a.addr=b.paddr
4 AND b.sql_hash_value=c.hash_value
5* and A.spid=26337
PID SPID USERNAME SID SERIAL# HASH_VALUE
---------- ------------ --------------- ---------- ---------- ----------
SQL_TEXT
----------------------------------------------------------------
17 26337 oracle 160 361 474876535
i); EXIT WHEN 1>2; i:=i+1; END LOOP; END;
17 26337 oracle 160 361 474876535
DECLARE i number:=1; BEGIN LOOP INSERT INTO test(id) VALUES(
原来这个sql语句发生了死循环。
解决办法:查询这个会话的SID,SERIAL#,杀死这个会话,若杀不掉,在OS下将该进程杀掉。再把PL/SQL程序改为正确的即可。
如:
SQL> alter system kill session '160,361';
alter system kill session '160,361'
*
ERROR at line 1:
ORA-00031: session marked for kill
但发现报错,并且还没有杀死。
在os下杀死该进程:
kill -9 26337
会话终止了。
此时,再运行该sql语句,查询结果为空了。:
SQL> SELECT a.pid,a.spid,a.username,b.sid,b.serial#,c.hash_value,c.sql_text
2 FROM v$process a,v$session b,v$sqltext c
3 WHERE a.addr=b.paddr
4 AND b.sql_hash_value=c.hash_value
5* and A.spid=26337
no rows selected
- 怎样查看最消耗资源的sql语句 与 ora-00031:session marked for kill
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ora-00031:session marked for kill(标记要终止的会话)解决方法
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ora-00031:session marked for kill(标记要终止的会话)解决方法
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
- Oracle分组函数之CUBE魅力
- Oracle 数据泵使用详解
- shell 中if作比较
- c语言指针习题分享
- 每日一题(22) - 寻找数组中的最大值和最小值
- 怎样查看最消耗资源的sql语句 与 ora-00031:session marked for kill
- 关于android的一些默认的系统style和theme
- unning LotusScript Agent that calls a Java Library Generates the following Error: java.lang.Security
- cognos 年累计 同比年累计 DB2保存小数位2位
- 谨此日记纪念大学的最后一次考试
- Java中的==和equals区别
- win7 做 无线路由器
- iOS实现反射机制
- Silverlight WCF RIA服务(一)简介