设为首页 收藏本站
查看: 546|回复: 0

[经验分享] oracle ash性能报告的使用方法

[复制链接]

尚未签到

发表于 2015-12-18 09:15:01 | 显示全部楼层 |阅读模式
活动会话历史报告  活动会话历史
  v$active_session_history视图提供了在实例级别抽取会话活动信息.活动会话每分钟会被抽样一次且被存储在sga中的循环缓冲区中.任何被连接到数据库且正等待一个不属于空闲等待事件的会话会被考虑是一个活动的会话.每个会话抽样都是一组行数据且通过v$active_session_history视图来返回每个被抽样活动会话的行数据,返回最新被抽样会话的第一行数据.因为活动会话抽样是存储在sga中的循环缓冲区中,系统活动越大的,活动时间越少会话的可以被存储在循环缓冲区中.这意味着在这期间被抽样的每个会话会出现在v$视图中或者会话活动的时间会在v$视图中被显示,这完全依赖于数据库活动情况.
  
  
  作为awr快照的一部分,v$active_session_history视图的内容也会被刷新到磁盘.因为当有繁忙的系统活动时v$视图的内容会变得非常大,只有会一部分会话被抽样并写到磁盘.通过只捕获活动的会话,那么只会生成正在被执行的会话的相关的一组数据而不是系统中所有会话的数据.使用ash能让你对v$active_session_history视图中的当前数据和dba_hist_active_sess_history视图中的历史数据进行检查和性能分析,通常可能避免需要重放工作量来收集额外的性能跟踪信息.ash包含了被捕获的每一个sql语句的执行计划.可以使用这个信息来识别哪部分sql执行消耗了大部分的sql执行时间.ash报告展现了以下各种信息:
  sql语句的sql标识符
  sql执行计划标识符和用于执行sql语句的sql执行计划的哈希值
  sql执行计划信息
  对象数,文件数和块数
  等待事件标识符和参数
  会话标识符和会话序列号
  模块和操作名
  服务哈希标识符
  用户组标识符
  
  
  
  
  使用活动会话历史报告来执行以下性能分析:
  短暂的性能问题通常只会持续几分钟.
  通过各种维度或者象时间,会话,模块,操作或sql_id的组合来进行有范围或针对性的性能分析
  
  
  短暂的性能问题是短暂的不在出现在addm分析中.addm试图报告指出在分析周期内最对DB时间最有影响的性能问题.如果一个特定的问题持续非常短的时间那么它可的严重性可能会被平均化或者由于其它的性能问题使其影响最小化.然而这个问题可能在addm中不会出现,一个性能问题是否会被addm捕获依赖于这个问题的持续时间与生成awr快照的时间间隔.
  
  
  如果一个性能问题在两个awr快照生成的时间间隔内持续了很长时间那么这个问题会被addm捕获.例如如果awr快照时间被设置为一个小时,一个性能问题持续了30分钟那么这个问题不会被认为是一个短暂的性能问题因为它在快照时间间隔内持续很长时间它会被addm捕获.然而如果一个性能问题仅仅持续2分钟可能会被认为是一个短暂的性能问题因为在快照时间间隔内它只持续了很短的时间所以这个问题不会出现在addm报告中.例如如果你被告知系统在上午10:00到上午10:10之间很慢,但addm分析的时间间隔是从上午10:00到上午11:00.那么在addm报告中不会显示这个问题.
  
  
  ASH报告分成多个部分.HTML报告包括能快速导航到不同部分的链接.
  
  
  
  
  生成一个ash报告
  ashrpt.sql脚本用来生成一个html或text格式的报告来显示特定持续期间的ash信息.为了生成一个ash报告执行以下操作:
  1.在sql提示符处输入:
  @$ORACLE_HOME/rdbms/admin/ashrpt.sql
  2.指定你想生成的报告格式html或text:
  Enter value for report_type: text
  在这个例子中选择生成text格式的ash报告
  3.指定在ash报告开始时间:
  Enter value for begin_time: -10
  在这个例子中开始时间是当前时间之前的10分钟
  4.输入这个报告持续的时间如果你想捕获从指定的开始时间到当前时间的之间的ash信息:
  Enter value for duration:
  在这个例子中缺省是持续到当前的系统时间减去指定的开始时间的结果就是持续的时间.
  5.输入报告名或使用缺省的报告名:
  Enter value for report_name: 
  Using the report name ashrpt_1_0310_0131.txt
  在这个例子中使用缺省的ash名ashrpt_1_0310_0131被生成.这个报告会从当前系统时间之前的10分钟开始收集ash信息一直持续
  到当前时间结束.
  
  
  对一个指定的数据库实例生成ash报告
  ashrpti.sql脚本用来对一个指定的数据库和实例生成一个html或text格式的报告来显示特定持续期间的ash信息.这个报告在设置收集ash信息时间之前允许你指定数据库和实例,为了生成一个ash报告执行以下操作:
  1.在sql提示符处输入:
  @$ORACLE_HOME/rdbms/admin/ashrpti.sql
  2.指定你想生成的报告格式html或text:
  Enter value for report_type: html
  在这个例子中选择生成html格式的ash报告
  3.列出了可用的数据库ID和实例号:
  Instances in this Workload Repository schema
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  DB>  ----------- -------- ------------ ------------ ------------
  3349173529        1 cs           cs            cs1
  3349173529        1 test1        test1         test1
  输入数据库标识符(dbid)和实例号(inst_num):
  Enter value for dbid: 3349173529

  Using 3349173529 for database>  Enter value for inst_num: 1
  
  
  4.这一步仅适用于对一个活动的data guard物理备库实例收集ash报告,如果不是这种情况,可以跳过这一步.为了对一个物理备库生成一个ash报告,这个备库实例必需是以只读方式打开.这个ash报告包含了主数据库存储在磁盘中的ash信息和备数据库内存中的ash信息.指定对于主数据库或备数据库是否使用数据抽样来生成报告:
  You are running ASH report on a Standby database.
  To generate the report over data sampled on the Primary database, enter 'P'.
  Defaults to 'S' - data sampled in the Standby database.
  Enter value for stdbyflag:
  Using Primary (P) or Standby (S): S
  在这个例子中选择了缺省值S备库
  
  
  5.指定在ash报告开始时间:
  Enter value for begin_time: -10
  在这个例子中开始时间是当前时间之前的10分钟
  6.输入这个报告持续的时间如果你想捕获从指定的开始时间到当前时间的之间的ash信息:
  Enter value for duration:
  在这个例子中缺省是持续到当前的系统时间减去指定的开始时间的结果就是持续的时间.
  7.以秒为单位指定slot_width
  Enter value for slot_width: 
  在这个例子中使用缺省值
  8.根据后续提示的说明解释输入报告以下目标信息的值:
  target_session_id
  target_sql_id
  target_wait_class
  target_service_hash
  target_module_name
  target_action_name
  target_client_id
  target_plsql_entry
  
  
  9.输入报告名或使用缺省的报告名:
  Enter value for report_name: 
  Using the report name ashrpt_1_0310_0131.txt
  在这个例子中使用缺省的ash名ashrpt_1_0310_0131被生成.这个报告会对数据库ID为3349173529的数据库实例从当前系统时间之前的10分钟开始收集ash信息一直持续到当前时间结束.
  
  
  
  
  对oracle rac生成ash报告
  ashrpti.sql脚本用来对oracle rac环境中的指定的数据库和实例生成一个html或text格式的报告来显示特定持续期间的ash信息只有被写入磁盘的ash数据才会被用来生成ash报告.这个报告只会对在dba_hist_active_sess_history表中在过去10分钟之内找到的ash进行抽样.为了在oracle rac环境中生成ash报告执行以下操作:
  1.在sql提示符处输入:
  @$ORACLE_HOME/rdbms/admin/ashrpti.sql
  2.指定你想生成的报告格式html或text:
  Enter value for report_type: html
  在这个例子中选择生成html格式的ash报告
  3.列出了可用的数据库ID和实例号:
  Instances in this Workload Repository schema
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  DB>  ----------- -------- ------------ ------------ ------------
  3349173529        1 cs           cs           cs1
  3349173529        1 test1        test1        test1
  3349173529        2 test2        test2        test2
  3349173529        3 test3        test3        test3
  3349173529        4 test4        test4        test4
  输入数据库标识符(dbid)和实例号(inst_num):
  Enter value for dbid: 3349173529

  Using database>  Enter instance numbers. Enter 'ALL' for all instances in an Oracle
  RAC cluster or explicitly specify list of instances (e.g., 1,2,3).
  Defaults to current instance.
  Enter value for inst_num: ALL
  Using instance number(s): ALL
  
  
  4.指定在ash报告开始时间:
  Enter value for begin_time: -1:10
  在这个例子中开始时间是当前时间之前的1小时10分钟
  5.输入这个报告持续的时间如果你想捕获从指定的开始时间到当前时间的之间的ash信息:
  Enter value for duration: 10
  在这个例子中持续的时间是10分钟.
  6.以秒为单位指定slot_width
  Enter value for slot_width: 
  在这个例子中使用缺省值
  7.根据后续提示的说明解释输入报告以下目标信息的值:
  target_session_id
  target_sql_id
  target_wait_class
  target_service_hash
  target_module_name
  target_action_name
  target_client_id
  target_plsql_entry
  
  
  8.输入报告名或使用缺省的报告名:
  Enter value for report_name: 
  Using the report name ashrpt_1_0310_0131.txt
  在这个例子中使用缺省的ash名ashrpt_1_0310_0131被生成.这个报告会对数据库ID为3349173529的数据库的所有实例从当前系统时间之前的1小时10分钟开始收集ash信息一直持续到当前时间之前的1小时为止结束.
  
  
  
  
  使用ash报告
  在生成ash报告之后,可以重新检索哪些标识为短暂性能问题的信息.ash报告的内容分成了以下几个部分:
  top events
  load profile
  top sql
  top pl/sql
  top java
  top sessions
  to objects/files/latches
  activity over time
  
  
  
  
  top evnets
  顶级等待事件部分描述了被抽样会话活动中由用户,后台等产生的顶级等待事件,使用这些信息可以识别是哪些等待事件造成了短暂的性能问题.顶级等待事件包含以下部分:
  顶级用户事件
  这部分信息显示了在抽样会话活动中占很高百分比的用户进程等待事件.
  
  
  顶级后以事件
  这部分信息显示了在抽样会话活动中占很高百分比的后台进程等待事件.
  
  
  顶级等待事件参数P1/P2/P3
  这部分信息显示了在抽样会话活动中占很高百分比的等待事件的参数值它通过总的等待时间(%Event)百分比进行排序后被显示.对于每一个等待事件p1,p2,p3的值与等待事件参数parameter 1,parameter 2,parameter 3这三个列相关联.
  
  
  load profile
  load profile部分描述了在抽样的会话活动中的负载分析.使用这部分信息可以识别造成短暂性能问题的服务,客户或sql命令类型.负载概要部分包含以下部分信息:
  top service/module
  这部分信息显示了在抽样会话活动中占很高百分比的服务和模块信息
  
  

  top client>  这部分信息显示了在抽样会话活动中占很高百分比的客户端的id信息它是数据库会话中应用程序的特定标识符
  
  
  top sql command types
  这部分信息显示了在抽样会话活动中占很高百分比的sql命令类型比如select或update
  
  
  top phases of execution
  这部分信息显示了在抽样会话活动中占很高百分比的执行步骤比如sql,pl/sql和java的编译和执行操作.
  
  
  top sql
  顶级sql部分描述了抽样会话活动中的顶级sql语句,使用这部分信息可以识别出造成短暂性能问题的高负载sql语句
  顶级sql部分包含以下信息:
  top sql with top events
  top sql with top row sources
  top sql using literals
  top parsing module/action
  complete list of sql text
  
  
  top sql with top events
  这部分信息显示了在抽样会话活动中占总的等待事件很高百分比的sql语句.
  
  
  top sql with top row sources
  这部分信息显示了在抽样会话活动中占很高百分比的sql语句和它们的详细执行计划信息.通过这部分信息可以识别出哪部分的sql执行消耗了大量的sql执行时间
  
  
  top sql using literals
  这部分信息显示了在抽样会话活动中占很高百分比的使用literal值的sql语句.可以重新检查这部分sql语句看是否能使用绑定变量来代替literal值.
  
  
  top parsing module/action
  这部分信息显示了在抽样会话活动中当执行解析sql语句时占很高百分比的模块和操作
  
  
  complete list of sql text
  这部分信息显示了顶级sql语句的完整的文本内容
  
  
  top pl/sql
  这部分信息显示了在抽样会话活动中占很高百分比的pl/sql过程.
  
  
  top java
  这部分信息显示了在抽样会话活动中占很高百分比的java程序
  
  
  top sessions
  这部分信息描述了会话正在等待的一个特定等待事件.使用这部分信息来识别在抽样会话活动中占很高百分比的会话它们可能是造成短暂性能问题的原因.top sessions部分包含以下信息:
  
  
  top sessions
  这部分信息显示了在抽样会话活动中占很高百分比的等待会话
  
  
  top blocking sessions
  这部分信息显示了在抽样会话活动中占很高百分比的阻塞会话
  
  
  top sessions running pqs
  这部分信息显示了哪些在抽样会话活动中占很高百分比的正处于等待的并行查询
  
  
  top objects/files/latches
  这部分信息显示了通常最消耗数据库资源的信息括以下部分:
  top db objects
  这部分信息显示了在抽样会话活动中占所有引用对象很高百分比的数据库对象(比如表和索引)
  
  
  top db files
  这部分信息显示了在抽样会话活动中占访问量很高百分比的数据库文件
  
  
  top latches
  这部分信息显示了在抽样会话活动中占很高百分比的闩锁信息
  闩锁是一种简单低级别串行化机制用来保护sga中的共享数据结构.比如闩锁保护当前访问数据库和缓冲区缓存中数据块结构的用户列表.当维护或查找这些结构时服务器或后台进程请求持有闩锁的时间是非常短暂的.闩锁的实现依赖于操作系统特别是一个进程等待获取一个闩锁多长时间.
  
  
  activity over time
  这一部分是ash报告信息最丰富的一部分.这部分信息对于长时间周期的ash报告来说因为在分析期间它提供了关于活动和工作负载概要深层次的详细信息.activity over time会被分成10个时段.每个时段的大小基于分析所持续的时间.第一个和最后一个时段是奇怪.所有内部时段是相等的大小它们可以相互比较.例如,如果分析时间持续10分钟那么所有的时段将会是每个一分钟.然后如果分析时间持续9分30秒,那么外部的时段可能是每个15秒内部的时段可能每个1分钟
  
  
  特定时段中每个时段包含的信息如下:
  列                       描述
  slot time(持续时间)      时段的持续时间
  solt count               在时段中抽样会话的数量
  event                    在时段中顶级的三个等待事件
  event count              ash抽样等待的等待事件的数量
  %event                   ash抽样等待的等待事件在整个分析期间所占的百分比
  
  
  当比较内部时段时,通过识别异常的event count和slot count列执行一个倾斜分析.event count列的异常指示了在抽样会话中等待的等待事件数量增加了.slot count列的异常指示活动的会自豪感增加了,因为ash数据只从活动会话中进持抽样说明数据库的
  负载增加了.通常来说当活动会话抽样的数理和与这些会话相关的等待事件增加时那么这个时段可能会造成短暂性能问题.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-152763-1-1.html 上篇帖子: 关于oracle11g与12C只放图简单测试 下篇帖子: Oracle 组件 系列 小结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表