网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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教程,数据库安全,数据库文摘
本月文章推荐
.从Oracle数据库的用户错误中恢复.
.Linux 的 “Find”.
.Oracle9i 数据库管理实务讲座(六.
.Oracle10G R2(10.2.0.1)在AIX5.2.
.Oracle在Solaris下的性能与调整简.
.PL/SQL工具连接ORALCE数据库的方.
.Oracle里面使用临时表解决表冲突.
.如何临时增加交换空间.
.Oracle10g/PSQL8/MySQL5外围特性.
.Oracle诊断案例-Job任务停止执行.
.Oracle是波音747还是MySQL丰田汽.
.Oracle数据库监听配置.
.PL/SQL构建代码分析工具之从测试.
.Oracle常用技巧和脚本技术应用.
.关于Import error ora-01658.
.OEM联机自动热备份全攻略(2).
.Oracle学习笔记(一).
.快速架设mail过滤系统.
.配置好oms不能搜索到数据库节点的.
.Oracle 9i 在 Red Hat Enterpris.

用OraKill结束失控的Oracle 进程

发表日期:2008-2-9



  一个用户进程偶然会挂起或占用过多资源而拒绝其它会话。假如 DBA 依然能够访问数据库,她通常可以发出以下查询:
  
  select s.username, s.osuser, s.sid, s.serial#, p.spid
  from v$session s,v$process p
  where s.paddr = p.addr
  and s.username is not null;
  
  这个查询将返回数据库用户名、操作系统用户名、会话 ID,序列号和系统进程 ID(SPID)。然后,DBA 用户就可以发出以下命令(前面的查询返回的使用 SID 和SERIAL# 信息):
  
  ALTER SYSTEM KILL SESSION 'sid,serial#';
  ALTER SYSTEM KILL SESSION '9,203';
  
  使用这条语句有两个问题。第一,分配给这个进程的任何锁或资源在会话完全超时之前不会被释放。第二,查询和 kill 命令需要能够访问数据库。假如一个进行失去控制,那么数据库访问可能会出现问题。
  
  在一个 UNIX 数据库中,下一步是 ps 命令输出的 UNIX 提示中定位进程(同样是查找 OSUSER 和 SPID 等 ID)然后使用 kill -9 spid 结束失控的后台进程。然而,在 Windows 中,只有一个进程 Oracle.EXE,而且用户连接是在 Windows 线程中处理的,而不在进程中处理的。假如使用 Windows 任务治理器结束 Oracle 线程,就有可能影响所有用户和后台线程,并导致数据库崩溃。
  
  出于这些原因,Oracle 在Oracle Home/bin 目录下提供了一个 orakill.exe 命令,这个命令的参数与ALTER SYSTEM KILL SESSION 相同,但是不要求数据库连接。要定位一个特定的线程,需要寻找一个能够显示属于一个进程的所有线程的程序。Windows 任务治理器只能显示线程数和进程。你需要从微软的资源工具包中寻找一个用于 windows 2000 和 NT 的工具程序,比如免费的QuickSlice,或者Qslice.exe(该工具是基于 Windows 的),或者PStat(Pstat.exe 是一个命令行工具)。简单地在 orakill 命令后输入线程 ID(以十进制表示)和 SID 即可:
  
  orakill
  orakill ORCL 2760
  
  "Kill of thread id 2760 in instance ORCL sUCcessfully signalled[sic]."
  
  应该只有在不能访问数据库来执行ALTER SYSTEM KILL SESSION 的情况才使用orakill。假如意外结束了一个必要的后台进程,比如 PMON,那么很可能会导致数据库崩溃。新手永远不要这样做。
上一篇:Oracle10g 数据的导入导出 给数据泵加压 人气:870
下一篇:Oracle数据库空间的使用和管理若干方法 人气:522
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