重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
sqlplus环境下 alter system kill session 'sid,serial#';
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网络空间、营销软件、网站建设、荔湾网站维护、网站推广。
如果不行的话在操作系统下操作:
windows: orakill 实例名 spid
linux: kill -9 spid
ORACLE利用事务和封锁机制提供数据并发存取和数据完整性,在一事务内由语句获取的全部封锁在事务期间被保持,直至该事务提交或回滚时被释放。对于用ORACLE7数据库服务器构造的较大规模的企业级客户/服务器应用系统,众多的客户端由于各种各样的原因(硬件故障、意外掉电等等)难免造成用户会话的意外中止,而ORACLE本身不主动清除这些垃圾会话(session),如果这些会话(session)恰好在当前事务期间对数据库对象(表、视图等)加了锁,往往造成其他客户端的用户不能正常继续工作。如何及时清除这些垃圾会话(session)、释放所占用的资源,这正是本文所要讨论的内容。2具体方法ORACLE数据库具有审计其内部所有发生的活动的能力,每一个企图与数据库连接的活动都可以被审计(Audit),即所谓的登录审计(LoginAudit)。
举个例子
通过session id (SID) 找到系统进程号 然后kill 进程
SQL select spid from v$process where addr=(select paddr from v$session where rownum=1 and sid=(select userenv('SID') from dual));
SPID
------------------------
12135
spid 系统进程号
SQL ho kill -9 12135
kill 掉这个进程 就完了
SQL select sysdate from dual;
select sysdate from dual
*
第 1 行出现错误:
ORA-03135: 连接失去联系
进程 ID: 12135
会话 ID: 65 序列号: 19533
你可以考虑使用在操作系统层面来杀掉客户端会话的连接进程,这样资源马上就可以释放掉,如果只是在数据库级别的话,即便是管理员杀掉会话,那么v$session里面也不过是显示killed状态,而不是真正的释放掉,同时如果此时实际的连接数量达到参数session设定数量上线的话,新的连接将会报错无法连接,直到资源释放才可以。