知识大全 Oracle数据库中Kill session的研究
Posted 地址
篇首语:如果不能改变结果,那就完善过程。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库中Kill session的研究相关的知识,希望对你有一定的参考价值。
Oracle数据库中Kill session的研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
我们知道 在Oracle数据库中 可以通过kill session的方式来终止一个进程 其基本语法结构为: alter system kill session sid serial# ; 被kill掉的session 状态会被标记为killed Oracle会在该用户下一次touch时清除该进程 我们发现当一个session被kill掉以后 该session的paddr被修改 如果有多个session被kill 那么多个session的paddr都被更改为相同的进程地址: SQL> select saddr sid serial# paddr username status from v$session where username is not null; SADDR SID SERIAL# PADDR USERNAME STATUS E E C B E EYGLE INACTIVE E B D SYS ACTIVE SQL> alter system kill session ; System altered SQL> select saddr sid serial# paddr username status from v$session where username is not null; SADDR SID SERIAL# PADDR USERNAME STATUS E E C D BD EYGLE KILLED E B D SYS ACTIVE SQL> select saddr sid serial# paddr username status from v$session where username is not null; SADDR SID SERIAL# PADDR USERNAME STATUS E E C D BD EYGLE KILLED E AA B EQSP INACTIVE E B D SYS ACTIVE SQL> alter system kill session ; System altered SQL> select saddr sid serial# paddr username status from v$session where username is not null; SADDR SID SERIAL# PADDR USERNAME STATUS E E C D BD EYGLE KILLED E AA D BD EQSP KILLED E B D SYS ACTIVE 在这种情况下 很多时候 资源是无法释放的 我们需要查询spid 在操作系统级来kill这些进程 但是由于此时v$session paddr已经改变 我们无法通过v$session和v$process关联来获得spid 那还可以怎么办呢? 我们来看一下下面的查询: SQL> SELECT s username s status x ADDR x KSLLAPSC x KSLLAPSN x KSLLASPO x KSLLID R x KSLLRTYP decode(bitand (x ksuprflg ) null ) FROM x$ksupr x v$session s WHERE s paddr(+)=x addr and bitand(ksspaflg )!= ; USERNAME STATUS ADDR KSLLAPSC KSLLAPSN KSLLASPO KSLLID R KS D B A ACTIVE B ACTIVE B C ACTIVE B FB ACTIVE B ACTIVE B ACTIVE B AC ACTIVE B E ACTIVE B ACTIVE B D ACTIVE B USERNAME STATUS ADDR KSLLAPSC KSLLAPSN KSLLASPO KSLLID R KS D SYS ACTIVE B D B E EV B EV SYS INACTIVE B SYS INACTIVE B BF EV rows selected 简化一点 其实就是如下概念: SQL> select p addr from v$process p where pid < > minus select s paddr from v$session s; ADDR B E B 现在我们获得了进程地址 就可以在v$process中找到spid 然后可以使用Kill或者orakill在系统级来杀掉这些进程 当在Oracle中kill session以后 Oracle只是简单的把相关session的paddr 指向同一个虚拟地址 此时v$process和v$session失去关联 进程就此中断 然后Oracle就等待PMON去清除这些Session 所以通常等待一个被标记为Killed的Session退出需要花费很长的时间 如果此时被Kill的process 重新尝试执行任务 那么马上会收到进程中断的提示 process退出 此时Oracle会立即启动PMON来清除该session 这被作为一次异常中断处理 cha138/Article/program/Oracle/201311/11195相关参考
KillSession[Metalink] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Kil
Windows环境中Kill掉Oracle线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你
用kill命令终止Oracle的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多情况下我
知识大全 oracle中process和session的关系
在SharedServer中的Process和Oracle中的Session不是一一对应的SharedServer中的Process一个对应着Oracle中的一个或者一个以上的Session 我
1查哪个过程被锁 查V$DB_OBJECT_CACHE视图: SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER=过程的所属用户ANDLOCKS!=; 查是哪一个S
系统环境操作系统Windows 数据库 OracleiR()forNT企业版 安装路径C:\\ORACLE 测试方法打开多个SQL*Plus窗口一些做一些需要回滚的操作如insertde
ORACLE数据库的并行执行 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! session_ma
知识大全 Oracle10gR2 新视图:V$SESSION变化跟踪
Oracle10gR2新视图:V$SESSION变化跟踪 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 php中如何同时使用session和cookie来保存用户登录信息
本篇文章是对在php中同时使用session和cookie来保存用户登录信息的实现代码进行了详细的分析介绍需要的朋友参考下 同时使用session和cookie来保存用户登录信息数据库连
ORACLE数据库除了可以保存永久表外还可以建立临时表temporarytables这些临时表用来保存一个会话SESSION的数据或者保存在一个事务中需要的数据当会话退出或者用户提交mit和回滚r