`
wuhuizhong
  • 浏览: 682795 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

kill

 
阅读更多

 

--根据某一对象查询进程
col owner for a10
col object for a20
col type for a15
select /*+RULE*/ *
from v$access a
where object='P_CHK_QUALITY_GMCC';
--查询当前数据库异常连接数
set line 240
col MACHINE for a25
col PROGRAM for a30
col USERNAME for a16
col OSUSER for a12
col event for a30
select username,osuser,machine,program,event,count(*)  
from v$session 
where username not in ('SYS','TRANSDATA')
group by username,osuser,machine,program,event
order by 4 ;
--根据用户批量生成kill -9
set line 200 pagesize 9999
select 'kill -9 '||spid from
v$process p, v$session s where p.addr=s.paddr and s.username='JMCBSPARAM1';
--按用户批量生成alter system kill session
set line 200 pagesize 9999
select 'alter system kill session '''|| s.sid||','||s.serial#||''';' from
v$process p, v$session s where p.addr=s.paddr and s.username='CCMNT';
--按操作系统用户批量生成ps -ef | grep spid| grep LOCAL=NO|awk '{print $2}'|xargs kill -9 
set line 200 pagesize 9999
select 'ps -ef | grep '||p.spid||'| grep LOCAL=NO|awk ''{print $2}''|xargs kill -9' 
from v$process p, v$session s where p.addr=s.paddr and s.osuser='zwbill';
--按机器名批量生成kill和alter system kill session
col process for 99999
select 'kill -9 '||spid, 'alter system kill session '''|| s.sid||','||s.serial#||''';' kill, s.machine,s.process from
v$process p, v$session s where p.addr=s.paddr and s.machine='CRMCSWAS1';
--按等待事件批量生成alter system kill session
set line 200 pagesize 9999
select  'alter system kill session '''|| s.sid||','||s.serial#||''';' from (
select sid,serial#,username,program,machine,event,sql_id from v$session where event='library cache lock') s;
**************************************************************************************************************
--源头查找
select BLOCKING_SESSION,count(*) from v$session group by BLOCKING_SESSION  having count(*)>10;
select p.spid from v$session s,v$process p where s.paddr=p.addr and s.sid in(3209);
col program for a20 
col machine for a20
col event for a30
select sid,serial#,username,program,machine,event from v$session where event='library cache lock';
set line 800 pagesize 200 long 99999; 
col sname for a10;
col pname for a10;
col machine for a15;
col sprogram for a20;
col pprogram for a20;
col event for a40;
select p.spid,p.username pname,p.program,s.username sname,s.status,s.machine,q.sql_text 
from v$process p,v$session s,v$sql q
where p.addr=s.paddr and s.sql_id=q.sql_id 
and s.sid=&sid
and p.spid='&spid';
#########################################################################################################################################
初步定位故障原因(15分钟内)
a) 检查是否有异常等待
Select inst_id, event,count(*) from gv$session 
where status='ACTIVE' and wait_class#<> 6 
group by inst_id, event 
having count(*)>10;

--全局视图无法查询出结果时用下列语句:

Select event,count(*) from v$session 
where status='ACTIVE' 
and wait_class#<> 6 
group by event
having count(*)>10;

b)	如有大量异常等待出现(异常进程30个以上),执行hang分析,获取数据库堵塞情况:
sqlplus '/as sysdba'
oradebug setmypid
oradebug unlimit;
oradebug hanganalyze 3
c)	通过trace找到 hang的源头进程,包括SID和操作系统PID,
源头进程一般有两种类型:
?	等待事件为“NO WAIT”。
?	同时分析堵塞其他大量进程的源头进程。
?	分析HANG源头,然后终止该进程
如下:
==============
HANG ANALYSIS:
==============
Found 89 objects waiting for <cnode/sid/sess_srno/proc_ptr/ospid/wait_event>
    <1/4259/39290/0xc9982a0/3102104/enq: DX - contention>
Found 41 objects waiting for <cnode/sid/sess_srno/proc_ptr/ospid/wait_event>
    <1/4108/28291/0x9acbba8/1115164/gc current request>
Found 99 objects waiting for <cnode/sid/sess_srno/proc_ptr/ospid/wait_event>
    <1/4420/44106/0xeaf6b28/684548/gc current request>
Found 30 objects waiting for <cnode/sid/sess_srno/proc_ptr/ospid/wait_event>
    <1/3469/53674/0xca8ad00/4354862/gc current request>
Found 58 objects waiting for <cnode/sid/sess_srno/proc_ptr/ospid/wait_event>
    <1/1944/53978/0xa9e6340/4096640/gc current request>
d)	分析故障发生期间的主要堵塞进程:
SQL>select BLOCKING_SESSION,count(*) from v$session group by BLOCKING_SESSION  having count(*)>10;    
            3469         30
            4420         99
            4108         41

进一步分析以上3个进程(3469,4420,4108)
select sid,username,sql_id,event from v$session
where sid in (3469,4420,4108);

       SID USERNAME   SQL_ID        EVENT
---------- ---------- ------------- -----------------------------------
      3469 JMYY       gxn9d9fwz893r enq: TX - index contention
      4108 JMYY       f7uncmzyf400n gc current request
      4420 JMYY       gxn9d9fwz893r gc current request
根据SQL_ID可找出相应SQL语句,另外结合HANG ANALYSIS内容和以上结果,可分析出3469,4108和4420为源头(进一步分析可确认出具体那个为源头),以排除故障优先考虑先终止以上3个进程(终止前要确认为非本地进程),终止2分钟后查询v$session分析数据库性能指标是否恢复正常!
如果以上执行后系统仍未恢复正常...在征求局方负责人同意后将所有LOCAL=NO的进程中止,然后再次确认数据库是否恢复正常!
ps -ef|grep LOCAL=NO|awk '{print $2}'|xargs kill -9

e)	检查堵塞者session等待事件
set line 200
select osuser,event,count(*) from v$session
where wait_class#<>6 and status='ACTIVE'
group by osuser,event;

如果堵塞者进程出现latch: cache buffers chains等待,表明堵塞者进程出现热块争用现象。
通过以下SQL语句检查所有出现latch: cache buffers chains的进程,并分析执行计划的合理性。
set line 200 pagesize 9999
col PROGRAM for a20
col machine for a20
col event for a20
select sid,serial#,osuser,program,machine,event,sql_id from v$session where event='library cache lock';
#########################################################################################################################################################################
--查询当前实例信息
col host_name for a12;
set line 400 pagesize 200;
col INST_ID for 7
col MACHINE for a25
col PROGRAM for a50
col USERNAME for a16
col INST_ID for 9999999
select inst_id,username,machine,program,STATUS,count(*)  
from gv$session 
--where status='ACTIVE'
group by inst_id,username,machine,program,STATUS
having count(*) > 100
order by 4 ;
--查询当前实例信息
select instance_number,instance_name,host_name,version,status from v$instance;
########################################################################################################################################################################
select BLOCKING_SESSION,event,count(*) 
FROM V$SESSION 
WHERE EVENT='library cache lock'
group by BLOCKING_SESSION,event;
双节点:
select INST_ID,SID,SERIAL#,BLOCKING_INSTANCE, BLOCKING_SESSION - 1
FROM GV$SESSION 
WHERE EVENT='library cache lock';
BLOCKING_INSTANCE 阻塞实例
BLOCKING_SESSION – 1 阻塞SID

注意:v$session中的blocking_session 应该是阻塞的会话id,不应该减一,这个是oracle的bug 5481650。注意在升级oracle补丁集10.2.0.4后这个脚本需要修改。
可以查到等待TX锁的进程,被哪个实例的哪个SID阻塞,然后使用下面的SQL语句查询阻塞进程的信息,针对局方同意后中止相关进程,并记录相关信息:
col username format a10
col program format a30
col sql_text format a50
col machine format a30
select a.sid,a.serial#,c.spid,a.username,a.program,a.machine,b.sql_text 
from v$session a,v$sql b,v$process c
where a.paddr=c.addr
and a.sid='&SID';

--中止进程
select 'kill -9 '||spid, 'alter system kill session '''|| s.sid||','||s.serial#||''';', s.machine,s.process from
v$process p, v$session s where p.addr=s.paddr and s.machine='&HOSTNAME' AND S.process=&OSPID;
################################################################################################################################################################
set line 200 pagesize 9999
select * from x$kgllk where kgllkses in (select saddr from v$session);
 select * from x$kgllk lock_a  
 where kgllkreq = 0 
   and exists (select lock_b.kgllkhdl from x$kgllk lock_b 
               where kgllkses in (select saddr from v$session)
               and lock_a.kgllkhdl = lock_b.kgllkhdl 
               and kgllkreq > 0); 
----------------blocking session:
select sid,username,terminal,program from v$session 
 where saddr in  
  (select kgllkses from x$kgllk lock_a  
   where kgllkreq = 0 
     and exists (select lock_b.kgllkhdl from x$kgllk lock_b 
                 where kgllkses in (select saddr from v$session)
                 and lock_a.kgllkhdl = lock_b.kgllkhdl 
                 and kgllkreq > 0) 
  ); 
-------------------blocked sessions:
select sid,username,terminal,program from v$session 
 where saddr in  
  (select kgllkses from x$kgllk lock_a  
   where kgllkreq > 0 
     and exists (select lock_b.kgllkhdl from x$kgllk lock_b 
                 where kgllkses in (select saddr from v$session)
                 and lock_a.kgllkhdl = lock_b.kgllkhdl 
                 and kgllkreq = 0) 
  ); 
  ##############################################################################################################
  解决问题的方法步骤      
  1、查看具体产生library cache lock 的对象,比如哪些包和存储过程    
SELECT KGLNAOWN,KGLNAOBJ   
    FROM x$kglob            
   WHERE kglhdadr in( select P1RAW from v$session_wait where event like 'library cache%');                                                                                           
2、  查看具体是那些用户做了这个操作导致 library cache lock  
  select sid, program ,machine from v$session where paddr in ( 
       SELECT s.paddr    
        FROM x$kglpn p, v$session s 
       WHERE p.kglpnuse=s.saddr(+) AND p.kglpnmod <> 0  
   and kglpnhdl in ( select p1raw  from v$session_wait where event='library cache lock'));                                       
3、、以下语句用来杀掉会话(前面查看,然后到这步是决定是否要杀掉进程解决这个问题)
select 'kill -9 '||spid from v$process where addr in ( 
       SELECT s.paddr       
        FROM x$kglpn p, v$session s  
       WHERE p.kglpnuse=s.saddr
       AND p.kglpnmod <> 0   
   and kglpnhdl in ( select p1raw  from v$session_wait where event='library cache lock')); 

 

 

 

分享到:
评论

相关推荐

    kill_folder 专杀

    "kill_folder 专杀"工具是一款专门针对名为"kill_folder"的文件病毒设计的安全软件。在深入了解这个工具之前,我们首先要理解什么是文件病毒以及它如何影响计算机系统。 文件病毒是一种恶意软件,它会附着在可执行...

    KILL杀毒软件 8.1

    ### KILL杀毒软件 8.1 知识点解析 #### 一、产品概述 KILL杀毒软件是由冠群金辰公司研发的一款高性能桌面防病毒软件,它旨在为用户提供全面的防护措施来抵御各类恶意软件(如病毒、蠕虫、木马等)的侵袭,保障用户...

    Kill FI.pdf

    "Kill FI.pdf" 根据提供的文件信息,我们可以从多方面生成相关的知识点。 首先,根据文件标题"Kill FI.pdf",我们可以推断出该文件可能与金融行业或投资相关。其中,"FI"可能是Financial Institution(金融机构)...

    文件夹病毒专杀kill_folder2.12最新版

    《文件夹病毒专杀工具Kill_Folder 2.12详解》 在信息化时代,电脑病毒无处不在,其中文件夹病毒尤其让人头疼。这类病毒会感染用户的重要文件夹,导致数据丢失或系统瘫痪。为此,专业防病毒软件Kill_Folder应运而生...

    Shell kill tomcat process

    标题中的“Shell kill tomcat process”指的是在Linux或Unix操作系统中,使用Shell命令来结束Tomcat服务进程。Tomcat是一款广泛使用的开源Java Servlet容器,它用于部署和运行Java Web应用程序。在某些情况下,可能...

    Kill Process (进程结束工具)

    《Kill Process:高效而强大的进程结束工具》 在日常计算机使用中,我们有时会遇到某个程序无响应或者占用过多资源,这时,系统自带的任务管理器往往成为我们的首选工具来结束这些不良行为的进程。然而,任务管理器...

    softbeso.rar_matlab_soft kill_softbeso_双向渐进_拓扑优化

    这个名为"softbeso.rar_matlab_soft kill_softbeso_双向渐进_拓扑优化"的压缩包文件,主要包含的是使用MATLAB实现的"soft-kill"双向渐进结构拓扑优化算法的源代码。 首先,我们要理解什么是拓扑优化。拓扑优化是一...

    KILL5.2.1安装教程.pdf

    KILL5.2.1安装教程.pdf

    kill_folder1.9

    "Kill_Folder1.9"是一款专为U盘设计的杀毒工具,旨在帮助用户清除U盘中的病毒和恶意软件,保障数据安全。这个压缩包文件"kill_folder1.9.rar"包含了主要的执行程序"kill_folder.exe",它是整个软件的核心部分。 一...

    C# 关闭进程 KillProcess

    "C# 关闭进程 KillProcess"这个话题涉及到的就是如何使用C#编程语言来实现这一功能,特别是通过进程的PID(Process ID,进程标识符)来关闭指定的进程。下面我们将深入探讨这一主题。 首先,PID是Windows操作系统为...

    Kill run进程工具

    在IT领域,"Kill run进程工具"通常指的是用于管理和终止操作系统中运行的进程的软件工具。这类工具允许用户查看系统中的所有活动进程,并选择性地结束特定进程,以解决资源占用过高、程序无响应或者需要重启服务等...

    pb 9 kill结束进程

    在这个场景中,"pb 9 kill 结束进程"指的是使用PowerBuilder 9.0来编写代码实现强制结束操作系统中的特定进程的功能。下面我们将详细探讨如何在PowerBuilder中实现这个功能。 首先,我们需要理解进程的基本概念。在...

    linuxps命令、kill命令及kill函数概述[借鉴].pdf

    Linux ps 命令、kill 命令及 kill 函数概述 Linux 操作系统中,ps 命令和 kill 命令是两个非常重要的命令,分别用于显示进程信息和中止进程。这两个命令在 Linux 系统中扮演着非常重要的角色。 ps 命令是用于显示...

    Kill_Autorun.rar

    《Kill_Autorun:小巧而强大的自动运行病毒克星》 在数字时代,电脑安全问题日益突出,尤其是autorun病毒的肆虐,让许多用户深受其害。为此,诞生了一款名为"Kill_Autorun"的专业工具,它以其小巧的体积和强大的...

    Android如何保证自己的服务被系统kill后又被系统重启?

    要确保服务在被系统kill后能够自动重启,开发者需要采取一些策略。以下是一些关键知识点: 1. **START_STICKY**: 当服务被标记为`START_STICKY`时,如果系统因资源限制而停止服务,Android系统会在内存条件允许时...

    wince6.0 kill进程

    "wince6.0 kill进程"这个主题涉及到如何在WinCE环境中终止指定的进程。下面我们将深入探讨这个话题。 首先,WinCE是一个实时嵌入式操作系统,它不像桌面版Windows那样拥有图形化的任务管理器来方便地管理进程。在...

    VB的kill删除功能程序(VB6.0代码编写)

    在VB6.0(Visual Basic 6.0)编程环境中,`Kill`函数是一个非常基础且重要的功能,它用于删除指定的文件。本程序主要关注如何利用VB6.0的`Kill`语句来实现文件的删除操作。下面将详细阐述`Kill`函数的使用方法、相关...

    kill用法,同时杀一类进程

    在深入探讨如何使用`kill`命令来同时杀死一类进程之前,我们先来了解下这个命令的基本功能和工作原理。`kill`是Unix和类Unix操作系统(包括Linux)中一个非常重要的系统工具,用于向进程发送信号。进程是操作系统...

    Kill_AutoRun_1.2.rar

    《Kill_AutoRun_1.2 - 防止自动运行病毒工具详解》 在数字化时代,电脑安全问题日益凸显,尤其是自动运行(AutoRun)病毒成为许多用户头疼的问题。"Kill_AutoRun_1.2.rar" 文件正是针对这一问题提供的一种解决方案,...

Global site tag (gtag.js) - Google Analytics