Oracle 脚本停止进阶

一、DBMS_JOBS

1、查看正在运行的job;


SELECT * FROM USER_SCHEDULER_RUNNING_JOBS 


2、根据sid查出对应的session;


select SID,SERIAL# from V$Session where SID='SESSION_ID';


3、kill对应的session;


alter system kill session '&SID,&SERIAL';


接着把JOB删掉就可以了

有些JOBS在被kill对应session,虽然状态已经被设置Wiekilled,但是由于还无法马上释放资源,JOBS还会继续运行。这时候如果要马上结束脚本运行,可以再进一步杀死系统进程。

1、通过上面的命令来杀死进程,进程的状态会被置为"killed",但是锁定的资源没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:

select spid,osuser,s.program

from v$session s,v$process p

where s.paddr = p.addr and s.sid = 'SID'

注:这里的就是第一段语句查出来的SID,

执行上述语句,得出来的SPID

2、在OS 上通关cmd命令来杀死这个进程(线程)

1)第一种,在UNIX OS 上,用ROOT 身份执行下面的命令:

#kill -9 728 (728 1中的语句查询出来的SPID)

2)第二种,在WINDOWS,用orakill杀死线程,

语法为:orakill sid thread

注:SID,这里的SID 为你杀死该进程的数据库的实例名

THREAD,指的是你要杀掉该进程的线程号,为1中查询出来的SPID

例子如下:

C:Documents and SettingsAdministrator>orakill zghx 728

Kill of thread id 728 in instance zghx successfully signalled.

原文地址:https://www.cnblogs.com/Nouno/p/5731624.html