动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.Redhat 9安装升级oracle 9iR2.
.迅速安装Linux与Oracle数据库步骤.
.一般应用程序的oracle配置.
.Oracle的口令管理.
.Oracle9i进程内存占用问题解决方.
.如何彻底删除Oracle(转载).
.改数据库的启动方式为archive归档.
.使用RMAN进行基于时间点的不完全.
.Oracle9iR2在红帽高级服务器版2..
.Oracle10g中新型层次查询选项简介.
.Oracle函数列表速查.
.拥有归档日志 如何恢复一个丢失的.
.如何执行实例程序.
.Oracle 9i 在Linux 下的安装 (下).
.什么是 Linux.
.创建访问非Oracle文件的外部表格.
.怎样知道自己的机器上有哪些服务.
.本地分区索引如何确定表空间(1).
.堆与栈的区别.
.讲解Oracle数据库自定义异常的使.

Oracle 10G 最佳20位新特性:等待界面

发表日期:2008-2-9 |



  10g 等待界面为还没有被 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          :namemode
  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,这表示它是一个需要您注重的等待。
  
  该列突出显示那些能够证实与您的调整最相关的少数几条记录。例如,您可以使用如下查询来获取事件的等待会话。
  
  select 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
  在这,您可以看到几个事件(如 Queue Monitor Wait 和 JobQueue Slave)被明确地归为 Idle 事件。
您可以将它们作为非阻塞等待消除掉;不过,有时这些“空闲”事件可能指示一个内在的问题。例如,与 SQL*Net 相关的事件可能指示高网络延迟(除其他因素外)。
  
  另一件要注重的重要的事情是,WAIT_TIME 的值为 -2。某些平台(如 Windows)不支持快速计时机制。假如在这些平台上没有设定初始化参数 TIMED_STATISTICS,那么将无法获得准确的计时统计数据。在这种情况下,在 Oracle9i 中,该列将显示一个非常大的数字,这使问题变得更加不清楚。在 10g 中,值 -2 指示这种情况 — 平台不支持快速定时机制并且没有设定 TIMED_STATISTICS。(对于本文剩下的部分,我们将假定存在一个快速计时机制。)
  
  会话也显示等待
  记得长期以来一直需要将 V$SESSION_WAIT 与 V$SESSION 结合使用以获得有关会话的其他具体信息吗?嗯,这已经成为历史了。在 10g 中,V$SESSION 视图还显示由 V$SESSION_WAIT 显示的等待。下面是 V$SESSION 视图其余的列,这些列显示了会话当前等待的等待事件。
  
  EVENT#           NUMBER
  EVENT           VARCHAR2(64)
  P1TEXT           VARCHAR2(64)
  P1             NUMBER
  P1RAW           RAW(4)
  P2TEXT           VARCHAR2(64)
  P2             NUMBER
  P2RAW           RAW(4)
  P3TEXT           VARCHAR2(64)
  P3             NUMBER
  P3RAW           RAW(4)
  WAIT_CLASS_ID       NUMBER
  WAIT_CLASS#        NUMBER
  WAIT_CLASS         VARCHAR2(64)
  WAIT_TIME         NUMBER
  SECONDS_IN_WAIT      NUMBER
  STATE           VARCHAR2(19)
  这些列与 V$SESSION_WAIT 中的那些列相同,且显示相同的信息,从而不再需要在那个视图中查看它们了。因此,对于等待任意事件的任意会话,您仅需要查看一个视图。
  
  让我们回到原来的问题:SID 为 269 的会话正等待事件 enq:TX — row lock contention,指示它正等待被另一个会话占用的锁。要诊断该问题,您必须识别占用锁的那个会话。但您如何才能做到这一点?
  
  在 Oracle9i 及更低版本中,您可能得编写复杂(和极耗资源)的查询来获得占用锁的会话的 SID。而在 10g 中,您所要做的就是执行以下查询:
  
  select BLOCKING_SESSION_STATUS, BLOCKING_SESSION
  from v$session
  where sid = 269
  
  BLOCKING_SE BLOCKING_SESSION
  ----------- ----------------
  VALID          265
  
  找到了:SID 为 265 的会话阻塞了会话 269。还能更轻易吗?
  
  有多少等待?
  用户仍然在缠着您,因为用户的问题仍然没有得到满足的解答。为什么用户的会话花了这么长时间才完成?您可以执行以下命令来找出原因:
  
  select * from v$session_wait_class where sid = 269;
  
  输出返回为:
  
  SID SERIAL# WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS  TOTAL_WAITS TIME_WAITED
  ---- ------- ------------- ----------- ------------- ----------- -----------
  269  1106  4217450380  1 Application   873   261537
  269  1106  3290255840  2 Configuration  4      4
  269  1106  3386400367  5 Commit      1      0
  269  1106  2723168908  6 Idle       15   148408
  269  1106  2000153315  7 Network     15      0
  269  1106  1740759767  8 User I/O     26      1
  注重这里有关会话等待的大量信息。现在您知道了,该会话已经为与应用程序相关的等待等待了 873 次(共 261,537 厘秒),在与网络相关的事件中等待了 15 次等等。
  
  以此类推,您可以使用以下查询来查看系统范围的等待类的统计数据。同样,时间是以厘秒为单位的。
  
  select * from v$system_wait_class;
  
  WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS  TOTAL_WAITS TIME_WAITED
  ------------- ----------- ------------- ----------- -----------
  1893977003   0 Other        2483    18108
  4217450380   1 Application     1352   386101
  3290255840   2 Configuration     82     230
  3875070507   4 Concurrency      80     395
  33864003
上一篇:关于fast_start_io_target的一点看法 人气:334
下一篇:谁能讲讲WEB发布中使报表异步运行的方式 人气:353
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