zoukankan      html  css  js  c++  java
  • oracle杀会话

    1、概念oracleRAC集群死锁进程是针对对应实例的,查询的时候需要用到gv$全局试图
    2、查询数据库中所有会话信息

    SQL> select saddr,sid,serial#,paddr,username,status from gv$session;
    SADDR                   SID    SERIAL# PADDR            USERNAME                       STATUS
    ---------------- ---------- ---------- ---------------- ------------------------------ --------
    000000025C233B00         27      33353 000000025F1D1FC8 ETL                            INACTIVE
    000000025C23A608         37      11448 000000025F1D27B0 SYS                            ACTIVE
    000000025C24BC50         63      54311 000000025F1D5F08 SYS                            ACTIVE
    
    3、发送结束会话的命令
    SQL> alter system kill session '27,33353' IMMEDIATE;
    
    4、再次查看会话状态 killd
    SQL> select saddr,sid,serial#,paddr,username,status from gv$session;
     
    SADDR                   SID    SERIAL# PADDR            USERNAME                       STATUS
    ---------------- ---------- ---------- ---------------- ------------------------------ --------
    000000025C233B00         27      33353 000000025C21A0B0 ETL                            KILLED
    
         如下所示,我杀掉了其中两个会话后,这两个会话的地址都变为000000025C21A0B0了(请见PADDR列)。当在Oracle中kill session以后, Oracle只是简单的把相关session的paddr 指向同一个虚拟地址.此时v$process和v$session失去关联,进程就此中断。 然后Oracle就等待PMON去清除这些Session.所以通常等待一个被标记为Killed的Session退出需要花费很长的时间. 如果此时被Kill的process,重新尝试执行任务,那么马上会收到进程中断的提示,process退出,此时Oracle会立即启动PMON 来清除该session.这被作为一次异常中断处理.
    5、直接到实例所在的服务器杀掉对应的进程(快速结束会话)
    SQL>  select spid from gv$process where addr in (select paddr from gv$session where sid='1539')
    
    ------------------------------------------------总结------------------------------------------------------------------

    1、找到需要kill的会话
    select saddr,sid,serial#,paddr,username,status from gv$session;
    2、结束会话
    alter system kill session '27,33353' IMMEDIATE;
    3、需要快速再找到进程,对应实例上去结束进程 kill -9 spid
    select spid from gv$process where addr in (select paddr from gv$session where sid='1539')
    

      

      

     

      

      

    做一个决定,并不难,难的是付诸行动,并且坚持到底。
  • 相关阅读:
    使用 rabbitmq 的场景?
    什么是 Spring Cloud Bus?我们需要它吗?
    使用 Spring Cloud 有什么优势?
    我们如何监视所有 Spring Boot 微服务?
    什么是 YAML?
    如何集成 Spring Boot 和 ActiveMQ?
    什么是 JavaConfig?
    数据字典属于哪一个用户的?
    怎么对命令进行取别名?
    使用什么命令查看网络是否连通?
  • 原文地址:https://www.cnblogs.com/wukc/p/15744299.html
Copyright © 2011-2022 走看看