当前位置 博文首页 > JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行_Luc

    JOBS调用存储过程中有DBLink,导致JOB HANG住,无法正常运行_Luc

    作者:[db:作者] 时间:2021-06-15 12:35

    一、查看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自带的一个服务

    下一篇:没有了