首页 > 数据库 >通过 dba_hist_active_sess_history 分析数据库历史性能问题

通过 dba_hist_active_sess_history 分析数据库历史性能问题

时间:2024-01-29 09:33:59浏览次数:35  
标签:sample sess dba dbid number hist session nbsp time

1.Dump出问题期间的ASH数据

SQL> conn user/passwd  
SQL> create table t_ash as select * from dba_hist_active_sess_history where SAMPLE_TIME between TO_TIMESTAMP ('<time_begin>', 'YYYY-MM-DD HH24:MI:SS') and TO_TIMESTAMP ('<time_end>', 'YYYY-MM-DD HH24:MI:SS');

$ exp user/passwd file=t_ash.dmp tables=(t_ash) log=t_ash.exp.log

然后导入到测试机:  
$ imp user/passwd file=t_ash.dmp log=t_ash.imp.log

2.验证时间范围是否准确

set line 200 pages 1000  
col sample_time for a25  
col event for a40  
alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff';

select  
&nbsp;t.dbid, t.instance_number, min(sample_time), max(sample_time), count(*) session_count  
&nbsp; from t_ash t  
&nbsp;group by t.dbid, t.instance_number  
&nbsp;order by dbid, instance_number;

INSTANCE_NUMBER&nbsp;&nbsp;&nbsp; MIN(SAMPLE_TIME)&nbsp;&nbsp;&nbsp; MAX(SAMPLE_TIME)&nbsp;&nbsp;&nbsp; SESSION_COUNT  
1&nbsp;&nbsp;&nbsp; 2015-03-26 21:00:04.278&nbsp;&nbsp;&nbsp; 2015-03-26 22:59:48.387&nbsp;&nbsp;&nbsp; 2171  

3.找出问题发生的精确时间

select  
 dbid, instance_number, sample_id, sample_time, count(*) session_count  
  from t_ash t  
 group by dbid, instance_number, sample_id, sample_time  
 order by dbid, instance_number, sample_time;

4.确定每个采样点的top n event

select t.dbid,  
       t.sample_id,  
       t.sample_time,  
       t.instance_number,  
       t.event,  
       t.session_state,  
       t.c session_count  
  from (select t.*,  
               rank() over(partition by dbid, instance_number, sample_time order by c desc) r  
          from (select  
                 t.*,  
                 count(*) over(partition by dbid, instance_number, sample_time, event) c,  
                 row_number() over(partition by dbid, instance_number, sample_time, event order by 1) r1  
                  from t_ash t  
                /*where sample_time >  
                    to_timestamp('2013-11-17 13:59:00',  
                                 'yyyy-mm-dd hh24:mi:ss')  
                and sample_time <  
                    to_timestamp('2013-11-17 14:10:00',  
                                 'yyyy-mm-dd hh24:mi:ss')*/  
                ) t  
         where r1 = 1) t  
 where r < 3  
 order by dbid, instance_number, sample_time, r;

5.观察采样点的等待链

select  
 level                     lv,  
 connect_by_isleaf         isleaf,  
 connect_by_iscycle        iscycle,  
 t.dbid,  
 t.sample_id,  
 t.sample_time,  
 t.instance_number,  
 t.session_id,  
 t.sql_id,  
 t.session_type,  
 t.event,  
 t.session_state,  
 t.blocking_inst_id,  
 t.blocking_session,  
 t.blocking_session_status  
  from t_ash t  
/*where sample_time >  
    to_timestamp('2013-11-17 13:55:00',  
                 'yyyy-mm-dd hh24:mi:ss')  
and sample_time <  
    to_timestamp('2013-11-17 14:10:00',  
                 'yyyy-mm-dd hh24:mi:ss')*/  
 start with blocking_session is not null  
connect by nocycle  
 prior dbid = dbid  
       and prior sample_time = sample_time  
          /*and ((prior sample_time) - sample_time between interval '-1'  
          second and interval '1' second)*/  
       and prior blocking_inst_id = instance_number  
       and prior blocking_session = session_id  
       and prior blocking_session_serial# = session_serial#  
 order siblings by dbid, sample_time;

6.确定top holder

