[PL/SQL] oracle sql语句 存储过程执行慢,单独执行快

一、执行计划情况

当存储过程挂住的时候,看看V$SESSION里面的 SQL_ID, SQL_CHILD_NUMBER

再根据这两个信息用DBMS_XPLAN.DISPLAY_CURSOR把计划拿出来看看。

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('gwp663cqh5qbf',0));


二、锁表情况

Oracle:

select  ao.owner,ao.object_name,lo.LOCKED_MODE,lo.OS_USER_NAME,LO.PROCESS,SESSION_ID,LO.ORACLE_USERNAME

from  v$locked_object lo, dba_objects ao 
where  ao.object_id = lo.object_id

Sybase:

select l.spid, locktype=convert(char(12),name),dbname=convert(char(15),db_name(l.dbid)),  'table'=convert(char(25),object_name(l.id,l.dbid)), page,  

       class=convert(char(15),class),  hostname, cmd  
from master..syslocks l,master..spt_values v,master..sysprocesses p  
where l.type = v.number and  
v.type = 'L' and  
      l.spid = p.spid  
order by spid 


Oracle杀掉进程

1、进程对应SID,SERIAL#

select SID,SERIAL#,USERNAME,SCHEMANAME,OSUSER,MACHINE,PROGRAM,SQL_ID, SQL_CHILD_NUMBER,SQL_EXEC_START,ACTION 
from V$SESSION 
where machine ='XXX';

2、Oracle杀掉

ALTER SYSTEM KILL SESSION '1089,16019' ;

3、被标记为Killed后,无法kill,在系统找对应进程spid并杀掉:

select spid, osuser, s.program
 from v$session s, v$process p
 where s.paddr = p.addr
   and s.sid =1089;

kill xxxxx


三、查存储过程正在运行的SQL运行情况

  SELECT a.username,a.machine, b.sql_id, b.SQL_TEXT
FROM v$session a, v$sqlarea b
WHERE a.sql_address = b.address
    AND a.SQL_HASH_VALUE = b.HASH_VALUE;


四、索引是否创建


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值