当前位置: 代码迷 >> 综合 >> Commonnbsp;Troublenbsp;Solution--处理引…
  详细解决方案

Commonnbsp;Troublenbsp;Solution--处理引…

热度:59   发布时间:2023-12-20 10:12:55.0
处理引起等待的sql 语句
1情景描述:在数据库中更新一条数据时,等待很长时间度不会执行结束。
for example:sql>update emp set ename='zhangsan' where empno='111';

2.在数据库中查询哪些会话等待了<1>的sql语句:

sql>select sid,username,blocking_session,
    blocking_session_status,blocking_instance
    from v$session where username='xxxx';




3.进一步查询是哪个sid的会话导致了<1>会话不能执行:

sql>select sid,username,blocking_session,event,wait_time
    from v$session where username='xxxx';

4.根据sid查询该会话的具体sql语句
sql>select sql_text
      from v$session a ,v$sqltext_with_newlines b
        where
      DECODE (a.sql_hash_value,0 ,prev_hash_value,sql_hash_value)= b.hash_value  
      and a.sid=&sid order by piece;

5.查看数据库中等待的sid,serial#的会话:
sql>select t2.username,t2.sid,t2.serial#,t2.logon_time
      from v$locked_object t1,v$session t2
      where t1.session_id=t2.sid order by t2.logon_time;

6.干掉最早没有提交的sql语句;
  sql>alter system kill session '513,4';

  相关解决方案