Oracle 10g数据库中如何分析响应时间 (3)

Oracle 10g数据库中如何分析响应时间 (3)

 

 

 

SQL语句响应时间分析

在Oracle9i数据库中查看SQL语句的响应时间就变得比较容易了,现在在Oracle10g中,DBA们拥有更多的工具可以帮助他们跟踪效率低下的数据库代码。以前可以用来查询的视图是V$SQLAREA,从Oracle9i开始,这个视图增加了ELAPSED_TIME和CPU_TIME两个列,这极大的有助于去确定实际用户的SQL语句的执行经历。(如果除以执行的次数列EXECUTIONS,那么将得到平均每次执行这个SQL语句所用的平均时间)在Oracle10g数据库中,V$SQLAREA视图中增加了6个新的和等待以及时间相关的列:

APPLICATION_WAIT_TIME

     CONCURRENCY_WAIT_TIME

     CLUSTER_WAIT_TIME

     USER_IO_WAIT_TIME

     PLSQL_EXEC_TIME

     JAVA_EXEC_TIME

这些新的列有助于确定很多信息,例如:一个存储过程中花费在PL/SQL代码和标准SQL执行上的时间的对比,以及一个SQL语句经历的任何详细的用户I/O等待。例如:下面的SQL语句能帮助找到前5位用户I/O等待最高的SQL语句:

select * from

    (select sql_text,

    sql_id,

    elapsed_time,

    cpu_time,

    user_io_wait_time

    from sys.v_$sqlarea

    order by 5 desc)

    where rownum < 6;

    SQL_TEXT SQL_ID ELAPSED_TIME CPU_TIME USER_IO_WAIT_TIME

    DECLARE job BINARY_INTEGER := :job; 
    next_date DATE := :mydate; broken BOOLEAN : 
    6gvch1xu9ca3g 11077912 747091 8593479

    select /*+ index(idl_ub1$ i_idl_ub11) +*/ piece#,
    length,piece from idl_ub1
    $ wher cvn54b7yz0s8u 6455976 220128 6427409

    select s.synonym_name object_name, 
   o.object_type from sys.all_synonyms s, 
   s fqmpmkfr6pqyk 11814078 6958760 3189450

    select /*+ rule */ bucket, endpoint, col#, 
    epvalue from histgrm$ where obj#=:1 a db78fxqxwxt7r 
    2737680 193937 2689611

    select /*+ index(idl_ub2$ i_idl_ub21) +*/ piece#,
    length,piece from idl_ub2$ 
    where 39m4sx9k63ba2 2322664 108100 2307700

当然,获取最消耗时间或者等待时间最长的SQL语句非常不错,但是同时也需要抓住其要点——在V$ACTIVE_SESSION_HISTORY视图中又一次出现的SQL语句。通过这个视图,能够找出具体什么等待时间延迟了SQL语句执行,连同实际的文件,对象以及阻塞的对象导致等待。

例如:设想已经找到一个特别的SQL语句,看上去在用户I/O等待时间方面极端的严重,那么可以执行下面的查询来得到等待时间中各个单独的等待事件,等待的文件,等待的对象:

select event,

    time_waited,

    owner,

    object_name,

    current_file#,

    current_block#

    from sys.v_$active_session_history a,

    sys.dba_objects b

    where sql_id = '6gvch1xu9ca3g' and

    a.current_obj# = b.object_id and

    time_waited <> 0;

    EVENT TIME_WAITED OWNER OBJECT_NAME file block

    db file sequential read 27665 SYSMAN MGMT_METRICS_1HOUR_PK 3 29438

    db file sequential read 3985 SYSMAN SEVERITY_PRIMARY_KEY 3 52877

当然,也可以通过使用V$ACTIVE_SESSION_HISTORY视图中的历史数据的方式来限制一段特殊时间内的没有优化的SQL语句。问题在于Oracle10g数据库通过简化的数据字典视图把SQL语句的响应时间分析变得非常的简单,比起以前运用消耗时间的trace方法来说。

总结

DBA们和性能分析专家们管理Oracle10g数据库的性能时会发现在最新的Oracle旗舰数据库中已经把许多的响应时间数据做成了动态性能视图。这些统计信息将有助于迅速找出大型复杂数据库中的性能瓶颈所在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值