linux初探

首页

应用服务器

Linux技巧

中文文档

Linux初级

服务器源代码

命令详解

Linux技术应用

Linux安全应用

Linux业界新闻

UniX技术文章

Linux编程与内核

Linux数据库

Linux服务器

Linux安装指导

Linux论坛


首页>>Linux数据库>>

热门文章

·用mysqldump 来备份数据库
·Oracle 8.1.6的一次恢复!
·oracle启动 shell脚本
·使用Connector/J连接MySQL数
·oracle入门
·MySQL占领Oracle市场 技术支
·SQL Server与Oracle、DB2的性
·从黑客角度检验Oracle数据库
·开源数据库影响传统IT服务市
·在Oracle 9i isqlplus中使用

推荐文章

如何快速的杀掉Oracle的Session


一、问题的提出 很多的时候我们迅速的杀掉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所对应的spid

c、 杀掉spid所标识的那个进程
如果你的Oracle是在Unix平台上的,可以用kill。

$kill 13824
如果你的Oracle是在windown平台上的,有一些的不同,因为windown是以thead来代替process的,需要用到sid和spid两个值,所用的命令也由kill替换为Orakill,格式为:orakill sid spid

C:>orakill 941 13824

d、 再查一下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就很快的了。

相关文章:

·Oracle Job任务异常原因分析及其解决
·Linux社区喜爱的数据库:MySQL入门基础知识简介
·oracle ebs系统维护技巧汇总
·Oracle的空间数据库管理技巧
·关于Oracle 对 Linux 的策略的FAQ
·数据库学习:MySQL Join详解
·开源之旅——数据库篇
·Oracle 中如何删除重复数据
·从MySQL导入导出大量数据的程序实现方法

Copyright@2005 www.linuxGoo.com All Right Reserved