1:找过程到相关存储过程的sid
select sid from v$access where object = '存储过程名'
2.根据sid找到serial#
select SERIAL# from V$session where sid=70
---70是第一个SQL语句查出来的SID
根据sid和serial#杀掉存储过程的锁
alter system kill session '70,1';
出现 :“标志会话结束命令” 这种方法也是无法杀掉存储过程的锁,请问还有别的比较好的方法解决过程被锁的吗???先谢谢了!
11 个解决方案
#1
新手,看看。。。
#2
查询一下是否有DDL锁,你那个查询的是DML锁
select * from DBA_DDL_LOCKS --------这个是查询DDL锁,看看存储过程是否被锁住了。
select * from DBA_DDL_LOCKS --------这个是查询DDL锁,看看存储过程是否被锁住了。
#3
加上 immediate呢?
#4
2.根据sid找到serial#
select SERIAL# from V$session where sid=70
---70是第一个SQL语句查出来的SID
根据sid和serial#杀掉存储过程的锁
alter system kill session '70,1';
--杀掉所有的SID看看。。。
select SERIAL# from V$session where sid=70
---70是第一个SQL语句查出来的SID
根据sid和serial#杀掉存储过程的锁
alter system kill session '70,1';
--杀掉所有的SID看看。。。
#5
这个是数据库级别的
还有一个就是操作系统级别的杀死进程
根据SID 找出SPID,在服务器中进行KILL,
或者就是由于我说的DDL锁造成的。
#6
1、如果使用alter system kill session无法杀掉的进程。
可以在操作系统级强行杀掉进程或线程。
2、使用如下语句取得spid即为进程(unix,linux)或线程(windows)ID。
SELECT p.SPID, s.OSUSER, p.PROGRAM
FROM v$session s, v$process p
WHERE s.PADDR = p.ADDR
AND s.SID =
(SELECT t.SID FROM v$access t WHERE t.OBJECT = upper('对象名'));
3、强终杀掉线程或进程
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
WINDOWS下使用(如:SPID为6666,实例名<ORACLE_SID>为ORCL),则
C:\>orakill ORCL 6666
可以在操作系统级强行杀掉进程或线程。
2、使用如下语句取得spid即为进程(unix,linux)或线程(windows)ID。
SELECT p.SPID, s.OSUSER, p.PROGRAM
FROM v$session s, v$process p
WHERE s.PADDR = p.ADDR
AND s.SID =
(SELECT t.SID FROM v$access t WHERE t.OBJECT = upper('对象名'));
3、强终杀掉线程或进程
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
WINDOWS下使用(如:SPID为6666,实例名<ORACLE_SID>为ORCL),则
C:\>orakill ORCL 6666
#7
+1
#8
3、强终杀掉线程或进程
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
这个很强大的
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
这个很强大的
#9
学习。。。
#10
学习了~~~
#11
不懂啊
#1
新手,看看。。。
#2
查询一下是否有DDL锁,你那个查询的是DML锁
select * from DBA_DDL_LOCKS --------这个是查询DDL锁,看看存储过程是否被锁住了。
select * from DBA_DDL_LOCKS --------这个是查询DDL锁,看看存储过程是否被锁住了。
#3
加上 immediate呢?
#4
2.根据sid找到serial#
select SERIAL# from V$session where sid=70
---70是第一个SQL语句查出来的SID
根据sid和serial#杀掉存储过程的锁
alter system kill session '70,1';
--杀掉所有的SID看看。。。
select SERIAL# from V$session where sid=70
---70是第一个SQL语句查出来的SID
根据sid和serial#杀掉存储过程的锁
alter system kill session '70,1';
--杀掉所有的SID看看。。。
#5
这个是数据库级别的
还有一个就是操作系统级别的杀死进程
根据SID 找出SPID,在服务器中进行KILL,
或者就是由于我说的DDL锁造成的。
#6
1、如果使用alter system kill session无法杀掉的进程。
可以在操作系统级强行杀掉进程或线程。
2、使用如下语句取得spid即为进程(unix,linux)或线程(windows)ID。
SELECT p.SPID, s.OSUSER, p.PROGRAM
FROM v$session s, v$process p
WHERE s.PADDR = p.ADDR
AND s.SID =
(SELECT t.SID FROM v$access t WHERE t.OBJECT = upper('对象名'));
3、强终杀掉线程或进程
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
WINDOWS下使用(如:SPID为6666,实例名<ORACLE_SID>为ORCL),则
C:\>orakill ORCL 6666
可以在操作系统级强行杀掉进程或线程。
2、使用如下语句取得spid即为进程(unix,linux)或线程(windows)ID。
SELECT p.SPID, s.OSUSER, p.PROGRAM
FROM v$session s, v$process p
WHERE s.PADDR = p.ADDR
AND s.SID =
(SELECT t.SID FROM v$access t WHERE t.OBJECT = upper('对象名'));
3、强终杀掉线程或进程
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
WINDOWS下使用(如:SPID为6666,实例名<ORACLE_SID>为ORCL),则
C:\>orakill ORCL 6666
#7
+1
#8
3、强终杀掉线程或进程
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
这个很强大的
UNIX、LINUX下使用(如:SPID为6666)
$ kill -9 6666
这个很强大的
#9
学习。。。
#10
学习了~~~
#11
不懂啊