如何结束事务? 我用pl/sql developer执行了一条insert语句,但是没有等commit,就把pl/sql developer程序关闭了,可能死锁了,现在我想对DB做任何修改,都不行。所以请教各位了,有没有什么命令可以结束这些没有commit的任务。先谢谢大家! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用oracle kill process不行!!杀不掉的!用linux杀,怕系统挂了。 如何快速的杀掉Oracle的Session 作者: 来源: 阅读 19 人次 , 2006-5-11 14:53:00 一、问题的提出很多的时候我们迅速的杀掉Oralcle的一些session,理由大体如下:1、 一些时候,由于我们的数据量很大,相应的事务大并且多,在做shutdown immediate的时候会花费好多的时间,而我们却想用shutdown immediate的方式,而又要把数据库迅速的shutdown下来。2、 我们的应用可能使用了会话控制,即在应用的层面控制了一些用户的连接的数量。但有时可能网络发生的瞬断,从而就产生了一些死进程,他们的状态为Inactive的状态。当我们用alter system kill session ‘sid,serial#’进行清除时,这些session的状态又变成了killed,这些就由Pmon进程来慢慢进行清除了,而你恰恰又是个急脾气。3、 系统忽然慢了现来,你发现是某个session在做怪,想迅速把它迅速结束掉。 二、处理方法其实处理方法很简单,是被一些人称为“谋杀”的一种方法。因为一个session会对应着操作系统中相应的一个进程(process),我们不使用Alter system kill session这种方式了,取而代之则是kill的方式,当session的后台进程被杀掉了,便会促使懒散的Pmon进程迅速进行清理工作。1、 以一个session做以示例,a、 找到你要杀掉的那个session, 并记下paddr b、 找到这个session所对应的spidselect distinct p.spid unix_process, s.terminal, to_char(s.logon_time,'YYYY/MON/DD HH24:MI') Logon_Time, s.username,s.SIDfrom v$process p, v$session swhere p.addr=s.paddr order by 2 c、 杀掉spid所标识的那个进程♀如果你的Oracle是在Unix平台上的,可以用kill。 $kill 13824♀如果你的Oracle是在windown平台上的,有一些的不同,因为windown是以thead来代替process的,需要用到sid和spid两个值,所用的命令也由kill替换为Orakill,格式为:orakill sid spid C:\>orakill 941 13824d、 再查一下v$session,看会话在不在了。2、 如何谋杀掉所有的Oracle的用户的进程呢?a、 windows的环境,执行如下图中的SQL,并把结果存成.bat的文件,比如kill.bat, 执行一下kill.bat就可以了。 b、 Unix的环境相对来说就简单多了,执行如下的命令就可以了$ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill 然后你再shutdown immediate就很快的了。 SQL+Trace 问题 ORA-1688问题,unable to extend table 如何计算某值在表中出现几次? 这句话什么意思 到底要怎么跟蹤oracle執行的語句啊? 有谁懂二进制浮点存储格式 问一个银行系统的数据管理! 我的客户端无法运行imp与exp命令,提示出错,请各位进来看看,在线等待!!! 在INFORMIX的SELECT查询语句中如何将DATETIME转换为DATE? 嵌入式arm平台C程序远程访问oracle数据库 用dblink有哪些坏处?100分 看似简单,却又复杂的CONVERT问题 (Oracle 10g)
用linux杀,怕系统挂了。
阅读 19 人次 , 2006-5-11 14:53:00
一、问题的提出
很多的时候我们迅速的杀掉Oralcle的一些session,理由大体如下:1、 一些时候,由于我们的数据量很大,相应的事务大并且多,在做shutdown immediate的时候会花费好多的时间,而我们却想用shutdown immediate的方式,而又要把数据库迅速的shutdown下来。2、 我们的应用可能使用了会话控制,即在应用的层面控制了一些用户的连接的数量。但有时可能网络发生的瞬断,从而就产生了一些死进程,他们的状态为Inactive的状态。当我们用alter system kill session ‘sid,serial#’进行清除时,这些session的状态又变成了killed,这些就由Pmon进程来慢慢进行清除了,而你恰恰又是个急脾气。3、 系统忽然慢了现来,你发现是某个session在做怪,想迅速把它迅速结束掉。
二、处理方法
其实处理方法很简单,是被一些人称为“谋杀”的一种方法。因为一个session会对应着操作系统中相应的一个进程(process),我们不使用Alter system kill session这种方式了,取而代之则是kill的方式,当session的后台进程被杀掉了,便会促使懒散的Pmon进程迅速进行清理工作。1、 以一个session做以示例,a、 找到你要杀掉的那个session, 并记下paddr b、 找到这个session所对应的spidselect distinct
p.spid unix_process,
s.terminal,
to_char(s.logon_time,'YYYY/MON/DD HH24:MI') Logon_Time,
s.username,s.SID
from v$process p, v$session s
where p.addr=s.paddr order by 2 c、 杀掉spid所标识的那个进程♀如果你的Oracle是在Unix平台上的,可以用kill。 $kill 13824♀如果你的Oracle是在windown平台上的,有一些的不同,因为windown是以thead来代替process的,需要用到sid和spid两个值,所用的命令也由kill替换为Orakill,格式为:orakill sid spid C:\>orakill 941 13824d、 再查一下v$session,看会话在不在了。2、 如何谋杀掉所有的Oracle的用户的进程呢?a、 windows的环境,执行如下图中的SQL,并把结果存成.bat的文件,比如kill.bat, 执行一下kill.bat就可以了。 b、 Unix的环境相对来说就简单多了,执行如下的命令就可以了$ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill 然后你再shutdown immediate就很快的了。