Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2007440
  • 博文数量: 148
  • 博客积分: 7697
  • 博客等级: 少将
  • 技术积分: 3071
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-10 23:04
个人简介

MiBDP,数据开发、项目团队、数据应用和产品在路上,金融保险、互联网网游、电商、新零售行业、大数据和AI在路上。对数仓、模型、ETL、数据产品应用了解。DTCC 2013演讲嘉宾,曾做过两款大获好评的数据产品平台。知识星球ID:35863277

文章分类
文章存档

2020年(1)

2019年(2)

2017年(2)

2016年(5)

2015年(1)

2014年(1)

2013年(6)

2012年(5)

2011年(24)

2010年(28)

2009年(1)

2008年(6)

2007年(30)

2006年(36)

分类:

2011-01-14 18:32:03

#!/bin/sh


#this shell script is used to kill the head session

#author colin

#date Sun Sep 26 CST 2010

function print_usage()
{
  echo "Usage: kill_session.sh colin/colin "
  echo "\t 查找死锁会话开始"
}

function get_pid() #the head locked process id
{
        pid=`${SQLPLUS} -S ${ORACLE_USERNAME} <<\EOF
        set head off
        select v2.spid
            from v$session v1, v$process v2
                where v1.paddr = v2.addr
                 and v1.sid in (select v3.SESSION_ID
         from v$locked_object v3
                        where v3.oracle_username = user);
EOF
`
}

function kill_session() #kill the head locked session
{
        ${SQLPLUS} ${ORACLE_USERNAME} << \EOF
            DECLARE
              v_sid int;
         v_serial int;
            BEGIN
              select v1.sid, v1.serial#
                into v_sid, v_serial
                  from v$session v1, v$process v2
                    where v1.paddr = v2.addr
                      and v1.sid in (select v3.SESSION_ID
                              from v$locked_object v3
                                where v3.oracle_username = user);

            if v_sid is not null and v_serial is not null then
               execute immediate 'alter system kill session ' || '''' || v_sid || ',' ||
                      v_serial || '''';
            end if;
            END;
/
EOF
}

work_job()
{    
kill_session ${SQLPLUS} ${ORACLE_USERNAME}
get_pid ${SQLPLUS} ${ORACLE_USERNAME}
kill -9 $pid
}


##set the env
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/10.2.0
export ORACLE_BASE ORACLE_HOME
SQLPLUS=${ORACLE_HOME}/bin/sqlplus
ORACLE_USERNAME=$1

if [ $# -lt 1 ]; then
  print_usage
  exit -1
else
  echo "Begin Kill the Headsing Session..."
fi    

work_job


阅读(4402) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~