网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.为最佳性能而调优 Red Hat(1).
.IBM、Oracle把PHP应用到SOA中.
.导出oracle数据库对象--同义词,系.
.Oracle9i 数据库管理实务讲座(六.
.有关Oracle数据库中的封锁机制详.
.oracle 基础入门.
.Oracle数据库表范围分区策略测试.
.简单在线备份 script.
.用java从oracle取数.
.Oracle数据库技术(4).
.详细讲解RHEL AS4安装Oracle 10R.
.在Oracle 10g里启动自动归档模式.
.如何分析SQL语句.
.Oracle基于C/S的性能调整.
.解决方案:Oracl数据库中大数据的.
.Oracle9i中取得建表和索引的DDL语.
.Oracle9i专题讲座精华.
.学习Linux的七点忠告.
.作Export或Import时,如何记录LO.
.Linux环境下oracle9i的Dataguard.

如何快速的杀掉Oracle的Session

发表日期:2008-2-9



  

一、问题的提出
很多的时候我们迅速的杀掉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 -efgrep $ORACLE_SIDgrep -v ora_grep LOCAL=NOawk '{print $2}'xargs kill

 然后你再shutdown immediate就很快的了。
上一篇:Oracle 的数据抽取到SQL Server 2000(在两台不同的PC上,不使用ODBC) 人气:702
下一篇:Oracle笔记 人气:805
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