zoukankan      html  css  js  c++  java
  • Oracle数据库的维护

        在数据库使用过程中,如果事务太大或者死锁导致会话占用了大量资源。为了释放资源,就必须杀掉这些会话。本文搜集了从Oracle数据库系统和操作系统方面介绍了如何杀掉会话的操作。

        (1) Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: 

            alter system kill session 'sid,serial#'  

        获取SID,SERIAL#的SQL语句为:select saddr,sid,serial#,paddr,username,status from v$session where username is not null;

    SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;

    SADDR SID SERIAL# PADDR USERNAME STATUS
    ---------------- ---------- ---------- ---------------- -----------------------------------------------------------

    00000000787B9B50 34 13 00000000784AB268 SYSMAN INACTIVE
    00000000787B6BA8 35 86 00000000784B1688 DBSNMP ACTIVE
    00000000787B3C00 36 5 00000000784A6FA8 SYSMAN INACTIVE
    00000000787B0C58 37 639 000000007849C8C8 SYSMAN INACTIVE

    SQL> alter system kill session '35,86';

    System altered.

    SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;

    SADDR SID SERIAL# PADDR USERNAME STATUS
    ---------------- ---------- ---------- ---------------- ------------------------------------------------------------

    00000000787B3C00 36 5 00000000784A6FA8 SYSMAN INACTIVE
    00000000787B0C58 37 639 000000007849C8C8 SYSMAN INACTIVE
    00000000787A7D60 40 655 00000000784B05D8 SYS ACTIVE

    16 rows selected.

    SQL>

        (2)操作系统命令杀掉会话

        由于Oracle系统忙,PMON没有来得及释放被kill的会话资源,就需要通过操作系统来释放相应的资源。

        Unix/Linux,在Unix或Linux上系统采用的是线程的,可用kill命令直接将相应的线程杀掉,命令如下:

        kill -9 SPID

    • 获得线程ID

        获的会话ID后,只能通过Oracle命令杀掉相应的进程,如果要想用操作系统级的命令杀掉进程必须将V$SESSION结合V$PROCESS或的操作系统级的线程ID。

            select s.sid,s.serial#,s.MACHINE,s.PROGRAM,p.SPID

            from v$session s,v$process p

            where s.PADDR = p.ADDR  and s.username='USERNAME';

        由于部分线程,已经使用Oracle的alter  system 命令杀掉了,但实际上资源没有释放。但在通过上面的语句得不到对应的线程ID,但是可以用下面的方法得到。

        select p.spid from v$process  p

        where not exists (select spid from v$session where paddr=p.addr)

  • 相关阅读:
    TIOBE2017榜单公布_PHP还会是世界上最好的语言吗?
    一个优秀的程序猿应该具备哪些技能?
    7月10日云栖精选夜读:看阿里云窄带高清如何支援优酷 让《楚乔传》更清晰
    如何修复Kindle频繁自动锁屏和解锁
    CentOS 7 配置nginx的service 脚本例子
    Linux系统磁盘分区(逻辑卷LVM)的扩充
    CentOS6.7配置软raid5(模拟故障增加硬盘)
    运行软件显示:缺少packet.dll文件
    《需求工程——软件建模》06
    《需求工程——软件建模》05
  • 原文地址:https://www.cnblogs.com/zhujunhuawoaini/p/3382222.html
Copyright © 2011-2022 走看看