ORA-00030: User session ID does not exist
查看等待事件,发现有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 —
关键字: 故障案例


站内搜索