2009-11-03 82 views
1

我有兩個來自v $ sqlarea的查詢。例如查找2個sql查詢之間的匹配

查詢1:select * from employee emp where emp.eid = 5

查詢2:select * from employee v where v.eid = 15

兩者都是完全相同的結構相同。但他們將被分別編譯每次..

我需要匹配這樣的查詢,只能通過別名或綁定變量變化。

oracle中的內置函數utl_match.jaro_winkler_similarity()提供了一個相當不錯的字符串匹配算法。但沒有提供sql透視匹配。還有其他解決方案嗎?

回答

1

有一個script on Asktom會發現這種類型的語句(語句不是使用綁定)。

最後一個查詢的輸出將顯示所有數字和字符串常量已被刪除後共享 池中相同的語句。這些陳述 - 更重要的是它們的計數 - 是潛在的瓶頸。在 除了導致爭奪,他們將是巨大的CPU消費者。

+0

hi vincent, 該腳本將sqls分組。我需要介紹組下的每個這樣的查詢。如果有20個由上述腳本分組的查詢,我需要列出所有這20個查詢。我怎麼做。 – pradeep 2009-11-11 12:34:19

1

Oracle實際上在內部執行此操作,以支持cursor_sharing = similar。我不知道他們在任何地方公開此功能。

0

別名是一個棘手的名字。您可以查找具有相同PLAN_HASH_VALUE的SQL作爲起點。