Oracle10g数据库最佳新特性:等待界面

文章作者 100test 发表时间 2007:03:14 14:03:43
来源 100Test.Com百考试题网


Oracle10g等待界面为还没有被ADDM 捕获的即时性能问题提供了有价值的诊断数据。

“数据库太慢了!”

这句话通常出自一位严格的用户之口。如果您和我一样,那么在您的 DBA 生涯中您肯定无数次听到过这句话。

那么,您又怎样解决该问题呢?除了对用户置之不理之外(这是我们大多数人都不敢奢望的想法),您可能要做的第一件事就是查看是否有任何会话在等待数据库内部或外部的任何事件。

Oracle 提供了一个简单但一流的机制来达到此目的:V$SESSION_WAIT 视图。该视图显示了有助于您的诊断的各种信息,如一个会话正在等待或已经等待的事件,以及等待了多长时间和多少次。例如,如果会话在等待事件 "db file sequential read",列 P1 和 P2 将显示会话正在等待的块的 file_id 和 block_id。

对于大多数等待事件而言,这个视图足够了,但它还不是一个强健的调整工具,之所以如此说,至少是因为以下两个重要原因:

该视图是当前情况的一个快照。当等待不再存在时,会话先前出现的那些等待的历史也将消失,从而使得事后诊断非常困难。V$SESSION_EVENT 提供了累积的但不是非常详细的数据。 V$SESSION_WAIT 包含了只与等待事件相关的信息;要获得所有其它的相关信息(如用户 ID 和终端),您必须将它和 V$SESSION 视图结合使用。

在 Oracle 数据库 10g 中,等待界面经过了彻底的重新设计,从而只需更少的 DBA 干预即可提供更多的信息。在本文中,我们将浏览这些新的特性,并了解它们如何帮助我们诊断性能问题。对于大多数性能问题,您可以从自动数据库诊断管理器 (ADDM) 中获得扩展分析,但对于还没有被 ADDM 捕获的即时问题,等待界面将提供有价值的诊断数据。

增强的会话等待

第一个增强涉及到 V$SESSION_WAIT 本身。这一点通过示例可以很好地说明。

假定您的用户抱怨会话挂起了。您查明了该会话的 SID,并在 V$SESSION_WAIT 视图中选中了该 SID 的记录。输出显示如下。

  

  SID           : 269

  SEQ#           : 56

  EVENT          :enq:TX - row lock contention

  P1TEXT          :name|mode

  P1            : 1415053318

  P1RAW          : 54580006

  P2TEXT          :usn<<16 | slot

  P2            : 327681

  P2RAW          : 00050001

  P3TEXT          :sequence

  P3            : 43

  P3RAW          :0000002B

  WAIT_CLASS_ID      : 4217450380

  WAIT_CLASS#       : 1

  WAIT_CLASS        : Application

  WAIT_TIME        : -2

  SECONDS_IN_WAIT     : 0

  STATE          :WAITED UNKNOWN TIME

 
 

注意左边显示的列;在这些列中,WAIT_CLASS_ID、WAIT_CLASS# 和 WAIT_CLASS 是 10g 中新增的列。列 WAIT_CLASS 指示等待的类型,必须将其作为有效的等待事件解决或者作为空闲的等待事件退出。在上面的例子中,等待类显示为 Application,这表示它是一个需要您注意的等待。

该列突出显示那些能够证明与您的调整最相关的少数几条记录。例如,您可以使用如下查询来获取事件的等待会话。

  

  0select wait_class, event, sid, state, wait_time, seconds_in_wait

  from v$session_wait

  order by wait_class, event, sid

  /
  

下面是一个样例输出:

  

WAIT_CLASS EVENT            SID STATE   WAIT_TIME SECONDS_IN_WAIT

---------- -------------------- ---------- ------------------- ---------- ------

Application enq:TX -          269 WAITING       0  73

row lock contention    

Idle    Queue Monitor Wait     270 WAITING       0  40

Idle    SQL*Net message from client 265 WAITING      0  73

Idle    jobq slave wait       259 WAITING      0  8485

Idle    pmon timer         280 WAITING      0  73

Idle    rdbms ipc message      267 WAITING      0  184770

Idle    wakeup time manager     268 WAITING      0  40

Network   SQL*Net message to client  272 WAITED SHORT TIME -1  0


相关文章


如何判断一个字符串是否为数字或日期?
Oracle容灾复制解决方案SharePlex
有关Oracle中虚拟专用数据库的探讨
Oracle数据库中物化视图的原理剖析
Oracle10g数据库最佳新特性:等待界面
用NetBackup恢复Oracle数据库到异机
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