2013-04-17 47 views
3

背景:積極跟蹤Oracle查詢性能

我們這裏的觀點是呼籲的觀點被調用視圖的數據庫環境...邏輯變得複雜,現在改變爲基本的觀點可能對顯著影響由客戶端應用程序調用頂視圖。

現在,當我們記錄所有的邏輯並確定如何放鬆一切時,開發仍在繼續,性能不斷下降。

目前我會手動在客戶端查詢上運行解釋計劃,並深入調整它。這是一個緩慢而乏味的過程,可能無法對年齡進行檢查。

問題:

我要生成一個報告,列出SQL ID,並列出了實際時間/差異估計行和實際行/緩衝區中/的變化而變化之間的變化相比,計算出的平均讀取在過去一個月。

我通常會手動運行以下腳本,並根據當天的響應對其進行檢查。

ALTER SESSION SET statistics_level=all; 
set linesize 256; 
set pagesize 0; 
set serveroutput off; 

-- QUERY 

SELECT 
    * 
FROM 
    table (DBMS_XPLAN.display_cursor (NULL, NULL, 'ALLSTATS LAST')); 

我想要做的是看到關於自動解釋計劃查詢和插入統計到表中。從那裏我可以運行一個迴歸報告來檢測性能的變化,然後可以提醒開發人員。

我在想這樣的事情很普遍,而不必訴諸於OEM。我找不到任何東西,所以我想知道是否有更常見的方法呢?

回答

4

Oracle爲Automatic Workload Repositiory提供了此功能。 http://docs.oracle.com/cd/E11882_01/server.112/e16638/autostat.htm

雖然我認爲它是企業版之外的額外許可證。它應該可以在沒有額外成本的非生產環境中使用,但請諮詢您的Oracle銷售代表。

+0

IANAL,但如果Oracle允許在非產品環境中未經許可使用AWR,我會感到非常驚訝,因爲它們需要這些環境中其他所有設備的許可證。 – APC

+0

在某些情況下,開發許可證可以毫無用處,但坦率地說甲骨文無論如何都有自己的用戶社區 - 如果您使用標準版,AWR的實際成本可能爲10萬英鎊+,因爲還需要許可EE 。 –

+0

非常好,我會檢查我們是否擁有許可證 - 我正在尋找 –

0

活動會話歷史(ASH)是你在找什麼

select * from v$active_session_history where sql_id = :yoursqlid 
+0

ASH是DIagnostics包的一部分,並且像AWR需要在Enterprise Edition許可證之上另外提供許可證。 – APC

2

這聽起來好像你是在路上重新發明STATSPACK。 Oracle仍將其包含在他們的數據庫中,但不再記錄它,大概是因爲它是免費的,與AWR和ASH不同。您仍然可以在the 9i manual中找到文檔。

+0

乾杯!如果我們沒有AWR,這節省了我一大筆時間。看起來包含我想要的所有功能 - 基線模板/ sql散列報告等。更好的方法與基線進行比較而不是移動平均值。 –