oracle kill 不掉数据库 用户session Kill不掉

oracle 不能断开数据库用户连接_百度知道
oracle 不能断开数据库用户连接
如题,我是0racle10g,在数据库下创建了很多个用户。当我在做数据库恢复时,需要将原来的用户删掉,然后重新创建相同的用户名。问题来了,在删除用户的时候必须是断开连接的,通过v$session查找有很多用户都还在连接,然后再kill的时候,提示删除成功,但是,很快又一个不同的sid连上来了,还是同一个用户,只是SID不同,所以,用户永远断不开,kill一个SID,很快另一个又上来了。我确定,并没有人去连,请问,这是怎么回事?
我就是用dba身份登录的、主要是会话kill不掉、kill一个,立即又有一个连上来了。
提问者采纳
查一下v$session表中记录的客户端的主机、登录系统用户、所使用的客户端程序,再做判断
其他类似问题
为您推荐:
数据库用户的相关知识
其他3条回答
你的用户端关了吗? 就是sql .pls
真没遇到过
我也遇到这个问题了,先把这个用户锁定,然后在kill它的session就可以了。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁后使用快捷导航没有帐号?
查看: 3095|回复: 5
UID131294帖子阅读权限20精华贴数技术排名11022 专家积分0 社区排名209130 技术积分275 社区积分0 注册时间
精华贴数专家积分0 技术积分275 社区积分0 注册时间
SQL& select object_name,owner from dba_objects a,v$locked_object b where a.object_id=b.object_
OBJECT_NAME OWNER
-------------------------------------------------------------------------------- ------------------------------
PROCEDURE$ SYS
PROCEDUREINFO$ SYS
ARGUMENT$ SYS
IDL_UB1$ SYS
IDL_CHAR$ SYS
IDL_UB2$ SYS
IDL_SB4$ SYS
ERROR$ SYS
PROCEDUREJAVA$ SYS
PROCEDUREC$ SYS
VTABLE$ SYS
11 rows selected
这11个对象从19号起一直被锁,用alter system kill session (sid,serial#),提示标记已删除的会话,为什么?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp
UID131294帖子阅读权限20精华贴数技术排名11022 专家积分0 社区排名209130 技术积分275 社区积分0 注册时间
精华贴数专家积分0 技术积分275 社区积分0 注册时间
问题表述不是很清楚,用alter system kill session (sid,serial#),提示&标记已删除的会话&,之后几天内执行select*from v$locked_object ,发现这11个对象对应的SESSION始终没有kill掉,有1个过程和三个触发器失效后无法编译,一编译就死,请大家帮看看为什么
UID42810帖子阅读权限20精华贴数技术排名1469 专家积分0 社区排名2569 技术积分1888 社区积分527 注册时间
该如何选择呢?
精华贴数专家积分0 技术积分1888 社区积分527 注册时间
你看看你的这些session的状态是不是一直是killed状态?另外看看对应的锁是什么锁??如果真的一直是这样的话,就需要看看从操作系统级别看看能不能kill -9 杀调.如果还不行估计先分析原因在重新启动数据库了
UID131294帖子阅读权限20精华贴数技术排名11022 专家积分0 社区排名209130 技术积分275 社区积分0 注册时间
精华贴数专家积分0 技术积分275 社区积分0 注册时间
最初由 zflying2000 发布
[B]你看看你的这些session的状态是不是一直是killed状态?另外看看对应的锁是什么锁??如果真的一直是这样的话,就需要看看从操作系统级别看看能不能kill -9 杀调.如果还不行估计先分析原因在重新启动数据库了 [/B]
是的,状态一直是KILL的,对应的lockmode都是3,3是什么类型的锁?怎么查?谢谢
UID337376帖子阅读权限20精华贴数技术排名36844 专家积分0 社区排名407010 技术积分64 社区积分0 注册时间
精华贴数专家积分0 技术积分64 社区积分0 注册时间
仔细看看下面的.只能在操作系统级别看看能不能kill -9 杀,要查出你要杀的v$session.si
先介绍三个视图吧:v$process是ORACLE处理的进程,v$session是ORACLE处理的会话,v$sqlarea是ORACLE处理的SQL语句存放区就是共享池那东西。三个表联合查一下。SELECT P.pid,S.sid,s.serial#,P.spid,S.username,S.osuser,P.serial#,P.terminal,P.program,P.background,S.status,A.sql_text
FROM v$process P, v$session S,v$sqlarea A WHERE P.addr = s.paddr AND S.sql_address = a.address (+) order by P.结果就是下面这样[/img]
这里面查出来的就是ORACLE实时正在处理的SQL语句过程等。当然还包含基本的(PMON)(DBW0)(LGWR)等后台进程。有时候大家编译过程时,怎么都编译不过去其实过程是好着的.这就是ORACLE出现死锁了.死锁了肯定是锁最后一个会话,那就是你编着的那个.这时候大家有可以要重新SHUTDOWN IMMEDIATE才行解决问题.其实运行上面的语句再配合下面的就可以了.在Oracle数据库中,可以通过kill session的方式来终止一个进程,alter system kill session 'sid,serial#' ;这里sid,serial#就是上面的v$session.sid,v$session.serial#这二值,多运行几次上面的SELECT语句就可以查出你被锁住的那个过程.其它不明的不能通杀了.这里关键就是要查出你要杀的v$session.sid,v$session.serial#二个值.然后做alter system kill session 'sid,serial#' ;做完以后.你的客户端一般就直接提示SESSION KILLED.但也有不提示没反映.再运行SELECT语句,发现v$session.status为KILLED.再等待还是一样.本人也比较郁闷,从书上查知被kill掉的session,状态会被标记为killed,Oracle会在该用户下一次touch时清除该进程.Oracle就等待PMON去清除这些Session.通常等待一个被标记为Killed的Session退出需要花费很长的时间.但我从来都没等及过.这不又白杀了.没关系,用必杀招,在LINUX下杀.你用SELECT查出来的时候还有一个v$process.spid列.在LIUNX的$下运行TOP.[/img]你知发现了原来这一列的值,就是TOP下的PID值.那这样好办了.直接在LIUNX的$下KILL -9 v$process.spid这个值要是你在SELECT下要记录下的.好了.这就必杀了.过程编译不过去,肯定是有会话地运行.出现过这问题.用已上方法解决过.其它配合SELECT P.pid,S.sid,s.serial#,P.spid,S.username,S.osuser,P.serial#,P.terminal,P.program,P.background,S.status,A.sql_text
FROM v$process P, v$session S,v$sqlarea A WHERE P.addr = s.paddr AND S.sql_address = a.address (+) order by P.和LIUNX的下的TOP你们会发现很多东西的.比如说接口程序是很占CPU的还有查到实时会话.
UID13820帖子阅读权限20精华贴数技术排名2400 专家积分20 社区排名5037 技术积分1220 社区积分158 注册时间
新理想主义
精华贴数专家积分20 技术积分1220 社区积分158 注册时间
如果KILL不掉的话,最好进OS杀进程.
:&&nbsp&&nbsp&&nbsp&&nbsp
亲爱的ITPUB网友:  因本站进行系统维护,维护期间ITPUB暂停站内所有的功能,只提供浏览,由此给大家带来不便,敬请谅解。
ITPUB运营团队
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号oracle查看SQL,LOCK,KILL_卢楚翔吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2贴子:
oracle查看SQL,LOCK,KILL
查询:select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.
--查询Oracle正在执行的sql语句及执行该语句的用户SELECT b.sid oracleID,
b.username 登录Oracle用户名,
b.serial#,
spid 操作系统ID,
sql_text 正在执行的SQL,
b.machine 计算机名FROM v$process a, v$session b, v$sqlarea cWHERE a.addr = b.paddr
AND b.sql_hash_value = c.hash_value--查看正在执行sql的发起者的发放程序SELECT OSUSER 电脑登录身份,
PROGRAM 发起请求的程序,
USERNAME 登录系统的用户名,
SCHEMANAME,
B.Cpu_Time 花费cpu的时间,
B.SQL_TEXT 执行的sqlFROM V$SESSION ALEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS
AND A.SQL_HASH_VALUE = B.HASH_VALUEORDER BY b.cpu_time DESC
查出oracle当前的被锁对象SELECT l.session_id sid,
s.serial#,
l.locked_mode 锁模式,
l.oracle_username 登录用户,
l.os_user_name 登录机器用户名,
s.machine 机器名,
s.terminal 终端用户名,
o.object_name 被锁对象名,
s.logon_time 登录数据库时间FROM v$locked_object l, all_objects o, v$session sWHERE l.object_id = o.object_id
AND l.session_id = s.sidORDER BY sid, s.serial#;kill掉当前的锁对象可以为
alter system kill session 'sid,serial#'
alter system kill session '24,8904'kill 掉所有对象:
SELECT 'alter system kill session '''||b.sid||','||b.serial#||''' '
FROM v$process a, v$session b, v$sqlarea cWHERE a.addr = b.paddr
AND b.sql_hash_value = c.hash_复制结果直接plsql执行结果。
内&&容:使用签名档&&
保存至快速回贴zylhsy 的BLOG
用户名:zylhsy
文章数:177
评论数:94
访问量:289325
注册日期:
阅读量:2918
阅读量:14940
51CTO推荐博文
TITLE:ORACLE10G如何用alter system kill session 清除死锁进程
问题描述:用户反馈数据交换终止,查询发现大量的死锁信息
LOGON_TIME
解决步骤:
1、用下面的语句组装生成清除死锁进程的脚本
--杀锁死进程
select Distinct 'alter system kill session '||chr(39)||b.sid||','||b.serial#||chr(39)||';'As 组装语句在RAC执行时区分节点,b.username,b.logon_time
from v$locked_object a,v$session b
where a.session_id=b.sid
order by b.logon_time
&&& 执行结果格式如下:
组装语句在RAC执行时区分节点
LOGON_TIME
alter system kill session '';
2、以sysdba权限登录SQLPLUS 后执行上一步生成的脚本
[root@oracle2 ~]# su - oracle
[oradba@oracle2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on 星期五 6月 20 11:07:47 2010
Copyright (c) , Oracle.& All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL& alter system kill session '989,2173';
alter system kill session '';
alter system kill session '917,44267';
alter system kill session '929,38284';
System altered.
System altered.
System altered.
别忘记最后敲一个回车,否则最后一条语句可能没有执行。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 oracle杀掉session 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信