V$ACTIVE_SESSION_HISTORY视图的列说明

V$ACTIVE_SESSION_HISTORY视图的列说明

V$ACTIVE_SESSION_HISTORY 显示数据库中的采样会话活动。ASH每秒从v$session中取快照,存在V$ACTIVE_SESSION_HISTORY中,并收集所有活动会话的等待信息。若ASH数据被刷新到磁盘,则需要从DBA_HIS_ACTIVE_SESS_HISTORY视图中查询相关信息。

该视图是ASH的核心,用以记录活动SESSION的历史等待信息,每秒采样一次,这部分内容记录在内存中,期望值是记录一个小时的内容。

 

列名 数据类型 说明
SAMPLE_ID NUMBER 样本的ID
SAMPLE_TIME TIMESTAMP(3) 取样本的时间
SESSION_ID NUMBER 会话标识符; 映射到 V$SESSION.SID
SESSION_SERIAL# NUMBER 会话序列号 (用于唯一标识一个会话的对象); 映射到 V$SESSION.SERIAL#
USER_ID NUMBER Oracle用户标识符; 映射到 V$SESSION.USER#
SQL_ID VARCHAR2(13) 
会话在取样时执行的 SQL 语句的 SQL 标识符
SQL_CHILD_NUMBER NUMBER Child number of the SQL statement that the session was executing at the time of sampling
SQL_PLAN_HASH_VALUE NUMBER 
sql游标计划的数值表示形式。这所有会话样本的信息可能不可用。v$session不包含此信息。
FORCE_MATCHING_SIGNATURE NUMBER The signature used when the CURSOR_SHARING parameter is set to FORCE
SQL_OPCODE NUMBER Indicates what phase of operation the SQL statement was in; maps to V$SESSION.COMMAND。 “V$SESSION” for information on interpreting this column
SERVICE_HASH NUMBER Hash that identifies the Service; maps to V$ACTIVE_SERVICES.NAME_HASH
SESSION_TYPE VARCHAR2(10) 会话类型:
FOREGROUND
BACKGROUND
SESSION_STATE VARCHAR2(7) 会话状态:
WAITING
ON CPU
QC_SESSION_ID NUMBER 查询协调器的会话ID。This information is only available if the sampled session is a parallel query slave. For all other sessions, the value is 0.
QC_INSTANCE_ID NUMBER 查询协调器实例的ID。 This information is only available if the sampled session is a parallel query slave. For all other sessions, the value is 0.
BLOCKING_SESSION NUMBER 阻塞会话的会话标识符。Populated only when the session was waiting for enqueues or a “buffer busy” wait. Maps toV$SESSION.BLOCKING_SESSION.
BLOCKING_SESSION_STATUS VARCHAR2(11) 阻塞会话的状态:
VALID
NO HOLDER
GLOBAL
NOT IN WAIT
UNKNOWN
BLOCKING_SESSION_SERIAL# NUMBER 阻塞会话的序列号
EVENT VARCHAR2(64) If SESSION_STATE = WAITING, then the event for which the session was waiting for at the time of sampling.If SESSION_STATE = ON CPU, then this column will be NULL.See Also: “Oracle Wait Events”
EVENT_ID NUMBER Identifier of the resource or event for which the session is waiting or for which the session last waited. Interpretation is similar to that of theEVENT column.
EVENT# NUMBER Number of the resource or event for which the session is waiting or for which the session last waited. Interpretation is similar to that of theEVENT column.
SEQ# NUMBER 序列号唯一标识等待(增加每个等待)
P1TEXT VARCHAR2(64) 第一个附加参数的文本
P1 NUMBER 第一个附加参数
P2TEXT VARCHAR2(64) 第二个参数的文本
P2 NUMBER 第二个附加参数
P3TEXT VARCHAR2(64) 第三个附加参数的文本
P3 NUMBER 第三个附加参数
WAIT_CLASS VARCHAR2(64) Wait class name of the event for which the session was waiting at the time of sampling. Interpretation is similar to that of the EVENT column. Maps to V$SESSION.WAIT_CLASS.
WAIT_CLASS_ID NUMBER 等待的会话在等待的时间采样的事件的类标识符。Interpretation is similar to that of the EVENTcolumn. Maps to V$SESSION.WAIT_CLASS_ID.
WAIT_TIME NUMBER 0 if the session was waiting at the time of samplingTotal wait time for the event for which the session last waited if the session was on the CPU when sampledWhether or not WAIT_TIME = 0 is what is useful to find the SESSION_STATE at the time of sampling, rather than the actual value of WAIT_TIMEitself. Maps to V$SESSION.WAIT_TIME.
TIME_WAITED NUMBER If SESSION_STATE = WAITING, then the time that the session actually spent waiting for that EVENT. This column is set for waits that were in progress at the time the sample was taken.If a wait event lasted for more than a second and was caught waiting in more than one session sample row, then the actual time spent waiting for that wait event will be populated in the last of those session sample rows. At any given time, this information will not be available for the latest session sample.
XID RAW(8) Transaction ID that the session was working on at the time of sampling. V$SESSION does not contain this information.
CURRENT_OBJ# NUMBER 对象ID的会话被引用的对象。此信息仅供如果会话在等待申请,集群,并发和用户I / O等待事件。映射到 V$SESSION.ROW_WAIT_OBJ#.
CURRENT_FILE# NUMBER File number of the file containing the block that the session is referencing. This information is only available if the session was waiting for Cluster, Concurrency, and User I/O wait events. Maps to V$SESSION.ROW_WAIT_FILE#.
CURRENT_BLOCK# NUMBER ID of the block that the session is referencing. This information is only available if the session was waiting for Cluster, Concurrency, and User I/O wait events. Maps to V$SESSION.ROW_WAIT_BLOCK#.
PROGRAM VARCHAR2(48) 操作系统程序的名称
MODULE VARCHAR2(48) Name of the executing module when sampled, as set by the DBMS_APPLICATION_INFO.SET_MODULE procedure
ACTION VARCHAR2(32) Name of the executing module when sampled, as set by the DBMS_APPLICATION_INFO.SET_ACTION procedure
CLIENT_ID VARCHAR2(64) Client identifier of the session; maps to V$SESSION.CLIENT_IDENTIFIER
用法举例:查找最近一分钟内,最消耗CPU的sql语句
SELECT sql_id, count(*), round(count(*) / sum(count(*)) over(), 2) pctload
 FROM V$ACTIVE_SESSION_HISTORY
