2017-05-31 95 views
0

在我們基於Oracle的產品數據庫上,我想查看被觸發的查詢數量。Oracle的查詢執行計數

背後的原因是,我們希望看到我們製作的網絡電話的數量以及防火牆如果將其移至雲系統時可能產生的影響。

select sum(EXECUTIONS) 
from v$sql 
where last_active_time >= trunc(sysdate)-2 
and (parsing_schema_name like '%\_RW%' escape '\' or parsing_schema_name = 'TEMP_USER') 
and module not in ('DBMS_SCHEDULER') 
and sql_text not like '%v$sql%'; 

上面的查詢看起來不是很可靠,因爲SQL被推出內存,這是上面的返回。

有什麼方法可以從數據庫本身獲取我們在Oracle數據庫上進行的調用次數嗎?從所有應用程序登錄目前不是一個可行的選擇。

謝謝!

+0

您是否在使用企業數據庫?你有AWR嗎? – alexgibbs

+0

我們正在使用企業數據庫,我們有AWR。 – instanceOfObject

+2

感謝instanceOfObject。很高興聽到。我想知道AWR視圖是否可能達到您的目標 - 例如,'DBA_HIST_SQLSTAT'包含許多關於SQL工作負載的數據(例如'EXECUTIONS_DELTA'),最近和累積的基礎上,每個SQL語句每個模式。負載,cpu等在那裏,可以'總結'等,並綁定到'parsing_schema_name'。通過選擇不同的'DBA_HIST_SNAPSHOT',可以在一天中的不同時間查看工作負載。我想知道這是否是您要查找的數據? – alexgibbs

回答

0

我想補充的V $ SQL視圖的一些信息:

V $ SQLAREA具有最低的保留,並顯示在內存中,解析當前的SQL,並準備執行。

V $ SQL具有更好的保留性,並且在查詢執行後每5秒更新一次。

V $ SQLSTATS具有最好的保留,並且即使在遊標超出共享池之後仍保留SQL。

您不希望在繁忙的生產數據庫上頻繁運行這些查詢,因爲它們可能會添加到共享池碎片中。

1

「我們希望看到的網絡調用我們做和數量的影響,防火牆可以使,如果我們將其移動到雲系統」

執行的SQL語句的數量只是一帶而過相關網絡流量。比較select * from dualselect * from humongous_table的影響。

更好的方法可能是與您的網絡管理員交談,看看他們可以告訴您有關應用程序生成的流量。或者下載Wireshark並親自看看(提供您的安全團隊很酷)。