DBMS_JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行
Posted lucifer三思后行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBMS_JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行相关的知识,希望对你有一定的参考价值。
一、查看JOB信息和运行情况
select * from dba_jobs where job=***;
select * from dba_jobs_running;
Notes:发现JOB运行显示停留在2天前21/05/10 06:08分,查看JOB调用存储过程中存在DBLINK。
二、查看AWR报告
@?/rdbms/admin/awrrpt.sql
Notes:发现该时间段,DBLINK等待事件比较严重。
三、停止HANG住的JOB SESSION
1.通过dbms_jobs.broken
begin
dbms_job.broken(***,TRUE);
commit;
end;
/
Notes:执行后,JOB BROKEN为Y,但是session并未停止关闭。
2.通过alter system kill session杀掉job session
select a.job,b.INST_ID,b.SID,b.SERIAL#,c.SPID
from dba_jobs_running a,gv$session b,gv$process c
where a.sid = b.sid and b.PADDR =c.ADDR
and b.INST_ID = c.INST_ID
and a.job=***;
alter system kill session '$SID,$SERIAL#';
Notes:无法kill session。
3.通过orakill或者kill -9操作系统层kill进程
select p.spid
from gv$process p, gv$session s
where p.INST_ID = s.INST_ID
and p.INST_ID = 1
and s.SID = $SID
and s.SERIAL# = $SERIAL#
and p.ADDR = s.PADDR;
select instance_name from gv$instance;
orakill *** 9280
1、LINUX
## $SPID 为 第1步的sql查出的SPID
kill –9 $SPID
2、WINDOWS
## $SPID 为 第1步的sql查出的SPID
##name为数据库实例名
select instance_name from gv$instance;
##cmd命令行执行
orakill 数据库实例名 $SPID
Notes:orakill 是Oracle自带的一个服务
以上是关于DBMS_JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行的主要内容,如果未能解决你的问题,请参考以下文章
oracle dblink调用SQL SERVER存储过程,有具体样例吗
通过oracle dblink,怎么执行远程数据库的存储过程。或者说可以执行吗?怎么弄?