首页 > 其他分享 >与awr/addm/ash类似信息的相关视图

与awr/addm/ash类似信息的相关视图

时间:2024-05-11 21:43:00浏览次数:11  
标签:awr 视图 会话 session active addm test01 history

转自:https://www.cnblogs.com/lijiaman/p/10381167.html

(一)session相关视图

(1)视图

  • v$session
  • v$active_session_history、wrh$_active_session_history
  • dba_hist_active_session_history

如果是多节点数据库,v$session和v$active_hist_session_history仅获得单节点的信息,可以使用gv$sessiongv$active_session_history来获取所有节点的信息。

(2)三个视图介绍

(2.1)v$session

v$session视图记录了当前连接到数据库的session信息,记录的是实时的数据,当有新的会话连接到数据库时,v$session就会产生一条新的session记录,一旦会话断开,记录消除,所以v$session的信息是实时动态变化的。

视图结构如下:

链接:  v$session视图介绍 ,其它2个视图与其类似,不再介绍。

(2.2)v$active_session_history

  v$active_session_history是记录了数据库活跃会话的采样,如果是多节点,则用gv$active_session_history来查看所有节点的信息。每隔1秒钟,数据库会进行一次采样,将活跃会话记录到该视图,每个活跃会话记录一行。该视图是ASH的核心,用以记录活动SESSION的历史等待信息,这部分内容记录在内存中,期望值是记录一个小时的内容。

  关于活跃会话的定义,大致如下:会话在CPU进行运算或者是非空闲等待的会话都属于活跃会话。官方解释:A database session is considered active if it was on the CPU or was waiting for an event that didn't belong to the Idle wait class. Refer to the V$EVENT_NAME view for more information on wait classes.

ash

               图1. v$active_session_history是ash报告的数据来源

(2.3)dba_hist_active_sess_history

  视图gv$active_session_history会每秒钟将数据库所有节点的活跃会话采样一次,但是数据是存放在内存中的,无法长久保存。而dba_hist_active_sess_history则会将gv$active_session_history里的数据每10秒采样一次并持久化保存。

(3)视图数据流向

image

                               图2.视图数据流向

注意:这里需要非常注意,假如一个sql语句运行了100秒,那么会在v$active_session_history里面采集到100~101次,而v$dba_hist_active_session_history每隔10秒从v$active_session_history里面采集一次样本,那么会采集到10~11次样本,计算时间时需要x10.

(二)session相关视图的用途

(1)使用v$session来查看实时阻塞会话

以前处理异常锁的方式如下:

1.查询blocking session

select    se.machine,se.sid,se.serial#,se.seconds_in_wait,se.paddr,lo.block
  from    v$lock lo, v$session se
 where    lo.sid = se.sid
   and    lo.block > 0; --bloc>0代表这个会话阻塞了其他会话

2.根据1的sid,serial#杀死会话

alter system kill session 'sid,serial#';

后来在EM里面的Blocking session里面看到下图,以折叠图的形式展现,最上面的代表正在阻塞其它session的会话,研究了一下,可以使用v$session来得到类似的效果。

image

                                                                  图1.blocking session树形图

我们来做一次测试,对表test01和test02进行DML操作,观察运行情况,操作如下

(1)创建测试表test01,test02。并在2个表的id列添加主键约束

image image

         test01表                                                               test02表

(2)对2个表进行操作,执行顺序如下

----------------------------------------test01操作-------------------------------------------------------

[sessid:27  ]  delete from test01;                                      --删除test01整个表的数据,未提交,阻塞源头

[sessid:28  ]  update test01 set name = 'aaa' where id = 1;   --更新test01表id=1的行,会话产生等待

[sessid:142]   insert into test01 values(1,'abc');                   --插入test01表id=1的行,会话产生等待

[sessid:25 ]   delete from test01 where id = 2;                     --删除test01表id=2的行,会话产生等待

[sessid:29 ]   update test01 set  name = 'bbb' where id  = 2; --更新test01表id=2的行,会话产生等待

-----------------------------------------test02操作--------------------------------------------------------

[sessid:30 ]  insert into test02 values(3,'augly',3000);          --插入test02表id=3的行,未提交,阻塞源头

[sessid:23 ]  insert into test02 values(3,'augly',3300);          --插入test02表id=3的行,会话产生等待

此时我们到EM里面观察,就会发现图1的blocking session树形图。

在实际环境中,大部分系统是没有安装EM的,在没有EM的情况下,我们依然可以通过v$session得到类似的图形

复制代码
--使用v$session来查看阻塞session信息

SELECT   LPAD(' ',5*LEVEL-1)||S."USERNAME" AS user_name , 
         LPAD(' ',5*LEVEL-1)||S."SID" AS session_id,
         S."SERIAL#",
         S."SQL_ID",
