当前位置: 首页 > news >正文

Oracle查看历史会话信息视图介绍

        在日常运维过程中,处理故障时经常需要查看历史会话信息,在Oracle数据库中,查看历史会话信息主要依赖于以下动态性能视图(Dynamic Performance Views)和自动工作负载存储库(AWR)相关视图。以下是关键视图及说明:


1. 实时/历史会话视图

V$SESSION
  • 作用:查看当前活动会话的实时信息(不包含历史会话)。

  • 关键列:

    SID, SERIAL#, USERNAME, STATUS, PROGRAM, SQL_ID, EVENT, LOGON_TIME
V$ACTIVE_SESSION_HISTORY (ASH)
  • 作用:存储最近的活动会话历史(每秒采样一次),默认保留约1小时。

  • 关键列:

    SAMPLE_ID, SAMPLE_TIME, SESSION_ID, SESSION_SERIAL#, USER_ID, SQL_ID, EVENT, WAIT_TIME
  • 示例:

    SELECT sample_time, session_id, sql_id, event, program 
    FROM v$active_session_history 
    WHERE session_type = 'FOREGROUND';

2. 长期历史会话视图(AWR)

DBA_HIST_ACTIVE_SESS_HISTORY
  • 作用:ASH数据的长期存储(通过AWR快照持久化),保留时间由AWR_RETENTION_POLICY决定(默认8天)。

  • 关键列同V$ACTIVE_SESSION_HISTORY

  • 示例1:

    SELECT sample_time, session_id, sql_id, event
    FROM dba_hist_active_sess_history 
    WHERE snap_id BETWEEN 1000 AND 1005;  -- 指定快照范围
  • 示例2:

    select event, sql_id, machine,count(*)from dba_hist_active_sess_history ashwhere sample_time >=to_timestamp('2025-08-11 07:36:00', 'yyyy-mm-dd hh24:mi:ss')and sample_time <=to_timestamp('2025-08-11 07:40:00', 'yyyy-mm-dd hh24:mi:ss') group by event, sql_id,machineorder by 4 desc;
DBA_HIST_SESSION
  • 作用:记录已断开连接的历史会话信息(通过AWR快照捕获)。

  • 关键列:

    SNAP_ID, SESSION_ID, SERIAL#, USERNAME, STATUS, PROGRAM, LOGON_TIME, LOGOFF_TIME
  • 示例:

    SELECT username, program, logon_time, logoff_time
    FROM dba_hist_session 
    WHERE logoff_time > SYSDATE - 1;  -- 最近24小时断开的会话

3. 辅助视图

DBA_HIST_SQLTEXT
  • 作用:关联会话中执行的SQL文本。

    SELECT sql_text FROM dba_hist_sqltext WHERE sql_id = 'xxx';
DBA_HIST_SNAPSHOT
  • 作用:查看AWR快照时间范围,用于关联历史数据。

    SELECT snap_id, begin_interval_time 
    FROM dba_hist_snapshot 
    ORDER BY snap_id DESC;

查询示例:合并历史会话与SQL文本

SELECT ash.sample_time,ash.session_id,ash.sql_id,st.sql_text,ash.event
FROM dba_hist_active_sess_history ash
JOIN dba_hist_sqltext st ON ash.sql_id = st.sql_id
WHERE ash.user_id = (SELECT user_id FROM dba_users WHERE username = 'SCOTT')AND ash.sample_time BETWEEN SYSDATE - 1 AND SYSDATE;  -- 最近24小时

权限要求

  • 查询V$视图:需授予SELECT_CATALOG_ROLESELECT ANY DICTIONARY权限。

  • 查询DBA_HIST_视图:需授予DBA或显式授权:

    GRANT SELECT ON dba_hist_active_sess_history TO your_user;

注意:历史数据依赖AWR快照。确保AWR已启用:

SELECT * FROM dba_hist_wr_control;  -- 检查快照设置

通过组合这些视图,您可以全面分析Oracle数据库的历史会话行为、性能瓶颈及SQL执行情况。

http://www.dtcms.com/a/335806.html

相关文章:

  • 【大语言模型 04】Cross-Attention vs Self-Attention实战对比:解码器中的双重注意力机制
  • NumPy 库介绍:核心 API 详解
  • MYSQL-175. 组合两个表
  • Java 学习笔记(基础篇4)
  • Java学习笔记:IDEA简单使用技巧
  • 安卓14系统应用收不到开机广播
  • HTTP请求参数类型及对应的后端注解
  • AMBA-AXI and ACE协议详解(七)
  • 【学习笔记】面向AI安全的26个缓解措施
  • API网关实施中典型陷阱
  • 【数据结构与算法】单调队列的定义和运用
  • 整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层联合 之1
  • Android Jetpack | Livedata
  • Gradle快速入门学习
  • 【算法】模拟专题
  • riscv中断处理软硬件流程总结
  • C++算法题目分享:二叉搜索树相关的习题
  • 原子指标、派生指标和复合指标
  • nodejs 中间件
  • 【Jenkins】01 - Jenkins安装
  • C语言网络编程TCP通信实战:客户端↔服务器双向键盘互动全流程解析
  • [GWCTF 2019]枯燥的抽奖
  • Java线程的6种状态和JVM状态打印
  • [TryHackMe]Brainpan1( 内存溢出)
  • PERCEIVER IO:一种用于结构化输入与输出的通用架构
  • 脉冲计数实现
  • 深入剖析ROS参数服务器通信机制 ——共享全局数据的“云端仓库”实现原理
  • Node.js安装教程
  • MySQL的事务日志:
  • java之 junit4单元测试Mockito的使用