Oracle存储过程编译卡死

方法一:

  1:查V$DB_OBJECT_CACHE

  SELECT * FROM V$DB_OBJECT_CACHE WHERE name='CRM_LASTCHGINFO_DAY' AND LOCKS!='0';

  注意:CRM_LASTCHGINFO_DAY为存储过程的名称。

  发现locks=2,

  2:按对象查出sid的值

  select /*+ rule*/  SID from V$ACCESS WHERE object='CRM_LASTCHGINFO_DAY';

  注意:CRM_LASTCHGINFO_DAY为存储过程的名称。

  3:查sid,serial#

  SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID';

  4:alter system kill session 'sid值,serial#值' immediate;

方法二:

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删掉就可以了

你可能感兴趣的:(Oracle存储过程编译卡死)