WHERE sample_time > sysdate – 1 / (24 * 60)
   AND session_type <> ‘BACKGROUND’
   AND session_state = ‘ON CPU’
GROUP BY sql_id
 ORDER BY count(*) desc;

 


用法举例:查找最近一分钟内,最消耗I/O的sql语句
SELECT ash.sql_id,count(*)
 FROM V$ACTIVE_SESSION_HISTORY ASH,V$EVENT_NAME EVT
WHERE ash.sample_time > sysdate -1/(24*60)
   AND ash.session_state = ‘WAITING’
   AND ash.event_id = evt.event_id
   AND evt.wait_class = ‘USER I/O’
GROUP BY ash.sql_id
 ORDER BY count(*) desc;

 

用法举例:查找最近一分钟内,最消耗CPU的session
SELECT session_id,count(*)
 FROM V$ACTIVE_SESSION_HISTORY
WHERE session_state = ‘ON CPU’
   AND sample_time > sysdate -1/(24*60)
GROUP BY session_id
ORDER BY count(*) desc;

 

用法举例:查找最近一分钟内,最消耗资源的sql语句
SELECT ash.sql_id,
  sum(decode(ash.session_state,‘ON CPU’,1,0)) “CPU”,
  sum(decode(ash.session_state,‘WAITING’,1,0)) -
  sum(decode(ash.session_state,‘WAITING’,decode(en.wait_class,‘USER I/O’,1,0),0)) “WAIT”,
  sum(decode(ash.session_state,‘WAITING’,decode(en.wait_class,‘USER I/O’,1,0),0)) “IO”,
  sum(decode(ash.session_state,‘ON CPU’,1,1)) “TOTAL”
 FROM V$ACTIVE_SESSION_HISTORY ASH,V$EVENT_NAME EN
WHERE SQL_ID is not null and en.event#=ash.event# and ash.sample_time > sysdate -1/(24*60)
GROUP BY ash.sql_id
 ORDER BY sum(decode(ash.session_state,‘ON CPU’,1,1)) desc;

 

用法举例:查找最近一分钟内,最消耗资源的session
SELECT ash.session_id,ash.session_serial#,ash.user_id,ash.program,
  sum(decode(ash.session_state,‘ON CPU’,1,0)) “CPU”,
  sum(decode(ash.session_state,‘WAITING’,1,0)) -
  sum(decode(ash.session_state,‘WAITING’,decode(en.wait_class,‘USER I/O’,1,0),0)) “WAITING”,
  sum(decode(ash.session_state,‘WAITING’,decode(en.wait_class,‘USER I/O’,1,0),0)) “IO”,
  sum(decode(ash.session_state,‘ON CPU’,1,1)) “TOTAL”
 FROM V$ACTIVE_SESSION_HISTORY ASH,V$EVENT_NAME EN
WHERE en.event# = ash.event# and ash.sample_time > sysdate -1/(24*60)
GROUP BY ash.session_id,ash.user_id,ash.session_serial#,ash.program
 ORDER BY sum(decode(ash.session_state,‘ON CPU’,1,1))

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值