数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
一次解决session无法完全删除问题的全过程(原创)

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

开发环境:win2000server+oracle9i+delphi
开发人员报告:在程序中杀了JOB,但是被操作的表还是锁表状态,
              其中有一张日志表还在不断插入记录,直到执行完所有插入操作(一个漫长的等待过程)才能解锁
现场描述:oem中被杀job起的SESSION状态为killed,其中有3张表被锁点击右键--》中断会话 
          提示: 标记要删去的会话

===================================================================================================
处理方法一 :

1.SELECT saddr,sid,serial#,paddr,username,status FROM v$session WHERE username IS NOT NULL
example:saddr,sid,serial#,paddr,username,status FROM v$session WHERE username = 'XNJW0419' ;
SADDR SID SERIAL# PADDR USERNAME STATUS
-------- ---------- ---------- -------- ------------------------------ --------
542E0E6C 11 314 542B70E8 EYGLE INACTIVE 542E5044 18 662 542B6D38 SYS ACTIVE

2.ALTER SYSTEM KILL SESSION 'sid, serial#';
example:ALTER SYSTEM KILL SESSION '11,314';(注:在sqlplus中执行 )

结果: 提示标记要删去的会话 无法释放会话,未成功解锁

====================================================================================================
处理方法二 :

a、 找到你要杀掉的那个SESSION, 并记下paddr

SELECT sid, username, paddr, status FROM v$session WHERE username = '用户名' ;
example:SELECT sid, username, paddr, status FROM v$session WHERE username = 'XNJW0419' ;
       SID USERNAME                       PADDR    STATUS
---------- ------------------------------ -------- --------
        10 XNJW0419                       2B5E2E2C KILLED

b、 找到这个SESSION所对应的spid

SELECT * FROM v$process WHERE addr = '上面查寻的paddr';
example:SELECT ADDR,PID,SPID,USERNAME,SERIAL#,TERMINAL FROM v$process WHERE addr = '2B5E2E2C';
ADDR            PID SPID         USERNAME           SERIAL# TERMINAL
-------- ---------- ------------ --------------- ---------- ----------------
2B5E2E2C         44 1204         SYSTEM                 -99 JWC

c、 杀掉spid所标识的那个进程

D:\>orakill sid  spid (注:cmd命令窗口中执行 只有oracle服务器端才有orakill命令)
example: D:\>orakill oemrep 1204

提示:KILL OF THREAD id 1204 IN INSTANCE oemrep successfully signalled.

结果:成功删除该SESSION,表也解锁




相关文章

相关软件