S."ROW_WAIT_OBJ#", S."WAIT_CLASS", S."EVENT", S."P1", S."P2", S."P3", S."SECONDS_IN_WAIT" FROM V$SESSION S WHERE S."BLOCKING_SESSION" IS NOT NULL OR S.SID IN(SELECT DISTINCT BLOCKING_SESSION FROM V$SESSION) START WITH S."BLOCKING_SESSION" IS NULL CONNECT BY PRIOR S."SID" = S."BLOCKING_SESSION";
复制代码

结果如下,红色的为阻塞源头:

image

(2)使用v$active_session_history、dba_hist_active_sess_history来查看历史阻塞会话信息

有时数据库出现问题,而我们不在现场,事后需要分析当时的业务异常情况,可以使用v$active_session_history和dba_hist_active_sess_history来分析当时的情况。

使用dba_hist_active_sess_history的例子:https://www.cnblogs.com/lijiaman/p/10423272.html

标签:awr,视图,会话,session,active,addm,test01,history
From: https://www.cnblogs.com/dclogs/p/18187191

相关文章

  • Oracle AWR 性能分析报告11g
    转自:http://www.askmaclean.com/archives/performance-tuning-oracle-awr.html1、报告总结Elapsed 为该AWR性能报告的时间跨度(自然时间的跨度,例如前一个快照snapshot是4点生成的,后一个快照snapshot是6点生成的,则若使用@?/rdbms/admin/awrrpt脚本中指定这2个快照的话,那么......
  • postgresql中视图建立,字段拼接,同一个表的多行之间的多个字段相减
    首先表是这样的CREATETABLEpublic.tb_realtime_data( s_idvarchar(48)NOTNULL, sensor_namevarchar(48)NULL, sensor_index_codevarchar(48)NULL, sensor_valuenumeric(20,10)NULL, statistics_statusint4NULL, alarm_timetimestampNOTNULL, create_time......
  • react中的state值修改了,也触发了页面的重新渲染,但是视图没有更新,可能是什么原因?
    state更新的是一个值List,但是页面渲染使用的是List中的某一项(当前选中项curItem),也定义成了state,而更新状态时,只更新了List,忽视了当前选中项curItem的状态更新,导致视图没有更新,即使组件重新渲染了,但是视图中使用的是curItem解决方案:state中不要保存当前选中项curItem,而应该保......
  • SwiftUI ScrollView 滚动视图
    代码////ContentView.swift//SwiftUIScrollView////CreatedbyCHENHaoon2024/5/7.//importSwiftUIstructContentView:View{varbody:someView{VStack(alignment:.leading){VStack(alignment:.leading){......
  • 如何为数据库中新建用户B复制用户A的表和视图权限?
    故事背景:公司使用的是SQLServer数据库,经常会碰到一种情况,需要为新入职的员工赋予同组内其他同事的权限。  常用方法:1,为同一组申请创建统一的SecurityGroup(安全组),为创建的组分配相关表和视图的访问权限。不管员工入职还是离职,仅需将组内的成员进行相关的添加和删除即可......
  • Oracle 给用户授权访问视图
    Oracle给用户授权访问视图createuserc##hrpidentifiedby123456;grantresource,connecttoc##hrp;grantconnecttoc##hrp;grantselectonC##BSKJ.sch_sc_schedulinfotoc##hrp;grantselectonC##BSKJ.sch_sc_classestoc##hrp;grantselectonC##BSKJ.sys_usert......
  • ASP.NET Core Razor Pages 使用 视图(View) 组件
    参考文章地址:为什么要在ASP.NETCore中使用视图组件(telerik.com)为什么使用视图组件而不是分部视图?最大的原因是,在Razor页面中插入分部视图时,与调用View关联的所有ViewData都会自动与分部视图关联。这意味着分部视图在一个Razor页面上的行为可能与在另一个页面上的行......
  • 深入学习和理解Django视图层:处理请求与响应
    title:深入学习和理解Django视图层:处理请求与响应date:2024/5/417:47:55updated:2024/5/417:47:55categories:后端开发tags:Django请求处理响应生成模板渲染表单处理中间件异常处理第一章:Django框架概述1.1什么是Django?Django是一个高级的PythonWeb......
  • 视图查询优化-不带条件
    视图查询优化-不带条件sqlselect/*+VIEW_FILTER_MERGING(1)NO_USE_CVT_VAR*/v.account_number,v.bill_id,v.account_id,v.bill_line_id,v.bill_number,v.business_type,v.business_type_sub,v.EVENT_ID,v......
  • 视图优化带条件
    sqlselectv.account_number,v.bill_id,v.account_id,v.bill_line_id,v.bill_number,v.business_type,v.business_type_sub,v.EVENT_ID,v.PROJECT_ID,v.OBJECT_TYPE,v.OBJECT_ID,v......