如何杀死oracle会话 杀死oracle用户的session

如何快速的杀掉Oracle的Session举个例子
通过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 掉这个进程 就完如何杀死oracle会话了
SQL select sysdate from dual;
select sysdate from dual
*
第 1 行出现错误:
ORA-03135: 连接失去联系
进程 ID: 12135
会话 ID: 65 序列号: 19533
如何杀掉(kill)Oracle中的会话(Session)??匠?焙蟛呕岜唤饪??茄?蓟嵩斐捎τ貌僮鞅蛔枞??梢砸設ralce管理员权限用户登录Oracle数据,查询到被锁的对象,然后杀除指定的会话 。用下面的语句查询被锁的对象 , 可以带上更多约束条件 , 如schemaname等更精确的匹配 。
alter system kill session 'sid, serial#' 如上面查出来的一条记录的sid是53, serial#为663,就执行以下的语句alter system kill session '53,663' 如果要一次性杀死多个会话,一个一个填写sid和serial#十分的繁琐,应该在查询被锁对象的同时拼凑出多条的杀会话语句,以分号分隔,一起复制下来,然后就可以批量的执行了 。1.SELECT'alter system kill session '''|| c.sid ||''||','|| c.serial# ||''';',2. a.object_id, a.session_id, b.object_name, c.*3. FROMv$locked_object a, dba_objects b, v$session c4. WHEREa.object_id = b.object_id5. ANDa.SESSION_ID = c.sid( )6. ANDschemaname ='Unmi'7. ORDERBYlogon_time
[SQL][oracle疑难问题ORA-00031]:标记要终止的会话 解决方法问题场景:在操作大数据量的时候,会出现种种问题导致数据不正确导致需要重新处理数据 , 如果这个时候删除表数据会无法删除成功,然后手动终止会话可能会提示“标记要终止的会话”,这是因为手动终止会话后,进程的状态被设置为“killed”,但是锁定的资源很长时间没有被释放,那么可以在OS级再杀死相应的进程(线程),详细操作如下:
1 , 查询临时会话的session:
--查找sql执行的会话session id, 用session id 这一栏的数据进行kill掉会话
SELECT B.SID,
B.OBJECT,
A.SQL_ID,
A.LOGON_TIME,
A.SQL_EXEC_START,
A.MODULE,
C.SQL_TEXT,
C.SQL_FULLTEXT,
A.OSUSER,
A.EVENT#,
A.EVENT,
A.INST_ID,
A.ACTION,
A.PROCESS,
A.STATUS,
'alter system kill session ''' || a.sid || ', ' || a.serial# ||
', @' || a.inst_id || ''' IMMEDIATE;' kill_session,
A.*
FROM GV$SESSION A, GV$ACCESS B,GV$SQL C
WHERE A.SID = B.SID
AND A.INST_ID = B.INST_ID
AND A.SQL_ID = C.SQL_ID( )
AND A.INST_ID = C.INST_ID( )
--AND A.TYPE'BACKGROUND'
--AND A.STATUS = 'ACTIVE'
AND B.OWNER = 'BI_DM'
--AND A.INST_ID =1
--AND A.ACTION IN ('ORA$AT_SA_SPC_SY_4630','ORA$AT_OS_OPT_SY_4629')
AND B.OBJECT = 'TMP_T_JOBNAME'
【如何杀死oracle会话 杀死oracle用户的session】--AND A.USERNAME LIKE 'DEV%'
--AND A.MACHINE IN (/*'infor',*/'winitdb')
ORDER BY A.SQL_EXEC_START;
2,执行session id 里面是语句
alter system kill session '2761, 65372, @2' IMMEDIATE;
在kill session的时候,当提示RA-00031:标记要终止的会话 时
按如下操作:
1,select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED';
2,如果利用上面的命令杀死一个进程后 , 进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select b.spid,a.osuser,b.program from v$session a,v$process b where a.paddr=b.addrand a.sid=9065--9065就是上面的sid
.在OS上杀死这个进程(线程)
1)、在unix上,用root身份执行命令:#kill -9 9065(即第2步查询出的spid)
2)、在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名。可以用select name from v$database;查询
thread:是要杀掉的线程号,即第2步查询出的spid 。
例:c:orakill system 9065
注意:这里要注意的是kill OS进程是在服务端操作,而不是你程序所在客户机
如何杀掉Oracle中的会话1.查找:(注:若没有死锁如何杀死oracle会话的session如何杀死oracle会话,查询记录将为空 。)
(1).查询v$locked_object表
select * from v$locked_object;
(2).以Oralce管理员权限用户登录Oracle数据如何杀死oracle会话,查询到被锁的对象
SELECT a.object_id, a.session_id, b.object_name, c.*
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid( );
2.Kill Session:
alter system kill session 'sid, serial#';
注:
有时alter system kill session 'sid,serial#';并不能彻底的杀死会话 。
如果有ora-00031错误 , 则在后面加immediate;
alter system kill session '29,5497' immediate;
例如:
上面查出来的一条记录的sid是149, serial#为4153,就执行以下的语句:
alter system kill session '149,4153' ;
关于如何杀死oracle会话和杀死oracle用户的session的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读