千家信息网

数据库中如何查看历史会话等待事件对应的session信息

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,小编给大家分享一下数据库中如何查看历史会话等待事件对应的session信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!此处以enq: TX - row lock contentio
千家信息网最后更新 2025年01月21日数据库中如何查看历史会话等待事件对应的session信息

小编给大家分享一下数据库中如何查看历史会话等待事件对应的session信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

此处以enq: TX - row lock contention等待时间为例。


如果在此回话发生在awr快照信息默认的保存天数以内。
可以通过如下sql查询到相关的session信息。
select * from DBA_HIST_ACTIVE_SESS_HISTORY where event like '%enq: TX - row lock contention%'

DBA_HIST_ACTIVE_SESS_HISTORY 中的blocking_session字段关联DBA_HIST_ACTIVE_SESS_HISTORY中的session_id找到对应的sql_id从而得到回话信息。

可以通过如下查询直接获取信息:
select t.instance_number,
t.sample_time,
lpad('-', 2 * (level - 1), '-') || t.client_id,
t.session_id,
t.blocking_session,
t.session_serial#,
t.sql_id,
t.event,
t.session_state,
level,
connect_by_isleaf,
connect_by_iscycle
from dba_hist_active_sess_history t
where snap_id between 36878 and 36879
start with blocking_session is not null
and event like 'enq: TX - row lock contention%'
connect by nocycle sample_time = prior sample_time
and session_id = prior blocking_session
and session_serial# = prior blocking_session_serial#


其中blocking session为正在阻塞该回话的session


实战案例:
查看等待事件为行锁的session
select a.snap_id,
a.sql_id,
a.session_id,
a.session_serial#,
a.blocking_session,
a.blocking_session_serial#,
a.blocking_session_status
from DBA_HIST_ACTIVE_SESS_HISTORY a
where event like '%enq: TX - row lock contention%'
and snap_id between 20399 and 20400


编写子查询,查看阻塞回话,并统计阻塞次数
select a.blocking_session,
a.blocking_session_serial#,
count(a.blocking_session)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where event like '%enq: TX - row lock contention%'
and snap_id between 20399 and 20400
group by a.blocking_session, a.blocking_session_serial#
order by 3 desc

查看阻塞回话的sql_id和被阻塞的sql_id,条件为阻塞大于19次的
select distinct b.sql_id,c.blocked_sql_id
from DBA_HIST_ACTIVE_SESS_HISTORY b,
(select a.sql_id as blocked_sql_id,
a.blocking_session,
a.blocking_session_serial#,
count(a.blocking_session)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where event like '%enq: TX - row lock contention%'
and snap_id between 20399 and 20400
group by a.blocking_session, a.blocking_session_serial#,a.sql_id
having count(a.blocking_session) > 19
order by 3 desc) c
where b.session_id = c.blocking_session
and b.session_serial# = c.blocking_session_serial#
and b.snap_id between 20399 and 20400

动态性能视图注释:

V$ACTIVE_SESSION_HISTORY displays sampled session activity in the database. It contains snapshots of active database sessions taken once a second. 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.

看完了这篇文章,相信你对"数据库中如何查看历史会话等待事件对应的session信息"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

信息 阻塞 事件 查询 历史 数据 数据库 可以通过 篇文章 动态 天数 字段 完了 实战 快照 性能 时间 更多 条件 案例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 贵阳的网络技术职业学校 学数控可以做软件开发吗 软件开发走什么科目 网络可视化跟网络安全有关系吗 sql修复数据库 贵州公安信息网络安全管理规定 oa软件开发 认可和丰软件 21年国家网络安全周交接西安 三星手机服务器不可用怎么回事 sql server数据库设计 四年级网络安全手抄报图片 马云互联网科技有限公司 网络安全竞赛的目标 银行软件开发岗的职业规划 小米手机微信总是连不到服务器 网络安全宣传周亮点 软件开发项目立项流程图 锐诺网络技术 ftp服务器 的作用 桂阳学it软件开发工资 机载导航数据库由谁规定格式 网络安全攻防日 香港盘古软件开发有限公司 腾讯网络安全治理 c 多线程之间共享数据库 房山区通用网络技术客户至上 福建网络安全审计硬件设备多少钱 造成网络安全问题的不良行为 网络安全讲师兼职 太原erp软件开发
0