在执行或编译某个存储过程时,出现锁定超时(locked timeout)的错误,
咱们首先考虑 系统中有对应的引用对象 存在锁定状态
sql
如下步骤为基本查询锁定信息的步骤:session
-
查询当前系统中锁定的对象 ide
select v.sid,v.serial#,o.object_name,o.object_type,l.locked_mode from v$locked_object l,v$session v,user_objects o where l.session_id = v.sid and l.object_id = o.object_id;
-
查询当前系统中对应的锁定对象的调用 code
select NAME, TYPE from user_dependencies where referenced_name = 'TMP_DEVICE'
- 查询当前系统中正在执行的某个特定功能的会话信息
select v.sid,v.serial#,p.pid,p.spid,s.sql_text from v$session v,v$sql s,v$process p where v.sql_id = s.sql_id and v.paddr = p.addr and s.sql_text like '%p_stat%';
查询出对应进程,若是不是死锁,可等待对象进程执行完,若是时死锁状态 ,须要杀掉对应进程 对象
从第3步查询的结果进行处理 进程
-- 杀掉进程 alter system kill session 'sid,serial#'; 或者 登陆后台:kill -15 spid;