﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-金家寶-随笔分类-oracle</title><link>http://www.blogjava.net/jiabao/category/30683.html</link><description>機會只會給垂青有准備的人，運氣不是每個人都有的.</description><language>zh-cn</language><lastBuildDate>Tue, 08 Apr 2008 15:41:53 GMT</lastBuildDate><pubDate>Tue, 08 Apr 2008 15:41:53 GMT</pubDate><ttl>60</ttl><item><title>怎样查看sql的执行计划||如何启用AutoTrace 查看SQL执行计划</title><link>http://www.blogjava.net/jiabao/archive/2008/04/08/191593.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Tue, 08 Apr 2008 15:32:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/archive/2008/04/08/191593.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/191593.html</wfw:comment><comments>http://www.blogjava.net/jiabao/archive/2008/04/08/191593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/191593.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/191593.html</trackback:ping><description><![CDATA[
		<h4 id="subjcns!83F00F864EDB9446!333" style="MARGIN-BOTTOM: 0px">怎样查看sql的执行计划</h4>
		<div class="bvMsg" id="msgcns!83F00F864EDB9446!333">
				<div>
						<strong>如何启用AutoTrace 查看SQL执行计划<br /><br /></strong>通过以下方法可以把Autotrace的权限授予Everyone，<br />如果你需要限制Autotrace权限，可以把对public的授权改为对特定user的授权。 <br /><br /><br />D:\oracle\ora92&gt;sqlplus /nolog<br />SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 3 15:16:03 2003<br />Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.<br />SQL&gt; connect sys as sysdba<br />请输入口令:<br />已连接。<br />SQL&gt; [b]@?\rdbms\admin\utlxplan[/b]<br />表已创建。<br />SQL&gt; create public synonym plan_table for plan_table;<br />同义词已创建。<br />SQL&gt; grant all on plan_table to public ;<br />授权成功。<br />SQL&gt;[b] @?\sqlplus\admin\plustrce[/b]<br />SQL&gt;<br />SQL&gt; drop role plustrace;<br />drop role plustrace<br />*<br />ERROR 位于第 1 行:<br />ORA-01919: 角色'PLUSTRACE'不存在<br />SQL&gt; create role plustrace;<br />角色已创建<br />SQL&gt;<br />SQL&gt; grant select on v_$sesstat to plustrace;<br />授权成功。<br />SQL&gt; grant select on v_$statname to plustrace;<br />授权成功。<br />SQL&gt; grant select on v_$session to plustrace;<br />授权成功。<br />SQL&gt; grant plustrace to dba with admin option;<br />授权成功。<br />SQL&gt;<br />SQL&gt; set echo off <br /><br /><br />DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public<br />这样所有用户都将拥有plustrace角色的权限.<br /><br /><br />SQL&gt; [b]grant plustrace to public ;[/b]<br /><br />授权成功。<br />然后我们就可以使用AutoTrace的功能了.<br /><br /><br />SQL&gt; connect eqsp/eqsp<br />已连接。<br />SQL&gt; set autotrace on<br />SQL&gt; set timing on<br />SQL&gt; <br /><br /><br />关于Autotrace几个常用选项的说明:<br />SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告，这是缺省模式<br />SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告 <br />SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息<br />SET AUTOTRACE ON ----------------- 包含执行计划和统计信息 <br />SET AUTOTRACE TRACEONLY ------ 同set autotrace on，但是不显示查询输出 <br /><br />SQL&gt; set autotrace traceonly<br />SQL&gt; select table_name from user_tables;<br />已选择98行。<br />已用时间: 00: 00: 00.04<br />Execution Plan<br />----------------------------------------------------------<br />0 SELECT STATEMENT Optimizer=CHOOSE<br />1 0 NESTED LOOPS<br />2 1 NESTED LOOPS (OUTER)<br />3 2 NESTED LOOPS (OUTER)<br />4 3 NESTED LOOPS (OUTER)<br />5 4 NESTED LOOPS (OUTER)<br />6 5 NESTED LOOPS<br />7 6 TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'<br />8 7 INDEX (RANGE SCAN) OF 'I_OBJ2' (UNIQUE)<br />9 6 TABLE ACCESS (CLUSTER) OF 'TAB$'<br />10 9 INDEX (UNIQUE SCAN) OF 'I_OBJ#' (NON-UNIQUE)<br />11 5 TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'<br />12 11 INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)<br />13 4 INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)<br />14 3 TABLE ACCESS (CLUSTER) OF 'USER$'<br />15 14 INDEX (UNIQUE SCAN) OF 'I_USER#' (NON-UNIQUE)<br />16 2 TABLE ACCESS (CLUSTER) OF 'SEG$'<br />17 16 INDEX (UNIQUE SCAN) OF 'I_FILE#_BLOCK#' (NON-UNIQUE)<br />18 1 TABLE ACCESS (CLUSTER) OF 'TS$'<br />19 18 INDEX (UNIQUE SCAN) OF 'I_TS#' (NON-UNIQUE)<br /><br />Statistics<br />----------------------------------------------------------<br />0 recursive calls<br />0 db block gets<br />1389 consistent gets<br />0 physical reads<br />0 redo size<br />2528 bytes sent via SQL*Net to client<br />569 bytes received via SQL*Net from client<br />8 SQL*Net roundtrips to/from client<br />0 sorts (memory)<br />0 sorts (disk)<br />98 rows processed<br />SQL&gt;</div>
		</div>
