`
zsmud
  • 浏览: 71844 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

杀掉oracle进程的方法

阅读更多
sql 代码
  1. ----杀掉oracle进程的方法----   
  2.   
  3. 1.通常可以使用以下命令Kill进程:   
  4. alter system kill session 'sid,serial#';   
  5. 2.   
  6. select logon_time,username,action,program,terminal,machine,userfrom v$session where terminal = 'CZYS'   
  7. select spid from v$process where addr in  
  8.  (select paddr from v$session where terminal ='CZYS'   
  9.    andlogon_time <= to_date('2006-2-17 16:28:56','yyyy-mm-ddhh24:mi:ss'));   
  10.   
  11.   
  12. -------------------------------   
  13. 为了更快速的释放资源,通常我们使用如下步骤来Kill进程:   
  14. 1.首先在操作系统级kill进程   
  15. 2.在数据库内部kill session   
  16. 这样通常可以快速中止进程,释放资源。   
  17.   
  18. 首先查询得到该session对应的OS进程号:   
  19. SQL> select 'kill -9 '||spid from v$process where addr = (selectpaddr from v$session where sid=&sid);   
  20. Enter value for sid: 154   
  21. old   1: select 'kill -9 '||spidfrom v$process where addr = (select paddr from v$session wheresid=&sid)   
  22. new   1: select 'kill -9 '||spidfrom v$process where addr = (select paddr from v$session wheresid=154)   
  23.   
  24. 'KILL-9'||SPID   
  25. --------------------   
  26. kill -9 22702   
  27.   
  28. SQL> !   
  29. 在操作系统级kill该进程:   
  30. [oracle@danaly ~]$ ps -ef|grep 22702   
  31. oracle  22702    1  0 Oct25?       00:00:02 oracledanaly (LOCAL=NO)   
  32. oracle   1208212063  0 11:12pts/1   00:00:00 grep 22702   
  33. [oracle@danaly ~]$ kill -9 22702   
  34. [oracle@danaly ~]$ ps -ef|grep 22702   
  35. oracle   1208812063  0 11:12pts/1   00:00:00 grep 22702   
  36. [oracle@danaly ~]$ exit   
  37. exit   
  38.   
  39. SQL> select sid,username,status from v$session;   
  40.   
  41.       SIDUSERNAME                      STATUS   
  42. ---------- ------------------------------ --------   
  43. ...   
  44.       154SCOTT                         KILLED   
  45. ...   
  46.   
  47. 30 rows selected.   
  48.   
  49. SQL> select sid,serial#,username from v$session wheresid=154;   
  50.   
  51.       SID    SERIAL#USERNAME   
  52. ---------- ---------- ------------------------------   
  53.       154     56090 SCOTT   
  54.   
  55. 再次在数据库中kill该session,并指定immediate选项:   
  56. SQL> alter system kill session '154,56090' immediate;   
  57.   
  58. System altered.   
  59.   
  60. SQL> select sid,serial#,username from v$session wheresid=154;   
  61.   
  62. no rows selected   
  63.   
  64.   
  65. 此时该进程被迅速清除。   
  66.   
  67. --------------------------------------------------------   
  68. 查找锁定的session   
  69. SELECT   sn.username,m.SID,sn.SERIAL#, m.TYPE,   
  70.         DECODE (m.lmode,   
  71.                 0, 'None',   
  72.                 1, 'Null',   
  73.                 2, 'Row Share',   
  74.                 3, 'Row Excl.',   
  75.                 4, 'Share',   
  76.                 5, 'S/Row Excl.',   
  77.                 6, 'Exclusive',   
  78.                 lmode, LTRIM (TO_CHAR (lmode, '990'))   
  79.                ) lmode,   
  80.         DECODE (m.request,   
  81.                 0, 'None',   
  82.                 1, 'Null',   
  83.                 2, 'Row Share',   
  84.                 3, 'Row Excl.',   
  85.                 4, 'Share',   
  86.                 5, 'S/Row Excl.',   
  87.                 6, 'Exclusive',   
  88.                 request, LTRIM (TO_CHAR (m.request, '990'))   
  89.                ) request,   
  90.         m.id1, m.id2   
  91.     FROMv$session sn, v$lock m   
  92.    WHERE (sn.SID = m.SID ANDm.request !=0)        --存在锁请求,即被阻塞   
  93.      OR (    sn.SID =m.SID                        --不存在锁请求,但是锁定的对象被其他会话请求锁定   
  94.          AND m.request = 0   
  95.          AND lmode != 4   
  96.          AND (id1, id2) IN (   
  97.                        SELECT s.id1, s.id2   
  98.                          FROM v$lock s   
  99.                         WHERE request != 0 AND s.id1 = m.id1   
  100.                               AND s.id2 = m.id2)   
  101.         )   
  102. ORDER BY id1, id2, m.request;   
  103. --------------------------------------------------------------   
  104. 通过数据字典V$SESSION与V$LOCK来了解正在等待锁资源的用户   
  105. select a.username,a.sid,a.serial#,b.id1 from v$session a ,v$lockb   
  106.         Where a.lockwait = b.kaddr;   
  107. 了解锁住其他用户的用户进程,方法如下:   
  108. select a.username,a.sid,a.serial#,b.id1 from v$session a,v$lockb   
  109.         Where b.id1 in  
  110.                 (select distinct e.id1 from v$session d,v$lock e where d.lockwait =e.kaddr)   
  111.                 And a.sid = b.sid and b.request =0;   
分享到:
评论

相关推荐

    如何解决Oracle杀死死锁进程

    本文介绍了解决Oracle杀死死锁进程的方法。

    oracle杀进程

    用oracle命令和操作系统命令杀oracle锁死进程

    如何快速的杀掉Oracle的Session

    一、问题的提出很多的时候我们迅速的杀掉Oralcle的一些session,理由大体如下:  1、 一些时候,由于我们的数据量很大,相应的事务大并且多,在做shutdown immediate的时候会花费好多的时间,而我们却想用shutdown ...

    ORACLE如何杀掉带锁的进程.txt

    ORACLE如何杀掉带锁的进程.txt

    Oracle Kill被锁进程

    Oracle查找被锁进程,及如何在数据库级或操作系统级Kill掉相应被锁的进程

    Windows环境中Kill掉Oracle线程

    Windows环境中Kill掉Oracle线程

    oracle杀死锁,寻PIDKILL进程

    oracle杀死锁 ,在批量导入数据的时候,在数据库中很容易就碰到锁表了,导致长时间数据库卡死,此脚本方便找寻数据库被锁对象,如果在oracle中不能alter kill掉 说明该session已过期需要进入后台去杀掉进程

    查看oracle数据库的连接数以及用户、数据库锁定进程

    查看oracle数据库的连接数以及用户 1、查询oracle的连接数 2、查询oracle的并发连接数 3、查看不同用户的连接数 4、查看所有用户: 5、查看用户或角色系统权限(直接赋值给用户或角色的系统...杀掉锁定进程

    oracle查看被锁的表和被锁的进程以及杀掉这个进程

    SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name FROM v$process p, v$session a, v$locked_object b, all_objects c WHERE p.addr = a.paddr AND a.process = b.process...

    讲解Oracle数据库中结束死锁进程的一般方法

    主要介绍了Oracle数据库中结束死锁进程的一般方法,包括查询死锁以及避免死锁的建议等内容,需要的朋友可以参考下

    oracle基础教程

    4.2 如何杀掉吊死session 51 4.3 如何修改字符集 51 4.4 如何追加表空间 51 4.5 如何加大表的maxextents值 52 4.6 如何查询无效对象 52 4.7 怎样分析SQL语句是否用到索引 52 4.8 怎样判断是否存在回滚段竞争 53 4.9 ...

    oracle常见的锁查询和处理

    DML事务锁定的机制 行级锁(TX锁) 表级锁(TM锁) 锁定相关视图 v$transaction v$lock 5 v$enqueue_lock v$session 检测并解决冲突 常见的锁查询和处理 当前系统中存在的锁争用: ...--杀掉会话进程

    解决Oracle死锁问题.txt

    编译的存储过程的时候,程序死住,等待一会出现ora-04021错误解决办法。文档中有查询思索的语句,以及杀掉死锁进程的方法。

    oracle表被锁定的完美解决方法

    ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...

    如何安全快速的批量删除Oracle数据库外部会话session

    在ORACLE数据库杀掉会话进程有三种方式: 1:ALTER SYSTEM KILL SESSION 关于KILL SESSION Clause ,官方文档描述alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除...

    oracle Session与lock 解除

    我们可以用下面SQL语句杀掉长期没有释放非正常的锁: alter system kill session 'sid,serial#'; 如果出现了锁的问题, 某个DML操作可能等待很久没有反应。 当你采用的是直接连接数据库的方式, 也不要用OS...

    Oracle 查询死锁并解锁的终极处理方法

    一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。 1.下面的语句用来...

    ORACLE数据库基础知识-华为维护资料

    3.2 如何杀掉吊死session 39 3.3 如何修改字符集 39 3.4 如何追加表空间 39 3.5 如何加大表的maxextents值 40 3.6 如何查询无效对象 40 3.7 怎样分析SQL语句是否用到索引 40 3.8 如何将Oracle8数据导入Oracle7数据库...

    oracle锁表该如何解决

    废话不多说 上语句: 查询锁表语句: ...杀掉查到的进程: alter system kill session 'sid,serial#'; 例如: alter system kill session '20,182'; 如果杀不掉可以加个 immediate 立即杀掉 试试; alter sys

Global site tag (gtag.js) - Google Analytics