2011-07-21 54 views
1

我是一名Sybase DBA /性能優化工程師,被要求查看Oracle上一些SQL查詢的性能,看看問題是什麼以及它爲什麼很慢。是否有類似於Sybase的showplan?我需要獲取物理I/O和邏輯I/O的數量,查詢或存儲過程使用的表掃描和索引。Oracle是否有辦法顯示像Sybase'showplan'這樣的查詢執行計劃?

我曾經使用Embarcadero,我沒有了。

+0

把你的問題放在標題中;不要在標題中向我們介紹你自己。 –

回答

4

解釋計劃和/或AutoTrace是Oracle Equivalent,它將爲您提供Oracle在執行查詢時可能使用的執行計劃。

在sqlplus可以做到這一點..

SQL> set autotrace traceonly; 

SQL> select * from scott.emp; 

14 rows selected. 

Execution Plan 
---------------------------------------------------------- 
Plan hash value: 3956160932 

-------------------------------------------------------------------------- 
| Id | Operation   | Name | Rows | Bytes | Cost (%CPU)| Time  | 
-------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT |  | 14 | 518 |  3 (0)| 00:00:01 | 
| 1 | TABLE ACCESS FULL| EMP | 14 | 518 |  3 (0)| 00:00:01 | 
-------------------------------------------------------------------------- 


Statistics 
---------------------------------------------------------- 
      0 recursive calls 
      0 db block gets 
      8 consistent gets 
      0 physical reads 
      0 redo size 
     1415 bytes sent via SQL*Net to client 
     381 bytes received via SQL*Net from client 
      2 SQL*Net roundtrips to/from client 
      0 sorts (memory) 
      0 sorts (disk) 
     14 rows processed 

以下是根據詳細和具體方案的水平可用的各種其它選項..

http://www.oracle-base.com/articles/10g/SQLTrace10046TrcsessAndTkprof10g.php

+0

有沒有可以閱讀的地方?任何樣品?就像我想顯示的SELECT * FROM a,b where a.field = b.field的計劃。跟蹤和查詢計劃 –

+0

Saro - 在我看到您的評論之前更新了我的帖子:)。如果你想追蹤整個會話(可能是你完成一個程序的執行),請看下面我提供的鏈接。 –

+0

我收到此消息「Traceonly選項目前不支持」。對此有何想法? –

1

我不是當然,如果所有這些都可用,但Oracle SQL Developer可以讓你查詢並點擊解釋計劃查看執行計劃。這包括它將要執行的操作以及它正在使用的所有索引。

這是一個免費的工具,所以試試看。 :)

+0

我有SQL開發人員。我不知道你可以做到這一點。那麼,我該如何做這個exaclty。放置我的代碼並推送底部/選項?謝謝 –

+0

將您的查詢放入工作表頂部的命令窗口中。其中一個按鈕是解釋計劃。在我的副本中,它是工作表上的第四個按鈕。 – Tridus

+0

此外 - 您可能想使用我包含的鏈接來獲取當前版本。第3版(目前的版本)比甲骨文附帶的一些版本的客戶端版本更具特色。 – Tridus

相關問題