2009-02-18 212 views
0

我的Oracle數據庫中有一個視圖執行時間過長。聲明運行時,似乎不會停止。Oracle數據庫10g查看性能

有無論如何,我們可以驗證此視圖的性能,或者我們如何檢查以查看聲明會話是否「掛起」?

感謝, N2EE

UPDATE

我意識到這個問題是與視圖的基礎查詢。 感謝Edwin的autotrace修復。

回答

5

您的查詢執行很可能非常緩慢。

您可以看到如何使用explain plan在數據庫中執行查詢。

如果您有SQL * Plus中,你可以做到這一點很容易與下面的語句:

set autotrace traceonly 

然後在鍵入查詢,你會得到你這樣的查詢統計:

SQL> set autotrace traceonly 
SQL> select * from o_drops; 

4461 rows selected. 


Execution Plan 
---------------------------------------------------------- 
Plan hash value: 3820245448 

----------------------------------------------------------------------------- 
| Id | Operation   | Name | Rows | Bytes | Cost (%CPU)| Time  | 
----------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT |   | 4287 | 280K| 11 (10)| 00:00:01 | 
| 1 | TABLE ACCESS FULL| O_DROPS | 4287 | 280K| 11 (10)| 00:00:01 | 
----------------------------------------------------------------------------- 


Statistics 
---------------------------------------------------------- 
      1 recursive calls 
      0 db block gets 
     333 consistent gets 
     48 physical reads 
      0 redo size 
    337057 bytes sent via SQL*Net to client 
     2316 bytes received via SQL*Net from client 
     299 SQL*Net roundtrips to/from client 
      0 sorts (memory) 
      0 sorts (disk) 
     4461 rows processed 

如果其中一個資源非常高,可能會重寫查詢和/或將索引添加到您正在使用的 表中。

1

您需要查看構成視圖的查詢的性能。最好的方法是對視圖使用的sql語句做一個解釋計劃。這將表明它是否執行全表掃描或其他一些不太理想的行爲。調整查詢,你的視圖應該運行得更好。

1

你說的是創建或替換現有視圖(即執行CREATE OR REPLACE VIEW ...語句)還是從視圖中選擇。

在前一種情況下,可能是某個會話鎖定了它。例如,如果有人正在通過視圖更新或刪除,您將無法替換它。根據您的版本,您可以通過選中v $ session的'BLOCKING_SESSION'列來查看阻止程序。

在後一種情況下,它不是一個緩慢的視圖,而是一個查詢。這個觀點非常不相關。檢查解釋計劃(最好使用DBMS_XPLAN.DISPLAY_CURSOR和來自v $ sql的sql_id)並查看它的內容。 v $ session_longops可能會給出一個指針。

0

假設問題是基礎查詢,性能問題可能是因爲所使用的表尚未分析。
您可以使用DBMS_STATS包來更新Oracle有關表的信息,然後查看查詢速度是否提高。

0

基於快照ID生成AWR報告

有兩個用於創建AWR報告的sql腳本。 1. awrrpt.sql 如果我們只有一個Oracle數據庫,那麼運行awrrpt.sql sql腳本。

  1. awrrpti。sql 如果我們有多個Oracle實例(如RAC),那麼運行awrrpti.sql腳本,以便我們可以創建特定的awr報告實例。 AWR報告SQL腳本的

位置 $ ORACLE_HOME/RDBMS /管理