select t.lv,  
       t.iscycle,  
       t.dbid,  
       t.sample_id,  
       t.sample_time,  
       t.instance_number,  
       t.session_id,  
       t.sql_id,  
       t.session_type,  
       t.event,  
       t.seq#,  
       t.session_state,  
       t.blocking_inst_id,  
       t.blocking_session,  
       t.blocking_session_status,  
       t.c blocking_session_count  
  from (select t.*,  
               row_number() over(partition by dbid, instance_number, sample_time order by c desc) r  
          from (select t.*,  
                       count(*) over(partition by dbid, instance_number, sample_time, session_id) c,  
                       row_number() over(partition by dbid, instance_number, sample_time, session_id order by 1) r1  
                  from (select  
                         level              lv,  
                         connect_by_isleaf  isleaf,  
                         connect_by_iscycle iscycle,  
                         t.*  
                          from t_ash t  
                        /*where sample_time >  
                            to_timestamp('2013-11-17 13:55:00',  
                                         'yyyy-mm-dd hh24:mi:ss')  
                        and sample_time <  
                            to_timestamp('2013-11-17 14:10:00',  
                                         'yyyy-mm-dd hh24:mi:ss')*/  
                         start with blocking_session is not null  
                        connect by nocycle  
                         prior dbid = dbid  
                               and prior sample_time = sample_time  
                                  /*and ((prior sample_time) - sample_time between interval '-1'  
                                  second and interval '1' second)*/  
                               and prior blocking_inst_id = instance_number  
                               and prior blocking_session = session_id  
                               and prior  
                                    blocking_session_serial# = session_serial#) t  
                 where t.isleaf = 1) t  
         where r1 = 1) t  
 where r < 3  
 order by dbid, sample_time, r;

 

标签:sample,sess,dba,dbid,number,hist,session,nbsp,time
From: https://www.cnblogs.com/guapixiong/p/17993817

相关文章

  • Gin 应用多实例部署session问题、session参数与刷新
    目录一、GinSession存储的实现方案二、memstore:基于内存的实现2.1基本使用2.2关键参数三、使用redis:多实例部署3.1使用redis优势3.2基本使用四、信息安全的三个核心概念五、GinSession参数5.1参数介绍六、Session自动刷新一、GinSession存储的实现方案cookie:基于co......
  • 可观测性网站之Session的生命周期
    本文会列出session的属性值、统计指标,重点讲解session几个字段值,虽然从代码中看出的考虑策略,session和view、app均有关联,但本文仅从代码层面对session的创建、更新、过期的逻辑进行讲解,其中会把关键的变量值也会列出来。定义:用户会话信息记录,当前会话中,将会基于会话维度用户页面、......
  • php session反序列化
    关于SessionSession,在汉语中表示通话、会话、对话(期)、话路[对谈时间]的意思,其本来的含义一个终端用户与交互系统进行通信的时间(间隔),通常是指从注册(进入系统)到注销(退出系统)之间所经过的时间。比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个Session......
  • Cookie和Session的关系 - 通俗举例
    目录Cookie和Session的关系关系:工作流程简述:举例-商店购物定义:操作流程:Cookie和Session的关系Cookie和Session是在web开发中用于维护用户状态的两个关键概念。Cookie:定义:Cookie是在客户端(通常是浏览器)存储的小型文本文件,由服务器发送到客户端并存储在用户的计算......
  • Cookie、Session 和 Token 有什么区别?
    Cookie、Session和Token通常都是用来保存用户登录信息的技术,但三者有很大的区别,简单来说Cookie适用于简单的状态管理,Session适用于需要保护用户敏感信息的场景,而Token适用于状态无关的身份验证和授权。具体来说,Cookie、Session和Token的区别主要有以下几点区别:存储......
  • Prometheus最佳实践 Summary和Histogram
    本文分享自华为云社区《Prometheus最佳实践Summary和Histogram》,作者:张俭。前言Histogram和Summary都是复杂的指标,不仅仅是因为直方图和summary包含了多个时间序列,而且它们还较难使用正确。观测中的Count和SumHisto和summary都是采样观测,典型的采样维度有 响应大小 和 ......
  • 如何为Azure Kubernetes Services启用Internal Loadbalancer
    如何为AzureKubernetesServices启用InternalLoadbalancer熟悉AzureKubernetesServices(AKS)的小伙伴都知道,默认情况下,当我们创建AzureKubernetesServices群集时,创建的都是Public的AKS群集,也就是可以提供Internet访问的AKS群集。PublicAKS群集会默认附带一个Public类型的Load......
  • DBA的40条军规
    DBA操作规范1、涉及业务上的修改/删除数据,在得到业务方、CTO的邮件批准后方可执行,执行前提前做好备份,必要时可逆。2、所有上线需求必须走工单系统,口头通知视为无效。3、在对大表做表结构变更时,如修改字段属性会造成锁表,并会造成从库延迟,从而影响线上业务,必须在凌晨0:00后业务低峰......
  • chrome内核浏览器:测试环境:url(ip+端口)设置cookie、session失败
    chrome内核浏览器:测试环境:url(ip+端口)设置cookie、session失败有个单点登录系统,登录成功,通过:ip+端口/xxx.js方式设置,目标网址的cookie、session.,通过跳转访问目标网站。在测试的时候,发下cookie、session怎么设置都不成功。登录成功:设置cookie、session t跳转过去,发现原来......
  • 小景的Dba之路--impdp导入数据问题报错排查总结
    小景最近在工作中遇到了一个问题,用impdp做数据导入的时候,有以下报错,下面是问题排查过程:首先看到了ORA-01950:noprivilegesontablespace‘PUBDATA’这个报错,小景想到了以下原因:权限问题:ORA-01950错误表示用户没有在PUBDATA表空间上的特定对象的权限。这可能是由于数据库权......