<img src ="http://www.blogjava.net/jiabao/aggbug/191593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-04-08 23:32 <a href="http://www.blogjava.net/jiabao/archive/2008/04/08/191593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样查看sql的执行计划||如何启用AutoTrace 查看SQL执行计划</title><link>http://www.blogjava.net/jiabao/archive/2008/04/08/191594.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Tue, 08 Apr 2008 15:32:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/archive/2008/04/08/191594.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/191594.html</wfw:comment><comments>http://www.blogjava.net/jiabao/archive/2008/04/08/191594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/191594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/191594.html</trackback:ping><description><![CDATA[
		<h4 id="subjcns!83F00F864EDB9446!333" style="MARGIN-BOTTOM: 0px">怎样查看sql的执行计划</h4>
		<div class="bvMsg" id="msgcns!83F00F864EDB9446!333">
				<div>
						<strong>如何启用AutoTrace 查看SQL执行计划<br /><br /></strong>通过以下方法可以把Autotrace的权限授予Everyone，<br />如果你需要限制Autotrace权限，可以把对public的授权改为对特定user的授权。 <br /><br /><br />D:\oracle\ora92&gt;sqlplus /nolog<br />SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 3 15:16:03 2003<br />Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.<br />SQL&gt; connect sys as sysdba<br />请输入口令:<br />已连接。<br />SQL&gt; [b]@?\rdbms\admin\utlxplan[/b]<br />表已创建。<br />SQL&gt; create public synonym plan_table for plan_table;<br />同义词已创建。<br />SQL&gt; grant all on plan_table to public ;<br />授权成功。<br />SQL&gt;[b] @?\sqlplus\admin\plustrce[/b]<br />SQL&gt;<br />SQL&gt; drop role plustrace;<br />drop role plustrace<br />*<br />ERROR 位于第 1 行:<br />ORA-01919: 角色'PLUSTRACE'不存在<br />SQL&gt; create role plustrace;<br />角色已创建<br />SQL&gt;<br />SQL&gt; grant select on v_$sesstat to plustrace;<br />授权成功。<br />SQL&gt; grant select on v_$statname to plustrace;<br />授权成功。<br />SQL&gt; grant select on v_$session to plustrace;<br />授权成功。<br />SQL&gt; grant plustrace to dba with admin option;<br />授权成功。<br />SQL&gt;<br />SQL&gt; set echo off <br /><br /><br />DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public<br />这样所有用户都将拥有plustrace角色的权限.<br /><br /><br />SQL&gt; [b]grant plustrace to public ;[/b]<br /><br />授权成功。<br />然后我们就可以使用AutoTrace的功能了.<br /><br /><br />SQL&gt; connect eqsp/eqsp<br />已连接。<br />SQL&gt; set autotrace on<br />SQL&gt; set timing on<br />SQL&gt; <br /><br /><br />关于Autotrace几个常用选项的说明:<br />SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告，这是缺省模式<br />SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告 <br />SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息<br />SET AUTOTRACE ON ----------------- 包含执行计划和统计信息 <br />SET AUTOTRACE TRACEONLY ------ 同set autotrace on，但是不显示查询输出 <br /><br />SQL&gt; set autotrace traceonly<br />SQL&gt; select table_name from user_tables;<br />已选择98行。<br />已用时间: 00: 00: 00.04<br />Execution Plan<br />----------------------------------------------------------<br />0 SELECT STATEMENT Optimizer=CHOOSE<br />1 0 NESTED LOOPS<br />2 1 NESTED LOOPS (OUTER)<br />3 2 NESTED LOOPS (OUTER)<br />4 3 NESTED LOOPS (OUTER)<br />5 4 NESTED LOOPS (OUTER)<br />6 5 NESTED LOOPS<br />7 6 TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'<br />8 7 INDEX (RANGE SCAN) OF 'I_OBJ2' (UNIQUE)<br />9 6 TABLE ACCESS (CLUSTER) OF 'TAB$'<br />10 9 INDEX (UNIQUE SCAN) OF 'I_OBJ#' (NON-UNIQUE)<br />11 5 TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'<br />12 11 INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)<br />13 4 INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)<br />14 3 TABLE ACCESS (CLUSTER) OF 'USER$'<br />15 14 INDEX (UNIQUE SCAN) OF 'I_USER#' (NON-UNIQUE)<br />16 2 TABLE ACCESS (CLUSTER) OF 'SEG$'<br />17 16 INDEX (UNIQUE SCAN) OF 'I_FILE#_BLOCK#' (NON-UNIQUE)<br />18 1 TABLE ACCESS (CLUSTER) OF 'TS$'<br />19 18 INDEX (UNIQUE SCAN) OF 'I_TS#' (NON-UNIQUE)<br /><br />Statistics<br />----------------------------------------------------------<br />0 recursive calls<br />0 db block gets<br />1389 consistent gets<br />0 physical reads<br />0 redo size<br />2528 bytes sent via SQL*Net to client<br />569 bytes received via SQL*Net from client<br />8 SQL*Net roundtrips to/from client<br />0 sorts (memory)<br />0 sorts (disk)<br />98 rows processed<br />SQL&gt;</div>
		</div>
