oracle怎么杀老进程 sql 杀死进程

[Oracle]使用sid和sessionid杀死进程

select session_id from v$locked_object;

创新互联专注于青云谱网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供青云谱营销型网站建设,青云谱网站制作、青云谱网页设计、青云谱网站官网定制、成都小程序开发服务,打造青云谱网络公司原创品牌,更为您提供青云谱网站排名全网营销落地服务。

SELECT sid, serial#, username, osuser FROM v$session where sid = 71;

ALTER SYSTEM KILL SESSION '71,1089';

oracle,存储过程报错,实现杀掉死锁进程,求大牛

估计你SQL 拼接错了吧,建议打印一下;

我的测试过程;

--新建一个会话窗口,挂起一个会话;

SQL create table test(col varchar2(20));

Table created

SQL insert into test values('test');

1 row inserted 

--再新建一个会话窗口,杀掉锁定test表的会话

SQL declare

2  begin

3    for vref in (select t.sid, t.serial#

4                   from v$session t

5                  where sid in

6                        (select sid

7                           from v$lock

8                          where id1 in

9                                (select object_id

10                                   from user_objects t

11                                  where object_name = upper('test')))) loop

12      execute immediate 'alter system kill session  ''' || vref.sid || ',' ||

13                        vref.serial# || '''';

14    end loop;

15  end;

16  /

PL/SQL procedure successfully completed

SQL 

SQL select t.sid, t.serial#

2                   from v$session t

3                  where sid in

4                        (select sid

5                           from v$lock

6                          where id1 in

7                                (select object_id

8                                   from user_objects t

9                                  where object_name = upper('test')))

10  /

SID    SERIAL#

---------- ----------

SQL

如何杀死oracle死锁进程

1.查哪个过程被锁

查V$DB_OBJECT_CACHE视图:

SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER='过程的所属用户'ANDLOCKS!='0';

2. 查是哪一个SID,通过SID可知道是哪个SESSION.

查V$Access视图:

SELECT*FROMV$ACCESSWHEREOWNER='过程的所属用户'ANDNAME='刚才查到的过程名';

3. 查出SID和SERIAL#

查V$SESSION视图:

SELECTSID,SERIAL#,PADDRFROMV$SESSIONWHERESID='刚才查到的SID'

查V$PROCESS视图:

SELECTSPIDFROMV$PROCESSWHEREADDR='刚才查到的PADDR';

4. 杀进程(1).先杀ORACLE进程:

ALTERSYSTEMKILLSESSION'查出的SID,查出的SERIAL#';

(2).再杀操作系统进程:

KILL-9刚才查出的SPID或ORAKILL刚才查出的SID刚才查出的SPID方法二:

经常在oracle的使用过程中碰到这个问题,所以也总结了一点解决方法:)

1)查找死锁的进程:

sqlplus"/assysdba"

SELECTs.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESSFROMV$LOCKED_OBJECTl,V$SESSIONSWHEREl.SESSION_ID=S.SID;

2)kill掉这个死锁的进程:

altersystemkillsession‘sid,serial#’;(其中sid=l.session_id)

3)假如还不能解决,

selectpro.spidfromv$sessionses,v$processprowhereses.sid=XXandses.paddr=pro.addr;

其中sid用死锁的sid替换。

Oracle进程删除不掉怎么办?

方法/步骤\x0d\x0a1.查询哪些对象被锁:\x0d\x0aselect object_name,machine,s.sid,s.serial# \x0d\x0afrom v$locked_object l,dba_objects o ,v$session s\x0d\x0awhere l.object_id = o.object_id and l.session_id=s.sid;\x0d\x0a\x0d\x0a2.杀死进程:\x0d\x0aalter system kill session '137,233'; (其中137,223分别是上面查询出的sid,serial#)\x0d\x0a\x0d\x0aPS.以上两步,可通过Oracle的管理控制台来执行。\x0d\x0a\x0d\x0a如果利用上面的方法杀死进程后,进程状态虽被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS一级再杀死相应的进程(线程)\x0d\x0a\x0d\x0a1.首先获得进程(线程)号:\x0d\x0aselect spid, osuser, s.program \x0d\x0afrom v$session s,v$process p\x0d\x0awhere s.paddr=p.addr and s.sid=137 (137是上面的sid)\x0d\x0a\x0d\x0a2.在OS上杀死这个进程(线程):\x0d\x0a\x0d\x0a1)在unix上,用root身份执行命令: \x0d\x0a#kill -9 12345(即上面查询出的spid)\x0d\x0a\x0d\x0a2)在windows(unix也适用)用orakill杀死线程,例:c:orakill orcl 12345\x0d\x0aorakill是oracle提供的一个可执行命令,语法为:orakill sid thread\x0d\x0a其中:\x0d\x0asid:表示要杀死的进程属于的实例名\x0d\x0athread:是要杀掉的线程号,即上面查询出的spid。

如何有效杀掉在linux环境下的oracle进程

1.第一步:使用Linux的kill命令杀死所有与oracle有关的进程。 1)查询到与ORACLE_SID相关的oracle进程 $ ps -ef |grep $ORACLE_SID oracle 7776 1 0 22:51 ? 00:00:00 ora_pmon_ora10g oracle 7778 1 0 22:51 ? 00:00:00 ora_psp0_ora10g oracle...

Oracle进程杀不掉怎么办

方法/步骤

1.查询哪些对象被锁:

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;

2.杀死进程:

alter system kill session '137,233'; (其中137,223分别是上面查询出的sid,serial#)

PS.以上两步,可通过Oracle的管理控制台来执行。

如果利用上面的方法杀死进程后,进程状态虽被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS一级再杀死相应的进程(线程)

1.首先获得进程(线程)号:

select spid, osuser, s.program

from v$session s,v$process p

where s.paddr=p.addr and s.sid=137 (137是上面的sid)

2.在OS上杀死这个进程(线程):

1)在unix上,用root身份执行命令:

#kill -9 12345(即上面查询出的spid)

2)在windows(unix也适用)用orakill杀死线程,例:c:orakill orcl 12345

orakill是oracle提供的一个可执行命令,语法为:orakill sid thread

其中:

sid:表示要杀死的进程属于的实例名

thread:是要杀掉的线程号,即上面查询出的spid。


名称栏目:oracle怎么杀老进程 sql 杀死进程
网址分享:http://hbruida.cn/article/hhoies.html