oracle僵死会话锁住buffer,导致数据库hang住

1、问题描述

    今天早上,现数据库有点异常,通过hanganalyze分析,使用hanganalyze请参阅《 数据库hang住,分析处理》,发现2172这个会话产生了enqueue阻塞,,导到程序运行非常缓慢,快到hang住的地步,开启会话窗口查询
   
SQL> select a.sid,a.serial#,b.spid,a.status,a.machine,a.program from v$session a,v$process b
  2  where a.paddr = b.addr and a.sid = 2172
 
       SID    SERIAL# SPID         STATUS   MACHINE                             PROGRAM
---------- ---------- ------------ -------- ----------------------------------- -----------
      2172      51610 12649312     ACTIVE mytest.test.com                 JDBC Thin Client

由于这个会话产生了阻塞,首先我想到了直接查杀。

SQL> alter system kill session '2172,51610';
alter system kill session '2172,51610'
*
ERROR at line 1:
ORA-00030: User session ID does not exist.

发现,提示这个会话不存在。

2、问题分析

于是,我尝试从操作系统上面查询这个进程

[oracle@mydbtest:/oracle]$kill -9 12649312
kill: 13304684: 0403-003 The specified process does not exist.

从操作系统上,显示没有这个进程,所以,初步判断,会话存在,由于某些意外产生,导致该会话的进程被操作系统清理掉了,但其在oracle的sga仍然占有资源没有被pmon\smon清理掉,未能释放,导致其它进程无法使用,进而产生阻塞。

3、问题解决

从上面的查询来看,该会话是活动状态的。

所以看一下这个会话的情况:

SQL> select a.name,b.xacts,c.sid,c.serial#,c.username,d.sql_text
  2  from v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction e
  3  where a.usn = b.usn and b.usn = e.xidusn
  4  and c.taddr = e.addr and c.sql_address = d.address
  5  and c.sql_hash_value = d.hash_value and c.sid = 2172
  6  order by a.name,c.sid,d.piece;

NAME                                XACTS        SID    SERIAL# USERNAME         SQL_TEXT                                           
------------------------------ ---------- ---------- ---------- ---------------- ---------------------------------------------------
_SYSSMU22$                              1       2172      51610 mytest           update mytest_t set doc_subject = b1, doc_create_ti =
 
该会话正在进行修改,但由于某些原因,导致问题产生。由于该会话是占用sga资源没有释放,所以只有清空buffer pool池,来清理掉该会话的资源

SQL> alter session set events 'immediate trace name flush_cache level 1';

Session altered.

再进去查看,会话已经消失,阻塞已经消失了,业务立刻顺畅起来。

oracle10g以后,提供了一种新的刷新buffer的方法:

SQL> alter system flush BUFFER_CACHE;

System altered.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29371470/viewspace-1067786/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29371470/viewspace-1067786/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值