select * from V$DB_OBJECT_CASHE WHERE locks >0 and pins >0 and TYPE like 'FUNCTION';--查找执行的函数,如果查存储过程则PROCEDURE,找到对应的name值了。
SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';--有的版本需查表GV$ACCESS,查是得SID
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'--查出SID和SERIAL#
SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';
(1).先杀Oracle数据库进程:
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#' IMMEDIATE;--如果不加IMMEDIATE,则只是改状态,加上则立即杀死。
(2).再杀操作系统进程:
KILL -9 刚才查出的SPID
在SQLplus客户端执行 show?parameter?dump_dest? ;数据background_dump_dest所在目录。
或者select * from v$diag_info where name ='Diag Trace';可以看到日志位置。
目录下alert_库实例名.log文件就是了。