<img src ="http://www.blogjava.net/jiabao/aggbug/191594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-04-08 23:32 <a href="http://www.blogjava.net/jiabao/archive/2008/04/08/191594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对于drop procedure 时hang住的问题</title><link>http://www.blogjava.net/jiabao/archive/2008/04/08/191589.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Tue, 08 Apr 2008 15:30:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/archive/2008/04/08/191589.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/191589.html</wfw:comment><comments>http://www.blogjava.net/jiabao/archive/2008/04/08/191589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/191589.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/191589.html</trackback:ping><description><![CDATA[
		<div class="lh3" id="veryContent" style="OVERFLOW: hidden; WIDTH: 100%">
				<table class="contentTable" id="blogContentTable" cellspacing="0" cellpadding="0">
						<tbody>
								<tr>
										<td style="FONT-SIZE: 12px; WORD-WRAP: break-word" valign="top">
												<div id="blogContainer">
														<img id="paperPicArea0" style="DISPLAY: none" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" />
														<div id="paperTitleArea" style="DISPLAY: none" align="center">
																<span id="paperTitle" style="DISPLAY: block; FONT-WEIGHT: bolder; WORD-BREAK: break-all">
																		<font face="" color="#000e04">对于drop procedure 时hang住的问题</font>
																</span>
														</div>
														<img id="paperPicArea" style="DISPLAY: none" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" />问题：在drop procedure的时候发现一直没反应，查询原因 <br />SQL&gt; conn <a href="mailto:sys/pwd@sid" target="_blank">sys/pwd@sid</a><wbr> as sysdba <br />已连接。 <br />SQL&gt; oradebug username <br />ORA-00070: 命令gdyf无效 <br />SQL&gt; oradebug setmypid <br />已处理的语句 <br />SQL&gt; oradebug hanganalyze 3 <br />Hang Analysis in d:\oracle\admin\oracle\udump\oracle_ora_3200.trc <br />内容如下： <br />Dump file d:\oracle\admin\oracle\udump\oracle_ora_3200.trc <br />Tue Mar 18 15:39:01 2008 <br />ORACLE V9.2.0.5.0 - Production vsnsta=0 <br />vsnsql=12 vsnxtr=3 <br />Windows 2000 Version 5.0 Service Pack 4, CPU type 586 <br />Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production <br />With the Partitioning, OLAP and Oracle Data Mining options <br />JServer Release 9.2.0.5.0 - Production <br />Windows 2000 Version 5.0 Service Pack 4, CPU type 586 <br />Instance name: oracle <br />Redo thread mounted by this instance: 1 <br />Oracle process number: 82 <br />Windows thread id: 3200, image: ORACLE.EXE <br />*** SESSION ID:(26.2234) 2008-03-18 15:39:01.390 <br />*** 2008-03-18 15:39:01.390 <br />============== <br />HANG ANALYSIS: <br />============== <br />Open chains found: <br />Chain 1 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/48/20150/0x45a2b2e8/3336/No Wait&gt; <br />-- &lt;0/40/11993/0x45a29c68/3284/library cache lock&gt; <br />Other chains found: <br />Chain 2 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/8/1/0x45a1ca68/2796/wakeup time manager&gt; <br />Chain 3 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/26/2234/0x45a2dc28/3200/No Wait&gt; <br />Chain 4 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/29/2338/0x45a25528/672/db file sequential read&gt; <br />Chain 5 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/30/23502/0x45a23728/3224/db file sequential read&gt; <br />Chain 6 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/64/22233/0x45a1f3a8/1892/No Wait&gt; <br />Chain 7 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/69/1878/0x45a1dd28/2084/No Wait&gt; <br />Extra information that will be dumped at higher levels: <br />[level  4] :   1 node dumps -- [REMOTE_WT] [LEAF] [LEAF_NW] <br />[level  5] :   6 node dumps -- [SINGLE_NODE] [SINGLE_NODE_NW] [IGN_DMP] <br />[level  6] :   1 node dumps -- [NLEAF] <br />[level 10] :  73 node dumps -- [IGN] <br />State of nodes <br />([nodenum]/cnode/sid/sess_srno/session/ospid/state/start/finish/[adjlist]/predecessor): <br />[0]/0/1/1/0x4520da08/3160/IGN/1/2//none <br />[1]/0/2/1/0x45a652ac/2828/IGN/3/4//none <br />[2]/0/3/1/0x4520e378/1924/IGN/5/6//none <br />[3]/0/4/1/0x45a65c1c/3308/IGN/7/8//none <br />[4]/0/5/1/0x4520ece8/156/IGN/9/10//none <br />[5]/0/6/1/0x45a6658c/1884/IGN/11/12//none <br />[6]/0/7/1/0x4520f658/3064/IGN/13/14//none <br />[7]/0/8/1/0x45a66efc/2796/SINGLE_NODE/15/16//none <br />[8]/0/9/18325/0x4520ffc8/2496/IGN/17/18//none <br />[12]/0/13/17667/0x452112a8/1928/IGN/19/20//none <br />[13]/0/14/18771/0x45a68b4c/816/IGN/21/22//none <br />[14]/0/15/9177/0x45211c18/2816/IGN/23/24//none <br />[15]/0/16/16965/0x45a694bc/3108/IGN/25/26//none <br />[16]/0/17/19671/0x45212588/2724/IGN/27/28//none <br />[17]/0/18/25029/0x45a69e2c/3272/IGN/29/30//none <br />[18]/0/19/11291/0x45212ef8/3080/IGN/31/32//none <br />[19]/0/20/25825/0x45a6a79c/3164/IGN/33/34//none <br />[20]/0/21/26486/0x45213868/448/IGN/35/36//none <br />[21]/0/22/21584/0x45a6b10c/2316/IGN/37/38//none <br />[22]/0/23/37646/0x452141d8/3340/IGN/39/40//none <br />[23]/0/24/5364/0x45a6ba7c/1468/IGN/41/42//none <br />[24]/0/25/33844/0x45214b48/2920/IGN/43/44//none <br />[25]/0/26/2234/0x45a6c3ec/3200/SINGLE_NODE_NW/45/46//none <br />[26]/0/27/28532/0x452154b8/2848/IGN/47/48//none <br />[28]/0/29/2338/0x45215e28/672/SINGLE_NODE/49/50//none <br />[29]/0/30/23502/0x45a6d6cc/3224/SINGLE_NODE/51/52//none <br />[31]/0/32/17993/0x45a6e03c/2580/IGN/53/54//none <br />[32]/0/33/21925/0x45217108/2584/IGN/55/56//none <br />[33]/0/34/20841/0x45a6e9ac/1316/IGN/57/58//none <br />[34]/0/35/19307/0x45217a78/3076/IGN/59/60//none <br />[35]/0/36/19269/0x45a6f31c/3092/IGN/61/62//none <br />[36]/0/37/11711/0x452183e8/2908/IGN/63/64//none <br />[37]/0/38/29651/0x45a6fc8c/2156/IGN/65/66//none <br />[38]/0/39/13933/0x45218d58/3332/IGN/67/68//none <br />[39]/0/40/11993/0x45a705fc/3284/NLEAF/69/72/[47]/none <br />[40]/0/41/23604/0x452196c8/3280/IGN/73/74//none <br />[41]/0/42/30238/0x45a70f6c/3312/IGN/75/76//none <br />[43]/0/44/15405/0x45a718dc/2528/IGN/77/78//none <br />[45]/0/46/33109/0x45a7224c/1920/IGN/79/80//none <br />[47]/0/48/20150/0x45a72bbc/3336/LEAF_NW/70/71//39 <br />[48]/0/49/30884/0x4521bc88/2436/IGN/81/82//none <br />[49]/0/50/17150/0x45a7352c/2620/IGN/83/84//none <br />[50]/0/51/24541/0x4521c5f8/2376/IGN/85/86//none <br />[51]/0/52/20825/0x45a73e9c/2924/IGN/87/88//none <br />[52]/0/53/8516/0x4521cf68/764/IGN/89/90//none <br />[53]/0/54/16868/0x45a7480c/3320/IGN/91/92//none <br />[55]/0/56/14359/0x45a7517c/3356/IGN/93/94//none <br />[56]/0/57/32976/0x4521e248/2624/IGN/95/96//none <br />[57]/0/58/30428/0x45a75aec/3212/IGN/97/98//none <br />[58]/0/59/12175/0x4521ebb8/3268/IGN/99/100//none <br />[59]/0/60/15084/0x45a7645c/3032/IGN/101/102//none <br />[60]/0/61/31222/0x4521f528/1912/IGN/103/104//none <br />[61]/0/62/20108/0x45a76dcc/2564/IGN/105/106//none <br />[62]/0/63/32235/0x4521fe98/3376/IGN/107/108//none <br />[63]/0/64/22233/0x45a7773c/1892/SINGLE_NODE_NW/109/110//none <br />[64]/0/65/27250/0x45220808/1948/IGN/111/112//none <br />[65]/0/66/33424/0x45a780ac/3252/IGN/113/114//none <br />[66]/0/67/41625/0x45221178/3360/IGN/115/116//none <br />[67]/0/68/33495/0x45a78a1c/2420/IGN/117/118//none <br />[68]/0/69/1878/0x45221ae8/2084/SINGLE_NODE_NW/119/120//none <br />[70]/0/71/7937/0x45222458/3380/IGN/121/122//none <br />[71]/0/72/18116/0x45a79cfc/1448/IGN/123/124//none <br />[72]/0/73/37603/0x45222dc8/2936/IGN/125/126//none <br />[73]/0/74/23965/0x45a7a66c/2480/IGN/127/128//none <br />[74]/0/75/7067/0x45223738/3300/IGN/129/130//none <br />[75]/0/76/8541/0x45a7afdc/1068/IGN/131/132//none <br />[76]/0/77/9178/0x452240a8/2360/IGN/133/134//none <br />[77]/0/78/25889/0x45a7b94c/2864/IGN/135/136//none <br />[78]/0/79/11006/0x45224a18/2996/IGN/137/138//none <br />[79]/0/80/19934/0x45a7c2bc/3384/IGN/139/140//none <br />[80]/0/81/24305/0x45225388/3136/IGN/141/142//none <br />[81]/0/82/27089/0x45a7cc2c/2744/IGN/143/144//none <br />[82]/0/83/15792/0x45225cf8/3236/IGN/145/146//none <br />[83]/0/84/19887/0x45a7d59c/2788/IGN/147/148//none <br />[86]/0/87/20152/0x45226fd8/2284/IGN/149/150//none <br />[87]/0/88/7617/0x45a7e87c/2776/IGN/151/152//none <br />[88]/0/89/33192/0x45227948/3248/IGN/153/154//none <br />[89]/0/90/22038/0x45a7f1ec/2652/IGN/155/156//none <br />[90]/0/91/31249/0x452282b8/2852/IGN/157/158//none <br />[91]/0/92/15647/0x45a7fb5c/3088/IGN/159/160//none <br />[92]/0/93/3053/0x45228c28/3100/IGN/161/162//none <br />=================<wbr>=== <br />END OF HANG ANALYSIS <br />=================<wbr>=== <br /><br /><br />发现是如下出现问题： <br />Chain 1 : &lt;cnode/sid/sess_srno/proc_ptr/ospid/wait_event&gt; : <br />    &lt;0/48/20150/0x45a2b2e8/3336/No Wait&gt; <br />-- &lt;0/40/11993/0x45a29c68/3284/library cache lock&gt; <br /><br />当前drop的session为40，然后查询48的session，居然是前面做重编译时候未成功退出的一个SESSION <br />然后orakill 这个session后正常drop完成</wbr></wbr></wbr></div>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/jiabao/aggbug/191589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-04-08 23:30 <a href="http://www.blogjava.net/jiabao/archive/2008/04/08/191589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于SQL的执行计划。</title><link>http://www.blogjava.net/jiabao/archive/2008/04/08/191582.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Tue, 08 Apr 2008 15:19:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/archive/2008/04/08/191582.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/191582.html</wfw:comment><comments>http://www.blogjava.net/jiabao/archive/2008/04/08/191582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/191582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/191582.html</trackback:ping><description><![CDATA[
		<p class="style35" style="COLOR: rgb(0,0,204)">C、语句级别<br />这些需要用到Hint,比如: <br />SQL&gt; SELECT /*+ RULE */ a.userid, <br />2 b.name, <br />3 b.depart_name <br />4 FROM tf_f_yhda a, <br />5 tf_f_depart b <br />6 WHERE a.userid=b.userid;<br /></p>
		<p class="style35" style="COLOR: rgb(0,0,204)">
				<strong>4、为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢？如何解决呢 ？<br /></strong>
		</p>
		<p class="style35" style="COLOR: rgb(0,0,204)">A、不走索引大体有以下几个原因 <br />♀你在Instance级别所用的是all_rows的方式 <br />♀你的表的统计信息(最可能的原因) <br />♀你的表很小,上文提到过的,Oracle的优化器认为不值得走索引。 <br /></p>
		<p class="style35" style="COLOR: rgb(0,0,204)">B、解决方法<br />♀可以修改init&lt;SID&gt;.ora中的OPTIMIZER_MODE这个参数,把它改为Rule或Choose,重起数据库。也可以使用4中所提的Hint. <br />♀删除统计信息 <br />SQL&gt;analyze table table_name delete statistics; <br />♀表小不走索引是对的,不用调的。<br /></p>
		<p class="style35" style="COLOR: rgb(0,0,204)">
				<strong>5、其它相关<br /></strong>
		</p>
		<p class="style35" style="COLOR: rgb(0,0,204)">A、如何看一个表或索引是否是统计信息 </p>
		<p class="style35">SQL&gt;SELECT * FROM user_tables <br style="COLOR: rgb(0,0,204)" />2 WHERE table_name=&lt;table_name&gt; <br style="COLOR: rgb(0,0,204)" />3 AND num_rows is not null;<br style="COLOR: rgb(0,0,204)" />SQL&gt;SELECT * FROM user_indexes <br style="COLOR: rgb(0,0,204)" />2 WHERE table_name=&lt;table_name&gt; <br style="COLOR: rgb(0,0,204)" />3 AND num_rows is not null;<br /><br /></p>
		<p class="style35" style="COLOR: rgb(0,0,204)">b、如果我们先用CBO的方式,我们应及时去更新表和索引的统计信息,以免生形不切合实的执行计划。 <br /><br />SQL&gt; ANALYZE TABLE table_name COMPUTE STATISTICS; <br />SQL&gt; ANALYZE INDEX index_name ESTIMATE STATISTICS;<br /></p>
		<p class="style35" style="COLOR: rgb(0,0,204)">具体的ANALYZE语句请参照Oracle8i/9i 的refrence文档。<br />&lt;================end of file“Oracle的优化器(Optimizer)”=====================&gt;<br /></p>
		<p class="style35" style="COLOR: rgb(0,0,204)">
				<br />下面的是我的关于一点执行计划的理解：</p>
		<p class="style35" style="COLOR: rgb(0,0,204)">1。首先要启动trace的选项：<br />set autotrace trace eXPlain<br />如果出现下面的错误：</p>
		<p class="style35" style="COLOR: rgb(0,0,204)">SQL&gt;  set autotrace trace explain<br style="COLOR: rgb(102,102,102)" />SP2-0613: Unable to verify PLAN_TABLE format or existence<br style="COLOR: rgb(102,102,102)" />SP2-0611: Error enabling EXPLAIN report<br /><br />那么要先运行下面的语句：<br /> @?/rdbms/admin/utlxplan.sql；</p>
		<p class="style35" style="COLOR: rgb(0,0,204)">2。分析下面的执行计划：</p>
		<p class="style35" style="COLOR: rgb(0,0,204)">SQL&gt; select ename,dname    from emp, dept   where emp.deptno=dept.deptno     and dept.dname in ('ACCOUNTING','RESEARCH','SALES','OPERATIONS');<br style="COLOR: rgb(102,102,102)" /><br style="COLOR: rgb(102,102,102)" />Execution Plan<br style="COLOR: rgb(102,102,102)" />----------------------------------------------------------<br style="COLOR: rgb(102,102,102)" />   0      SELECT STATEMENT Optimizer=CHOOSE<br style="COLOR: rgb(102,102,102)" />   1    0   NESTED LOOPS<br style="COLOR: rgb(102,102,102)" />   2    1     TABLE Access (FULL) OF 'EMP'<br style="COLOR: rgb(102,102,102)" />   3    1     TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'<br style="COLOR: rgb(102,102,102)" />   4    3       INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)<br /><br />关于前面的两个数字，第一个是状态ID,第二个是父ID。<br />就是如下所示：0--&gt;1--&gt;2<br />                         <br />                         --&gt;3--&gt;4<br />在上图里，0的执行依靠1，1的执行又依赖2和3，2是没有子ID的，所以2最先执行，然后是4，在然后是3；然后2和3的结果传回1。<br />在这个里面0行有个字“Optimizer=CHOOSE”，这个就是上文说的那个oracle的优化器了。<br />还有，看这个“ INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)”，就知道这个语句运行的时候是走INDEX的。</p>
<img src ="http://www.blogjava.net/jiabao/aggbug/191582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-04-08 23:19 <a href="http://www.blogjava.net/jiabao/archive/2008/04/08/191582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>