Heim >Datenbank >MySQL-Tutorial >Oracle杀掉系统进程的描述

Oracle杀掉系统进程的描述

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 15:45:02934Durchsuche

Oracle杀掉系统进程的描述 2012-01-18 00:00 中国IT实验室 佚名 在导入附件表AFFIX的时候,数据量很小就1w多条数据,但是AFFIX中有一个blob的大字段,这就使得查询起来很慢,因为工作的环境网络特别的不稳定,开始导入了大概快一半了,突然网络断了,当时真

Oracle杀掉系统进程的描述

2012-01-18 00:00中国IT实验室佚名


  在导入附件表AFFIX的时候,数据量很小就1w多条数据,但是AFFIX中有一个blob的大字段,这就使得查询起来很慢,因为工作的环境网络特别的不稳定,开始导入了大概快一半了,突然网络断了,当时真的很生气,但是也没有什么办法,网络好后接着导入此时总是出现导入错误、甚至导入了很长时间,数据条数根本没发生变化,就是这样的反反复复,查看了一下Oracle锁表的情况:

  SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL#

  FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S

  WHERE L.OBJECT_ID  =   O.OBJECT_ID

  AND L.SESSION_ID = S.SID;

  结果就看到如下结果:

Oracle杀掉系统进程的描述

  果然有表锁死了,心想kill掉锁死的表很简单,命令如下:

  alter system kill session '519,10230';

  执行的时间很长,后来居然出现了下图的错误:

Oracle杀掉系统进程的描述

  一看就是报错了,查了一些资料是因为oracle锁死的表被杀死后,状态被标识为“killed”但是锁定资源很长时间才能得到释放,有的时候实在没有别的好的办法我们就需要重启数据库了,我的理解是如果等半天或者更长时间的话是可以被释放的。于是就开始查询资料、例子,解决办法如下:

  SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='519' --被锁定的SID

  此时可以得到 PADDR ,在通过SQL得到:

  SELECT SPID FROM V$PROCESS WHERE ADDR='695E3F2C'; --PADDR的值

  这个时候就可以直接在系统中把oracle进程杀掉了,可以使用 kill -9 SPID 或者 ORAKILL SID SPID

  此时整个操作完成,如果遇到此类问题不能解决大家在一起讨论。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn