当前位置: DBARoad > 故障案例 > 文章正文

ORA-00030: User session ID does not exist

                    作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
                    链接:http://www.dbaroad.me/archives/2008/11/ora-00030.html

查看等待事件,发现有10几个enqueue
查看锁资源情况,发现SID为984的会话堵住了其它会话
但984会话update是A表,而被锁住的是B表。

尝试杀掉会话984,报了个ORA-00030的错误:

sys@ZJPG>alter system kill session '984,9121';
alter system kill session '984,9121'
*
ERROR at line 1:
ORA-00030: User session ID does not exist.

查询其OS的PID,在操作系统上KILL -9掉该进程,再尝试alter system kill,仍报错。
查询其SESSION状态,未发生改变,锁表情况仍在。
想通过客户机上杀进程,但查询其PROCESS发现为1234,通过JDBC连接,无法获得准确的进程号。

sys@ZJPG>@get_session
Enter value for input_sid: 523
 
INST_ID  SID USERNAME  TYPE STATUS  OSUSER  PROCESS  MACHINE   PROGRAM
------- ---- --------- ---- ------- ------- -------- --------- ----------------
      2  984 PGATE     USER ACTIVE  pgate   1234     pg_eai_2  JDBC Thin Client
 
 
sys@ZJPG>@undo_use;    
 
NAME       XACTS  SID USERNAME   SQL_HASH_VALUE OSUSER  STATUS MACHINE   TYPE UNDO_SIZE_M START_TIME
---------- ----- ---- ---------- -------------- ------- ------ --------- ---- ----------- ------------------
_SYSSMU23$     1  984 PGATE           895652728 pgate   ACTIVE pg_eai_2  USER      24.641 11/09/08 15:55:11

查看进程的等待事件:

sys@ZJPG>select event,p2 from  v$session_wait where sid=984
 
EVENT                                  P2
------------------------------ ----------
latch free                             98
 
sys@ZJPG>select * from v$latchname where latch#=98
 
    LATCH# NAME
---------- --------------------
        98 cache buffers chains

考虑到cache buffers chains锁存器产生在buffer pool中,尝试flush一下。

sys@ZJPG>alter session set events 'immediate trace name flush_cache level 1';

再查询,发现锁已释放,会话消失。
问题比较奇怪,估计是会话在请求cache buffers chains锁存器时僵死在那了。

— The End —

关键字:
喜欢DBARoad的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露


  • 订阅


      抓虾
      google reader
      my yahoo
      bloglines
      鲜果
      有道

站内搜索



返回首页 | 关于我 | 联系我 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |