• ADADADADAD

    oracle ash[ 编程知识 ]

    编程知识 时间:2024-12-18 16:49:04

    作者:文/会员上传

    简介:

    < p >Oracle Active Session History(ASH)是Oracle数据库中的一种重要性能诊断工具。它能够很好地监控当前的数据库活动,并记录所有会话的活动。ASH采集的数据可以帮助DBA或开

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    < p >Oracle Active Session History(ASH)是Oracle数据库中的一种重要性能诊断工具。它能够很好地监控当前的数据库活动,并记录所有会话的活动。ASH采集的数据可以帮助DBA或开发人员快速诊断数据库性能问题,例如:死锁、I / O延迟、CPU负载过重等。< /p >< p >ASH的数据收集是基于已存在的基础设施 - Oracle数据库。当前所有的Oracle版本都支持ASH,但是某些选项可能不可用。ASH数据的收集不会对生产环境产生任何性能影响,因为它只在后台收集和记录活动,并且不会产生锁定或其他资源争用。< /p >< p >使用ASH可以轻松查明数据库中的瓶颈。例如,如果发现了IO瓶颈,可以使用ASH脚本来确定哪些会话在等待IO。以下代码可以帮助我们获得等待I / O的会话的时间、操作系统等待时间、读取和写入的字节数等重要信息。< /p >< pre >SELECTsample_time,sid,event,seconds_in_wait,state,wait_time,wait_time_micro,time_waited_micro,io_bytes,to_char(ash.process from ash.session_state) process,to_char(ash.machine from ash.session_state) machine,to_char(ash.program from ash.session_state) program,to_char(ash.module from ash.session_state) module,to_char(ash.sql_text from ash.session_state) sql_textFROMv$active_session_history ASHWHEREash.event IN (SELECT name FROM v$event_name WHERE name LIKE '%wait%') ANDash.wait_class != 'Idle' ANDash.PUSER like 'USER%'ORDER BYsample_time;< /pre >< p >另外,ASH还可以帮助DBA找到那些使用资源最多的会话。这使他们能够更好地分析和诊断性能问题,并立即定位问题的根本原因。例如,如果有一些会话正在使用太多的CPU,那么可以使用ASH查找这些会话,并分析它们正在执行的SQL语句来找到能够减少CPU使用的方法。以下是使用ASH来查找排名前5的会话的CPU使用情况的示例代码。< /p >< pre >SELECTash.SAMPLE_TIME,ash.sid,ash.serial#,ash.SQL_ID,ash.SQL_CHILD_NUMBER,ash.EVENT,DECODE(wait_class,'Commit', p1 , to_char(reason ,'XXXXXXXXX')),ash.SESSION_STATE,ash.STATE,ash.USERNAME,ash.OSUSER,ash.MACHINE,ash.PROGRAM,ash.ACTION,ash.MODULE,ash.CLIENT_ID,ash.CLIENT_IDENTIFIER,ash.CURRENT_OBJ#,ash.PREV_OBJ#,ash.SQL_EXEC_START,ash.SQL_EXEC_ID,ash.SQL_EXEC_CHILD_NUMBER,ash.SQL_PLAN_HASH_VALUE,ash.SQL_EXEC_START,ash.SQL_EXEC_ID,ash.SQL_PLAN_HASH_VALUE,ash.SQL_EXEC_CHILD_NUMBER,ash.SECONDS_IN_WAIT,ash.CPU_TIME,ash.CPU_USED_BY_THIS_SESSION,ash.WAIT_TIME,ash.TIME_WAITED,ash.WAIT_TIME_MICRO,ash.TIME_WAITED_MICRO,ash.IO_INTERCONNECT_BYTES,ash.SQL_TEXT,ash.SQL_FULLTEXT,ash.SQL_PLAN_OPERATION,ash.SQL_PLAN_OPTIONS,ash.SQL_PLAN_STATISTICS,ash.SQL_PLAN_STAT_ALL,FROMv$active_session_history ashWHEREash.sample_time BETWEEN (SYSDATE - (1/24) * 4) ANDSYSDATE AND( ash.CPU_TIME >10)ORDER BYash.CPU_TIME DESC;< /pre >< p >总结来说,ASH是Oracle数据库中绝佳的性能诊断工具。它可以提供有关数据库活动的实时数据,帮助DBA快速诊断数据库中的性能问题,并定位问题的根本原因。使用ASH,您可以轻松查明数据库中的瓶颈,并找到那些使用资源最多的会话。< /p >
    oracle ash.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: oracleash