2010-10-21 113 views
1

慢查詢我需要登錄查詢速度慢,比方說查詢,這需要超過3毫秒以上運行 應當登入 大部分的時間這些查詢SELECT 如何登錄他們的Oracle?如何登錄甲骨文

+0

3ms的?哇,我會記錄所有我的查詢! – 2010-10-21 12:14:34

回答

2

如果您使用的是AWR,這將從ASH記錄下來,您只需要使用OEM或使用手寫SQL來挖掘它。

3ms確實非常快,Oracle在現代硬件上的響應時間是5-20ms,所有事情都考慮在內。

1

在應用程序代碼,你可以做這樣的事情:

v_start_time := dbms_utility.get_time(); 
-- Your query here 
-- ... 
v_end_time := dbms_utility.get_time(); 
if v_end_time - v_start_time > v_max_time then 
    insert into log_table ...; 
end if; 

dbms_utility.get_time返回秒1/100分之時間 - 所以你不能用這個3ms的準確性。您也許可以使用SYSTIMESTAMP。

實際上,我不會記錄任何花費不到半秒的查詢,你幾乎可以記錄所有的事情。

1

如果你想記錄緩慢的查詢,那麼託尼給出的解決方案是最好的解決方案。 但是,如果你不能修改你的應用程序的源代碼,你可以考慮安裝一個sql間諜。我從來沒有做過,但可以輕鬆完成。請注意,它會減慢您的應用程序的速度:如果您正在對生產服務器進行故障排查,那麼這不是一個好的解決方案。

恕我直言,最好的解決辦法不是記錄緩慢的查詢,而是找到它們(差別很小......))。 Oracle提供了大量工具來查找此類信息:

  • AWR報告是我的首選工具。你會發現一個名爲「按時間排序的SQL」的段落,它基本上是你正在尋找的
  • gridcontrol也給你這個信息,但我不知道這個工具太多。這是簡單的使用比AWR報告
  • ,如果你不能夠訪問這些工具之一,你可以嘗試簡單的啓動在此計算器等崗位給出的SQL: Top 5 time-consuming SQL queries in Oracle