2009-02-18 165 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 /管理