处理引起等待的sql 语句
1情景描述:在数据库中更新一条数据时,等待很长时间度不会执行结束。
for example:sql>update emp set ename='zhangsan' where empno='111';
2.在数据库中查询哪些会话等待了<1>的sql语句:
sql>select sid,username,blocking_session,
<wbr><wbr> blocking_session_status,blocking_instance<br><wbr><wbr> from v$session where username='xxxx';<br><br><br><br><br> 3.进一步查询是哪个sid的会话导致了<1>会话不能执行:<br><br> sql>select sid,username,blocking_session,event,wait_time<br><wbr><wbr> from v$session where username='xxxx';<br><br> 4.根据sid查询该会话的具体sql语句<br> sql>select sql_text<br><wbr><wbr><wbr> from v$session a ,v$sqltext_with_newlines b<br><wbr><wbr><wbr><wbr> where<br><wbr><wbr><wbr> DECODE (a.sql_hash_value,0 ,prev_hash_value,sql_hash_value)= b.hash_value <wbr><br><wbr><wbr><wbr> and a.sid=&sid order by piece;<br><br> 5.查看数据库中等待的sid,serial#的会话:<br> sql>select t2.username,t2.sid,t2.serial#,t2.logon_time<br><wbr><wbr><wbr> from v$locked_object t1,v$session t2<br><wbr><wbr><wbr> where t1.session_id=t2.sid order by t2.logon_time;<br><br> 6.干掉最早没有提交的sql语句;<br><wbr>sql>alter system kill session '513,4';<br><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
1情景描述:在数据库中更新一条数据时,等待很长时间度不会执行结束。
for example:sql>update emp set ename='zhangsan' where empno='111';
2.在数据库中查询哪些会话等待了<1>的sql语句:
sql>select sid,username,blocking_session,
<wbr><wbr> blocking_session_status,blocking_instance<br><wbr><wbr> from v$session where username='xxxx';<br><br><br><br><br> 3.进一步查询是哪个sid的会话导致了<1>会话不能执行:<br><br> sql>select sid,username,blocking_session,event,wait_time<br><wbr><wbr> from v$session where username='xxxx';<br><br> 4.根据sid查询该会话的具体sql语句<br> sql>select sql_text<br><wbr><wbr><wbr> from v$session a ,v$sqltext_with_newlines b<br><wbr><wbr><wbr><wbr> where<br><wbr><wbr><wbr> DECODE (a.sql_hash_value,0 ,prev_hash_value,sql_hash_value)= b.hash_value <wbr><br><wbr><wbr><wbr> and a.sid=&sid order by piece;<br><br> 5.查看数据库中等待的sid,serial#的会话:<br> sql>select t2.username,t2.sid,t2.serial#,t2.logon_time<br><wbr><wbr><wbr> from v$locked_object t1,v$session t2<br><wbr><wbr><wbr> where t1.session_id=t2.sid order by t2.logon_time;<br><br> 6.干掉最早没有提交的sql语句;<br><wbr>sql>alter system kill session '513,4';<br><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
本文详细介绍了在数据库中更新数据时遇到长时间等待情况的排查流程,包括识别等待SQL语句、查找导致会话阻塞的会话、获取具体SQL语句、干掉阻塞进程等关键步骤。

被折叠的 条评论
为什么被折叠?



