ITPub博客

首页 > 数据库 > Oracle > 一次临时表空间大量占用问题的处理

一次临时表空间大量占用问题的处理

Oracle 作者:Appleses 时间:2016-01-30 15:34:07 0 删除 编辑
<div class="entry" style="margin:20px 0px 5px;padding:0px 0px 5px;border-bottom-width:1px;border-bottom-style:dashed;border-bottom-color:#CCCCCC;color:#333333;font-family:'Lucida Grande', 'Segoe UI', 'Bitstream Vera Sans', Tahoma, Verdana, Arial, sans-serif;font-size:13px;line-height:20.7999992370605px;white-space:normal;background-color:#FFFFFF;"> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 一个电信运营商客户的核心交易系统,临时表空间大量被占用,临时表空间被撑到了600GB。这样的问题复杂吗?取决于很多因素,不过今天所要讲的案例,并不复杂,如果我们对临时表空间在何种情况下使用有足够了解。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 首先,我们要去检查是什么会话占用了临时表空间,具体占用了多少,临时段的具体类型是什么。正如我们要想知道这个月的花费过大,去分析原因时就要去看是哪些开销过大、开销了多少金额、开销的用途等。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 这个步骤比较简单,查询v$sort_usage就可以了: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;*&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">(<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;username,session_addr,sql_id,contents,segtype,blocks*8/1024/1024&nbsp;gb&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$sort_usage&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">order</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">by</span><span style="margin:0px;padding:0px;">&nbsp;blocks&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">desc</span><span style="margin:0px;padding:0px;">)&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;rownum&lt;=200;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">USERNAME&nbsp;&nbsp;&nbsp;&nbsp;SESSION_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQL_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONTENTS&nbsp;&nbsp;SEGTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GB&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">----------&nbsp;&nbsp;----------------&nbsp;-------------&nbsp;---------&nbsp;---------&nbsp;-----------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0700002949BCD8A0&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294BD99628&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294CD10480&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294DD1AC88&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294CD68D70&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294DBDF760&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294EDB5D10&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;070000294FD7D818&nbsp;291nk7db4bwdh&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.9677734375&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">...结果较多,忽略部分输出...&nbsp;&nbsp;</span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> SQL_ID都是一样的,那这个SQL是否有其特殊性呢?SEGTYPE为SORT表明这个临时段是“排序段”,用于SQL排序,大小居然也是一样,会话占用的临时段大小将近1GB,几百个会话加在一起,想不让临时表空间不撑大都难。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 看看这个相同的SQL ID代表的SQL是什么: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">SQL&gt;&nbsp;@sqlbyid&nbsp;291nk7db4bwdh&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">SQL_FULLTEXT&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">--------------------------------------------------------------------------------------------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">SELECT</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;A.LLEVEL,&nbsp;&nbsp;A.LMODE&nbsp;&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">FROM</span><span style="margin:0px;padding:0px;">&nbsp;TABLE_XXX&nbsp;A&nbsp;&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">WHERE</span><span style="margin:0px;padding:0px;">&nbsp;A.SERVICE_NAME&nbsp;=&nbsp;:SERVICE_NAME&nbsp;</span><span class="op" style="margin:0px;padding:0px;color:#808080;">AND</span><span style="margin:0px;padding:0px;">&nbsp;STATE=</span><span class="string" style="margin:0px;padding:0px;color:blue;">'Y'</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 很明显,这是一条非常简单的SQL,没有ORDER BY ,也没有GROUP BY、UNION、DISTINCT等需要排序的,TABLE_XXX是一张普通的表,而不是视图。出现了什么问题?会不会是v$sort_usage的SQL_ID列有错误?我们查看其中一个会话正在执行的SQL: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;sid,prev_sql_id,&nbsp;sql_id&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$session&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;saddr=</span><span class="string" style="margin:0px;padding:0px;color:blue;">'070000294AC0D050'</span><span style="margin:0px;padding:0px;">;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SID&nbsp;PREV_SQL_ID&nbsp;&nbsp;&nbsp;SQL_ID&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-----------&nbsp;-------------&nbsp;-------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3163&nbsp;291nk7db4bwdh&nbsp;&nbsp;</span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> v$sort_usage中看到某个会话当前没有执行任何SQL,v$sort_usage中的SQL_ID是该会话前一条执行的SQL。为什么这里显示的是会话前一条执行的SQL,关于这个问题后面再详述,但至少有一点是可以判断的:<strong style="margin:0px;padding:0px;">如果大量的临时段都是由会话当前正在执行的SQL所产生的,那说明同时有几百个会话在执行需要大量临时空间的SQL,那系统早就崩溃了。</strong>所以这些临时表空间的占用不应该是由当前在执行的SQL所产生的,至少大部分不是。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 大部分人的一个错误观点是,临时表空间中当前占用的空间是由会话当前正在执行的SQL所产生的。上面的一个简单的分析判断,情况不应该是这样。我们可以基于查询类SQL的执行过程来分析: </p> <ol style="margin:10px 0px;padding:0px 40px;"> <li style="margin:0px;padding:2px 0px;"> 解析SQL语句(Parse),生成一个游标(Open Cursor)。 </li> <li style="margin:0px;padding:2px 0px;"> 执行SQL语句(Execute),严格说就是执行新产生的游标。 </li> <li style="margin:0px;padding:2px 0px;"> 在游标中取数据(Fetch)。 </li> <li style="margin:0px;padding:2px 0px;"> 关闭游标(Close Cursor)。 </li> </ol> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 关键在第3步。大家都知道取数据有一个array size的概念,表示一次从游标中取多少条数据,这是一个循环的过程。如果SQL查询得到的数据有1000条,每次取100条,则需要取10次。对于Fetch Cursor,有两点: </p> <ol style="margin:10px 0px;padding:0px 40px;"> <li style="margin:0px;padding:2px 0px;"> 一个游标,或者说一条SQL语句,并不要求客户端把所有数据取完,只取了一部分数据就关闭游标也是可以的。 </li> <li style="margin:0px;padding:2px 0px;"> 只要还没有关闭游标,数据库就要维护该游标的状态,如果是排序的SQL,也需要维持该SQL已经排好序的数据。 </li> </ol> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 很显然,从上述第2点可以知道,如果一条SQL使用了临时段来排序,<strong style="margin:0px;padding:0px;">在SQL对应的游标没关闭的情况下,Oracle数据库不会去释放临时段</strong>,因为对于Oracle数据库来说,它不会知道客户端是否还要继续取游标的数据。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 基于这样的分析,我们只需要随便选择一个占用了接近1GB的会话,查询v$open_cursor,查看其打开的游标中是否有大数据量排序的SQL: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span style="margin:0px;padding:0px;">SQL&gt;&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;sql_id,sorts,rows_processed/executions&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$sql&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;2&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;parsing_schema_name=</span><span class="string" style="margin:0px;padding:0px;color:blue;">'ACCT'</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;executions&gt;0&nbsp;</span><span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;sorts&gt;0&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;3&nbsp;&nbsp;<span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;sql_id&nbsp;</span><span class="op" style="margin:0px;padding:0px;color:#808080;">in</span><span style="margin:0px;padding:0px;">&nbsp;(</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;sql_id&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$open_cursor&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;sid=4505)&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;4&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">order</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">by</span><span style="margin:0px;padding:0px;">&nbsp;3;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;SQL_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SORTS&nbsp;ROWS_PROCESSED/EXECUTIONS&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-------------&nbsp;-----------&nbsp;-------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">...省略部分输出结果...&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">86vp997jbz7s6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;63283&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;593&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">cfpdpb526ad43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;592&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;35859.79899&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">cfpdpb526ad43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;188&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55893.61702&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">cfpdpb526ad43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;71000&nbsp;&nbsp;</span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> <span id="more-1163" style="margin:0px;padding:0px;"></span> </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 最后三个游标,实际上都是同一条SQL语句,排序的数据量最大,我们来看看这条SQL是什么: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">@sqlbyid&nbsp;cfpdpb526ad43&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">SQL_FULLTEXT&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">---------------------------------------------------------------------------------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;...&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;c,&nbsp;b,&nbsp;a,&nbsp;d,&nbsp;e&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;...&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">order</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">by</span><span style="margin:0px;padding:0px;">&nbsp;d.billing_cycle_id&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">desc</span><span style="margin:0px;padding:0px;">,e.offer_name,a.acc_name&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 基于为客户保密的原因,SQL做了处理,能知道这条SQL的确是排了序就行,不过在SQL中看不出来的是,这条SQL没有任何实质性的能够过滤大量数据的条件。那么我们count(*)这条SQL语句看看: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="func" style="margin:0px;padding:0px;">COUNT</span><span style="margin:0px;padding:0px;">(*)&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">--------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">12122698&nbsp;&nbsp;</span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 出来的结果居然有1200多万条数据,一个前台应用,不知道取1200多万条数据干嘛。但是从rows_processed/executions只有几万的结果来看,应用在取了几万条数据之后,由于某些原因(最大的可能就是不能再处理更多的数据),不再继续取数据,但是游标也一直没有关闭。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 比较容易就能进行演示sort by时临时表空间的占用。 </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">根据dba_objects建一个测试表T1,使其数据量达到2000万行。&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="func" style="margin:0px;padding:0px;">count</span><span style="margin:0px;padding:0px;">(*)&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;t1;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;<span class="func" style="margin:0px;padding:0px;">COUNT</span><span style="margin:0px;padding:0px;">(*)&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-----------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;20171200&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">然后将SQL工作区设置为手动模式,设置sort内存大小限制为200M:&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">alter</span><span style="margin:0px;padding:0px;">&nbsp;session&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">set</span><span style="margin:0px;padding:0px;">&nbsp;workarea_size_policy=manual;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">alter</span><span style="margin:0px;padding:0px;">&nbsp;session&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">set</span><span style="margin:0px;padding:0px;">&nbsp;sort_area_size=209715200;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">查询得到当前的会话sid:&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;sid&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$mystat&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;rownum&lt;&nbsp;=1;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SID&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-----------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2111&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">执行这下面的代码:&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">declare</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_object_name&nbsp;varchar2(100);&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_dummy&nbsp;varchar2(100);&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;4&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">begin</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">for</span><span style="margin:0px;padding:0px;">&nbsp;rec&nbsp;</span><span class="op" style="margin:0px;padding:0px;color:#808080;">in</span><span style="margin:0px;padding:0px;">&nbsp;(</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;*&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;t1&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">order</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">by</span><span style="margin:0px;padding:0px;">&nbsp;object_id,object_name)&nbsp;loop&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;object_type&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">into</span><span style="margin:0px;padding:0px;">&nbsp;v_dummy&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;t1&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;rownum&lt;=1;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;object_name&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">into</span><span style="margin:0px;padding:0px;">&nbsp;v_object_name&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;dba_objects&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;object_id=rec.object_id;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbms_lock.sleep(60*10);&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">end</span><span style="margin:0px;padding:0px;">&nbsp;loop;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;11&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">end</span><span style="margin:0px;padding:0px;">;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;12&nbsp;&nbsp;/&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">这段代码会打开一个游标,对2000万的数据量进行排序,然后在循环中只取一条数据,然后就进入sleep。在另一个窗口中监控到2111这个会话的event变成了PL/SQL&nbsp;lock&nbsp;timer,就去查询v$sort_usage:&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;a.sql_id&nbsp;sort_sql_id,b.sql_id,b.prev_sql_id,&nbsp;contents,segtype,blocks*8/1024/1024&nbsp;gb&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;2&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$sort_usage&nbsp;a,v$session&nbsp;b&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;3&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;a.session_addr=b.saddr&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;4&nbsp;&nbsp;<span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;b.sid=2111;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">SORT_SQL_ID&nbsp;&nbsp;&nbsp;SQL_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PREV_SQL_ID&nbsp;&nbsp;&nbsp;CONTENTS&nbsp;&nbsp;SEGTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GB&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-------------&nbsp;-------------&nbsp;-------------&nbsp;---------&nbsp;---------&nbsp;-----------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">fabh24prgk2sj&nbsp;bhzf316mdc07w&nbsp;fabh24prgk2sj&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.444824219&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">可以看到v$sort_usage中的SQL_ID(即上述结果中SORT_SQL_ID)与v$session中的pre_sql_id一致,这条SQL是:&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">@sqlbyid&nbsp;fabh24prgk2sj&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">SQL_FULLTEXT&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">--------------------------------------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">SELECT</span><span style="margin:0px;padding:0px;">&nbsp;OBJECT_NAME&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">FROM</span><span style="margin:0px;padding:0px;">&nbsp;DBA_OBJECTS&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">WHERE</span><span style="margin:0px;padding:0px;">&nbsp;OBJECT_ID=:B1&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">而实际上当前正在执行的SQL是:&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;@sqlbyid&nbsp;bhzf316mdc07w&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">SQL_FULLTEXT&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">---------------------------------------------------------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">declare</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;v_object_name&nbsp;varchar2(100);&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;v_dummy&nbsp;varchar2(100);&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">begin</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">for</span><span style="margin:0px;padding:0px;">&nbsp;rec&nbsp;</span><span class="op" style="margin:0px;padding:0px;color:#808080;">in</span><span style="margin:0px;padding:0px;">&nbsp;(</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;*&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;t1&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">order</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">by</span><span style="margin:0px;padding:0px;">&nbsp;object_id,object_name)&nbsp;loop&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;object_type&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">into</span><span style="margin:0px;padding:0px;">&nbsp;v_dummy&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;t1&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;rownum&lt;=1;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;object_name&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">into</span><span style="margin:0px;padding:0px;">&nbsp;v_object_name&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;dba_objects&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;object_id=rec.object_id;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbms_lock.sleep(60*10);&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">end</span><span style="margin:0px;padding:0px;">&nbsp;loop;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">end</span><span style="margin:0px;padding:0px;">;&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 问题分析到这里,很明显确认的是,应用存在问题,也许是业务逻辑问题;也许是根据前台选择的条件拼接的SQL,但是没有任何条件时就查询了所有数据。接下来就是找来开发人员,至于后面的事就跟这个主题没有太大关系。我们可以根据这个案例来进一步展开,去探寻临时表空间的更多知识点。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 这里要展开的第1点是,v$sort_usage中的sql_id是不是会话正在执行的SQL,我们去看看视图fixed_View_definition就知道了: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;x$ktsso.inst_id,&nbsp;username,&nbsp;username,&nbsp;ktssoses,&nbsp;ktssosno,&nbsp;prev_sql_addr,&nbsp;prev_hash_value,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">prev_sql_id,&nbsp;ktssotsn,&nbsp;decode(ktssocnt,&nbsp;0,&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">'PERMANENT'</span><span style="margin:0px;padding:0px;">,&nbsp;1,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'TEMPORARY'</span><span style="margin:0px;padding:0px;">),&nbsp;decode(ktssosegt,&nbsp;1,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="string" style="margin:0px;padding:0px;color:blue;">'SORT'</span><span style="margin:0px;padding:0px;">,&nbsp;2,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'HASH'</span><span style="margin:0px;padding:0px;">,&nbsp;3,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'DATA'</span><span style="margin:0px;padding:0px;">,&nbsp;4,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'INDEX'</span><span style="margin:0px;padding:0px;">,&nbsp;5,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'LOB_DATA'</span><span style="margin:0px;padding:0px;">,&nbsp;6,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'LOB_INDEX'</span><span style="margin:0px;padding:0px;">&nbsp;,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'UNDEFINED'</span><span style="margin:0px;padding:0px;">),&nbsp;ktssofno,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">ktssobno,&nbsp;ktssoexts,&nbsp;ktssoblks,&nbsp;ktssorfno&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;x$ktsso,&nbsp;v$session&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;ktssoses&nbsp;=&nbsp;v$session.saddr&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;ktssosno&nbsp;=&nbsp;v$session.serial#&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 原来在v$sort_usage的定义中,就明确地说明了SQL_ID列是v$session中的prev_sql_id列,而不是当前的SQL。至于为什么这样定义,老实说,现在还不知道。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 不过从11.2.0.2这个版本开始,v$sort_usage的基表x$ktsso中增加了一个字段ktssosqlid,表示该临时段真正关联的SQL,以上述的测试结果为例,查询这个基表的结果如下: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;ktssosqlid&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;x$ktsso,&nbsp;v$session&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;ktssoses&nbsp;=&nbsp;v$session.saddr&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;2&nbsp;&nbsp;<span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;ktssosno&nbsp;=&nbsp;v$session.serial#&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;3&nbsp;&nbsp;<span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;v$session.sid=2111;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">KTSSOSQLID&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">60t6fmjsw6v8y&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">@sqlbyid&nbsp;60t6fmjsw6v8y&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">SQL_FULLTEXT&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">---------------------------------------------------------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">SELECT</span><span style="margin:0px;padding:0px;">&nbsp;*&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">FROM</span><span style="margin:0px;padding:0px;">&nbsp;T1&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">ORDER</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">BY</span><span style="margin:0px;padding:0px;">&nbsp;OBJECT_ID,OBJECT_NAME&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 可以看到的是我们查询到了真正产生临时段的SQL。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 一直以来,v$sort_usage中的SQL_ID误导了很多人。所幸的是Oracle从11.2.0.2开始进行了弥补,MOS中有文档: </p> <blockquote style="margin:10px 30px 10px 20px;padding:5px 10px;border-width:1px 1px 1px 2px;border-style:solid;border-color:#DDDDDD #DDDDDD #DDDDDD #91AA9D;background-color:#EEEEEE;"> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> Bug 17834663 - Include SQL ID for statement that created a temporary segment in GV$SORT_USAGE (文档 ID 17834663.8)<br style="margin:0px;padding:0px;" /> In previous versions, it was not possible to identify the SQL ID<br style="margin:0px;padding:0px;" /> of the statement that created a given temporary segment in<br style="margin:0px;padding:0px;" /> eg. (G)V$SORT_USAGE. </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> @ Via the fix for bug:8806817 we added the SQL ID to the X$KTSSO<br style="margin:0px;padding:0px;" /> @ table (ktssosqlid), but it was not exposed in the GV$SORT_USAGE<br style="margin:0px;padding:0px;" /> @ view until now. </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> The SQL ID of the statement is in column SQL_ID_TEMPSEG </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> Note that this fix cannot be provided as an interim patch. </p> </blockquote> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 我们改良一下v$sort_usage,使用如下的查询来代替: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;k.inst_id&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">"INST_ID"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssoses&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SADDR"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid,&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssosno&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SERIAL#"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"USERNAME"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osuser&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"OSUSER"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssosqlid&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SQL_ID"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssotsn&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"TABLESPACE"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decode(ktssocnt,&nbsp;0,&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">'PERMANENT'</span><span style="margin:0px;padding:0px;">,&nbsp;1,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'TEMPORARY'</span><span style="margin:0px;padding:0px;">)&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">"CONTENTS"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment" style="margin:0px;padding:0px;color:#008200;">--注意在12c的v$sort_usage定义中TABLESPACE和CONTENTS已经发生变化了。</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decode(ktssosegt,&nbsp;1,&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">'SORT'</span><span style="margin:0px;padding:0px;">,&nbsp;2,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'HASH'</span><span style="margin:0px;padding:0px;">,&nbsp;3,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'DATA'</span><span style="margin:0px;padding:0px;">,&nbsp;4,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'INDEX'</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5,&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">'LOB_DATA'</span><span style="margin:0px;padding:0px;">,&nbsp;6,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'LOB_INDEX'</span><span style="margin:0px;padding:0px;">&nbsp;,&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">'UNDEFINED'</span><span style="margin:0px;padding:0px;">)&nbsp;</span><span class="string" style="margin:0px;padding:0px;color:blue;">"SEGTYPE"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssofno&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SEGFILE#"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssobno&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SEGBLK#"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssoexts&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"EXTENTS"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssoblks&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"BLOCKS"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;round(ktssoblks*p.value/1024/1024,&nbsp;2)&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SIZE_MB"</span><span style="margin:0px;padding:0px;">,&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ktssorfno&nbsp;<span class="string" style="margin:0px;padding:0px;color:blue;">"SEGRFNO#"</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;x$ktsso&nbsp;k,&nbsp;v$session&nbsp;s,&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;value&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$parameter&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">name</span><span style="margin:0px;padding:0px;">=</span><span class="string" style="margin:0px;padding:0px;color:blue;">'db_block_size'</span><span style="margin:0px;padding:0px;">)&nbsp;p&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;ktssoses&nbsp;=&nbsp;s.saddr&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;<span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;ktssosno&nbsp;=&nbsp;s.serial#;&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 要展开的第2点是,v$sort_usage中的SEGTYPE列的不同的值各有什么意义: </p> <ol style="margin:10px 0px;padding:0px 40px;"> <li style="margin:0px;padding:2px 0px;"> SORT:SQL排序使用的临时段,包括order by、group by、union、distinct、窗口函数(window function)、建索引等产生的排序。 </li> <li style="margin:0px;padding:2px 0px;"> DATA:临时表(Global Temporary Table)存储数据使有的段。 </li> <li style="margin:0px;padding:2px 0px;"> INDEX:临时表上建的索引使用的段。 </li> <li style="margin:0px;padding:2px 0px;"> HASH:hash算法,如hash连接所使用的临时段。 </li> <li style="margin:0px;padding:2px 0px;"> LOB_DATA和LOB_INDEX:临时LOB使用的临时段。 </li> </ol> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 根据上述的段类型,大体可以分为三类占用: </p> <ol style="margin:10px 0px;padding:0px 40px;"> <li style="margin:0px;padding:2px 0px;"> SQL语句排序、HASH JOIN占用 </li> <li style="margin:0px;padding:2px 0px;"> 临时表占用 </li> <li style="margin:0px;padding:2px 0px;"> 临时LOB对象占用 </li> </ol> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 临时表空间的异常占用,一种缓步增长的,另一种情况:一下撑满的通常是一个极大数据量的排序或极大的索引的创建。缓步增长的情况,跟系统的内存被逐渐占用类似,存在“泄露”。比如排序的SQL游标没有关闭,比如本文的案例;比如会话级临时表产生了数据后一直没有清除;临时LOB对象没有清理或泄露。前两种比较好去分析处理,但是临时LOB的泄露问题就复杂很多。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 来看一个测试: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span style="margin:0px;padding:0px;">&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;sid&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$mystat&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;rownum&lt;=1;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SID&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-----------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1773&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">declare</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;v_lob&nbsp;clob;&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;3&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">begin</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;dbms_lob.createtemporary(v_lob,<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">true</span><span style="margin:0px;padding:0px;">);&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;dbms_lob.writeappend(v_lob,1000,lpad(<span class="string" style="margin:0px;padding:0px;color:blue;">'a'</span><span style="margin:0px;padding:0px;">,1000,</span><span class="string" style="margin:0px;padding:0px;color:blue;">'a'</span><span style="margin:0px;padding:0px;">));&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;6&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">end</span><span style="margin:0px;padding:0px;">;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;7&nbsp;&nbsp;/&nbsp;&nbsp;</span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 上述的代码执行完之后,在另一个窗口中,我们查询v$sort_usage: </p> <div class="dp-highlighter" style="margin:18px 0px;padding:1px 0px 0px;font-family:Consolas, 'Courier New', Courier, mono;font-size:12px;width:653.390625px;overflow:auto;background-color:#E7E5DC;"> <div class="bar" style="margin:0px;padding:0px 0px 0px 45px;"> <div class="tools" style="margin:0px;padding:3px 8px 10px 10px;font-stretch:normal;font-size:9px;line-height:normal;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;background-color:#F8F8F8;"> <a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">view plain</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">copy to clipboard</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">print</a><a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html#" style="margin:0px 10px 0px 0px;padding:0px;color:#A0A0A0;text-decoration:none;outline-color:invert;outline-style:none;font-size:9px;">?</a> </div> </div> <ol start="1" class="dp-sql" style="margin:0px 0px 1px 45px;padding:0px;list-style:decimal-leading-zero;color:#5C5C5C;background-color:#FFFFFF;"> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">select</span><span style="margin:0px;padding:0px;">&nbsp;a.sql_id&nbsp;sort_sql_id,b.sql_id,b.prev_sql_id,&nbsp;contents,segtype,blocks*8/1024/1024&nbsp;gb&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;2&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">from</span><span style="margin:0px;padding:0px;">&nbsp;v$sort_usage&nbsp;a,v$session&nbsp;b&nbsp;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;3&nbsp;&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">where</span><span style="margin:0px;padding:0px;">&nbsp;a.session_addr=b.saddr&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;4&nbsp;&nbsp;<span class="op" style="margin:0px;padding:0px;color:#808080;">and</span><span style="margin:0px;padding:0px;">&nbsp;b.sid=1773;&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">SORT_SQL_ID&nbsp;&nbsp;&nbsp;SQL_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PREV_SQL_ID&nbsp;&nbsp;&nbsp;CONTENTS&nbsp;&nbsp;SEGTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GB&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">-------------&nbsp;-------------&nbsp;-------------&nbsp;---------&nbsp;---------&nbsp;-----------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">9babjv8yq8ru3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9babjv8yq8ru3&nbsp;<span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">TEMPORARY</span><span style="margin:0px;padding:0px;">&nbsp;LOB_DATA&nbsp;&nbsp;.0004882813&nbsp;&nbsp;</span></span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">@sqlbyid&nbsp;9babjv8yq8ru3&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;">&nbsp;&nbsp;</span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;">SQL_FULLTEXT&nbsp;&nbsp;</span> </li> <li class="alt" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;"> <span style="margin:0px;padding:0px;color:black;"><span class="comment" style="margin:0px;padding:0px;color:#008200;">---------------------------------------------------------------------------</span><span style="margin:0px;padding:0px;">&nbsp;&nbsp;</span></span> </li> <li class="" style="margin:0px;padding:2px 0px 2px 10px;border-left-width:3px;border-left-style:solid;border-left-color:#6CE26C;line-height:14px;background-color:#F8F8F8;"> <span style="margin:0px;padding:0px;color:black;"><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">BEGIN</span><span style="margin:0px;padding:0px;">&nbsp;DBMS_OUTPUT.GET_LINES(:LINES,&nbsp;:NUMLINES);&nbsp;</span><span class="keyword" style="margin:0px;padding:0px;color:#006699;font-weight:bold;">END</span><span style="margin:0px;padding:0px;">;&nbsp;&nbsp;</span></span> </li> </ol> </div> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 可以看到,这个会话已经产生了类型为LOB_DATA的临时段。虽然SQL代码已经执行完成,会话已经处于空闲状态,但是临时段仍然存在着。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> Oracle中的LOB变量,类似于C语句中的指针,或者类似于JAVA代码中的数据库连接Connection,是需要释放的。上述有问题的代码,缺少了释放LOB的代码:dbms_log.freetemporary(v_lob)。好在对于这种情况,Oracle提供了一个补救措施,就是设置60025事件可以自动清理掉不活动的LOB,只需要在参数文件中加上event='60025 trace name context forever'。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 在Oracle数据库中,xmltype类型内部也实际上是LOB类型,xmltype类型的数据操作可能会产生较多的LOB临时段。lob类型的字段上的更改操作,比如lob拼接等,同样会产生LOB临时段。如果在v$sort_usage中发现大量的LOB类型的临时段,那么通常是由于代码存在问题,没有释放LOB,或者是由于Oracle本身的BUG。在MOS上,如果以lob temporary关键字搜索,会发现相当多的关于lob临时段的泄露或临时段没有释放相关的文档。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> 最后,不管是什么情况导致的临时表空间被过多占用,通常重启应用能够释放掉临时段,因为会话退出后,相对应的临时段就会被释放。看来,“重启”大法在这种情况下就很有用。 </p> <p style="padding-top:5px;padding-right:20px;padding-bottom:5px;"> --The END. </p> <div id="crp_related" style="margin:0px;padding:0px;"> </div> <div style="margin:0px;padding:0px;clear:both;"> </div> </div> <div class="info" style="margin:0px;padding:10px 0px;color:#666666;font-family:'Lucida Grande', 'Segoe UI', 'Bitstream Vera Sans', Tahoma, Verdana, Arial, sans-serif;font-size:13px;line-height:20.7999992370605px;white-space:normal;background-color:#FFFFFF;"> Address:&nbsp;<a href="http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html" rel="bookmark" title="一次临时表空间大量占用问题的处理" style="margin:0px;padding:0px;color:#666666;text-decoration:none;outline-color:invert;outline-style:none;">http://www.laoxiong.net/temporary_tablespace_excessive_usage_case.html</a> </div>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28628435/viewspace-1984360/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-01-30

  • 博文量
    120
  • 访问量
    52801