Active Session History (ASH) 读书笔记

news2024/12/26 9:31:19

本文为博文Active Session History (ASH)的读书笔记。

AWR,ADDM,SQL Trace是对过去事件的分析,[G]V$视图包含大量实时信息,但使用界面不友好,对初学者较难。因此Oracle 10g推出了ASH,属于Oracle Diagnostics Pack。

活动会话信息每秒采样一次,并存放在 V$ACTIVE_SESSION_HISTORY 视图中。

如果数据库会话位于 CPU 上或正在等待非空闲等待类的事件,则该数据库会话被视为活动的。

V$ACTIVE_SESSION_HISTORY 视图本质上是一个事实表,它可以链接到多个维度,以提供特定于各种事物的统计信息,包括 SQL 语句、执行计划、对象、等待事件、会话、模块、操作、客户端标识符、 这使得它成为一种非常灵活的方式来识别活动会话正在做什么或已经做了什么。 例如,如果我想查看过去 5 分钟数据库的主要活动,我可以使用以下查询。

SELECT NVL(a.event, 'ON CPU') AS event,
       COUNT(*) AS total_wait_time
FROM   v$active_session_history a
WHERE  a.sample_time > SYSDATE - 5/(24*60) -- 5 mins
GROUP BY a.event
ORDER BY total_wait_time DESC;

EVENT                                                            TOTAL_WAIT_TIME
---------------------------------------------------------------- ---------------
ON CPU                                                                       157
log file sync                                                                  8
db file scattered read                                                         4
latch: cache buffers chains                                                    3
library cache: mutex X                                                         1
PGA memory operation                                                           1

6 rows selected.

注意以上SQL中计时的方式,是用count(*),这是因为每1秒采样一次。这里不能用WAIT_TIME或TIME_WAITED的累计,说明见原文。

来看一下v$active_session_history表的定义:

SQL> desc v$active_session_history
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 SAMPLE_ID                                          NUMBER
 SAMPLE_TIME                                        TIMESTAMP(3)
 SAMPLE_TIME_UTC                                    TIMESTAMP(3)
 USECS_PER_ROW                                      NUMBER
 IS_AWR_SAMPLE                                      VARCHAR2(1)
 SESSION_ID                                         NUMBER
 SESSION_SERIAL#                                    NUMBER
 SESSION_TYPE                                       VARCHAR2(10)
 FLAGS                                              NUMBER
 USER_ID                                            NUMBER
 SQL_ID                                             VARCHAR2(13)
 IS_SQLID_CURRENT                                   VARCHAR2(1)
 SQL_CHILD_NUMBER                                   NUMBER
 SQL_OPCODE                                         NUMBER
 SQL_OPNAME                                         VARCHAR2(64)
 FORCE_MATCHING_SIGNATURE                           NUMBER
 TOP_LEVEL_SQL_ID                                   VARCHAR2(13)
 TOP_LEVEL_SQL_OPCODE                               NUMBER
 SQL_ADAPTIVE_PLAN_RESOLVED                         NUMBER
 SQL_FULL_PLAN_HASH_VALUE                           NUMBER
 SQL_PLAN_HASH_VALUE                                NUMBER
 SQL_PLAN_LINE_ID                                   NUMBER
 SQL_PLAN_OPERATION                                 VARCHAR2(30)
 SQL_PLAN_OPTIONS                                   VARCHAR2(30)
 SQL_EXEC_ID                                        NUMBER
 SQL_EXEC_START                                     DATE
 PLSQL_ENTRY_OBJECT_ID                              NUMBER
 PLSQL_ENTRY_SUBPROGRAM_ID                          NUMBER
 PLSQL_OBJECT_ID                                    NUMBER
 PLSQL_SUBPROGRAM_ID                                NUMBER
 QC_INSTANCE_ID                                     NUMBER
 QC_SESSION_ID                                      NUMBER
 QC_SESSION_SERIAL#                                 NUMBER
 PX_FLAGS                                           NUMBER
 EVENT                                              VARCHAR2(64)
 EVENT_ID                                           NUMBER
 EVENT#                                             NUMBER
 SEQ#                                               NUMBER
 P1TEXT                                             VARCHAR2(64)
 P1                                                 NUMBER
 P2TEXT                                             VARCHAR2(64)
 P2                                                 NUMBER
 P3TEXT                                             VARCHAR2(64)
 P3                                                 NUMBER
 WAIT_CLASS                                         VARCHAR2(64)
 WAIT_CLASS_ID                                      NUMBER
 WAIT_TIME                                          NUMBER
 SESSION_STATE                                      VARCHAR2(7)
 TIME_WAITED                                        NUMBER
 BLOCKING_SESSION_STATUS                            VARCHAR2(11)
 BLOCKING_SESSION                                   NUMBER
 BLOCKING_SESSION_SERIAL#                           NUMBER
 BLOCKING_INST_ID                                   NUMBER
 BLOCKING_HANGCHAIN_INFO                            VARCHAR2(1)
 CURRENT_OBJ#                                       NUMBER
 CURRENT_FILE#                                      NUMBER
 CURRENT_BLOCK#                                     NUMBER
 CURRENT_ROW#                                       NUMBER
 TOP_LEVEL_CALL#                                    NUMBER
 TOP_LEVEL_CALL_NAME                                VARCHAR2(64)
 CONSUMER_GROUP_ID                                  NUMBER
 XID                                                RAW(8)
 REMOTE_INSTANCE#                                   NUMBER
 TIME_MODEL                                         NUMBER
 IN_CONNECTION_MGMT                                 VARCHAR2(1)
 IN_PARSE                                           VARCHAR2(1)
 IN_HARD_PARSE                                      VARCHAR2(1)
 IN_SQL_EXECUTION                                   VARCHAR2(1)
 IN_PLSQL_EXECUTION                                 VARCHAR2(1)
 IN_PLSQL_RPC                                       VARCHAR2(1)
 IN_PLSQL_COMPILATION                               VARCHAR2(1)
 IN_JAVA_EXECUTION                                  VARCHAR2(1)
 IN_BIND                                            VARCHAR2(1)
 IN_CURSOR_CLOSE                                    VARCHAR2(1)
 IN_SEQUENCE_LOAD                                   VARCHAR2(1)
 IN_INMEMORY_QUERY                                  VARCHAR2(1)
 IN_INMEMORY_POPULATE                               VARCHAR2(1)
 IN_INMEMORY_PREPOPULATE                            VARCHAR2(1)
 IN_INMEMORY_REPOPULATE                             VARCHAR2(1)
 IN_INMEMORY_TREPOPULATE                            VARCHAR2(1)
 IN_TABLESPACE_ENCRYPTION                           VARCHAR2(1)
 CAPTURE_OVERHEAD                                   VARCHAR2(1)
 REPLAY_OVERHEAD                                    VARCHAR2(1)
 IS_CAPTURED                                        VARCHAR2(1)
 IS_REPLAYED                                        VARCHAR2(1)
 IS_REPLAY_SYNC_TOKEN_HOLDER                        VARCHAR2(1)
 SERVICE_HASH                                       NUMBER
 PROGRAM                                            VARCHAR2(48)
 MODULE                                             VARCHAR2(64)
 ACTION                                             VARCHAR2(64)
 CLIENT_ID                                          VARCHAR2(64)
 MACHINE                                            VARCHAR2(64)
 PORT                                               NUMBER
 ECID                                               VARCHAR2(64)
 DBREPLAY_FILE_ID                                   NUMBER
 DBREPLAY_CALL_COUNTER                              NUMBER
 TM_DELTA_TIME                                      NUMBER
 TM_DELTA_CPU_TIME                                  NUMBER
 TM_DELTA_DB_TIME                                   NUMBER
 DELTA_TIME                                         NUMBER
 DELTA_READ_IO_REQUESTS                             NUMBER
 DELTA_WRITE_IO_REQUESTS                            NUMBER
 DELTA_READ_IO_BYTES                                NUMBER
 DELTA_WRITE_IO_BYTES                               NUMBER
 DELTA_INTERCONNECT_IO_BYTES                        NUMBER
 DELTA_READ_MEM_BYTES                               NUMBER
 PGA_ALLOCATED                                      NUMBER
 TEMP_SPACE_ALLOCATED                               NUMBER
 CON_DBID                                           NUMBER
 CON_ID                                             NUMBER
 DBOP_NAME                                          VARCHAR2(30)
 DBOP_EXEC_ID                                       NUMBER

其中几个重要的列为:

  • SAMPLE_TIME:采样时间
  • SESSION_STATE:WAITING或ON CPU
  • EVENT:等待事件(SESSION_STATE=WAITING)或空(SESSION_STATE=ON CPU)
  • TIME_WAITED:等待时间(SESSION_STATE=WAITING),单位为微秒

历史的ASH数据可以查询视图DBA_HIST_ACTIVE_SESS_HISTORY,其实也就是存到AWR了。可以认为DBA_HIST_ACTIVE_SESS_HISTORY是对V$ACTIVE_SESSION_HISTORY的采样,采样时间是10秒一次。

SELECT NVL(a.event, 'ON CPU') AS event,
       COUNT(*)*10 AS total_wait_time
FROM   dba_hist_active_sess_history a
WHERE  a.sample_time > SYSDATE - 1 
GROUP BY a.event
ORDER BY total_wait_time DESC;

EVENT                                                            TOTAL_WAIT_TIME
---------------------------------------------------------------- ---------------
ON CPU                                                                       710
library cache pin                                                            410
buffer busy waits                                                             90
latch: cache buffers chains                                                   30
log file sync                                                                 20
enq: SQ - contention                                                          20
PGA memory operation                                                          10
Failed Logon Delay                                                            10
control file sequential read                                                  10

9 rows selected.

Oracle EM Performance 页面可以方便的浏览实时和历史的ASH信息,此不赘述。

EM和SQL Plus都可以出ASH报告,格式支持HTML和TXT。

@$ORACLE_HOME/rdbms/admin/ashrpt.sql

例如:

SQL> connect sys@orclpdb1 as sysdba
SQL> @?/rdbms/admin/ashrpt.sql

Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type:
Specify the location of AWR Data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AWR_ROOT - Use AWR data from root (default)
AWR_PDB - Use AWR data from PDB
Enter value for awr_location: AWR_PDB
...
Location of AWR Data Specified: AWR_PDB




Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
 3484266510 ORCL                1 ORCL
...
Defaults to current database

Using database id: 3484266510

Enter instance numbers. Enter 'ALL' for all instances in a
RAC cluster or explicitly specify list of instances (e.g., 1,2,3).
Defaults to current instance.

Using instance number(s): 1


ASH Samples in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Oldest ASH sample available:  06-Oct-23 13:20:18   [    822 mins in the past]
Latest ASH sample available:  07-Oct-23 02:45:08   [     17 mins in the past]
...
Specify the timeframe to generate the ASH report
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter begin time for report:
Defaults to -15 mins
Enter value for begin_time:
Report begin time specified:

Enter duration in minutes starting from begin time:
Defaults to SYSDATE - begin_time
Press Enter to analyze till current time
Enter value for duration:
Report duration specified:

Using 07-Oct-23 02:46:55 as report begin time
Using 07-Oct-23 03:02:00 as report end time
...
Report written to ashrpt_1_1007_0302.html

输出见附录。

SQL Developer也支持ASH报告。
在这里插入图片描述

还有一个开源工具ASH Viewer,就不试了。

参考

  • How to Open Port 1521 on Linux Server
  • Generate Some Database Activity
  • SQL Developer ASH Report Viewer
  • Use ASH Report Writer in Oracle SQL Developer
  • ASH Report I - Theory
  • 2 Day DBA 11g Release 2
  • 2-Day DBA (12c Release 2)
  • Oracle Database 2-Day DBA (19c)

附录:ASH Report输出样例

ASH Report - From 07-Oct-23 02:46:55 To 07-Oct-23 03:02:00

ASH Report For ORCL/ORCL

DB NameDB IdInstanceInst numReleaseRACHost
ORCL3484266510ORCL119.0.0.0.0NOinstance-20230918-1052-db19c-iaas

CPUsSGA SizeBuffer CacheShared PoolASH Buffer SizeIn-memory Area Size
24,704M (100%)3,232M (68.7%)545M (11.6%)Not Available0.0M (0.0%)

Sample TimeData Source
Analysis Begin Time:07-Oct-23 02:46:55V$ACTIVE_SESSION_HISTORY
Analysis End Time:07-Oct-23 03:02:00V$ACTIVE_SESSION_HISTORY
Elapsed Time: 15.1 (mins)  
Sample Count: 0 
Average Active Sessions: 0.00 
Avg. Active Session per CPU: 0.00 
Report Target:None specified 

ASH Report

  • Top Events
  • Load Profile
  • Top SQL
  • Top PL/SQL
  • Top Java
  • Top Call Types
  • Top Sessions
  • Top Objects/Files/Latches
  • Activity Over Time

Back to Top

Top Events

  • Top User Events
  • Top Background Events
  • Top Event P1/P2/P3 Values
Back to Top

Top User Events

No data exists for this section of the report.

Back to Top Events
Back to Top

Top Background Events

No data exists for this section of the report.

Back to Top Events
Back to Top

Top Event P1/P2/P3 Values

No data exists for this section of the report.

Back to Top Events
Back to Top

Load Profile

  • Top Service/Module
  • Top Client IDs
  • Top SQL Command Types
  • Top Phases of Execution
Back to Top

Top Service/Module

No data exists for this section of the report.

Back to Load Profile
Back to Top

Top Client IDs

No data exists for this section of the report.

Back to Load Profile
Back to Top

Top SQL Command Types

No data exists for this section of the report.

Back to Load Profile
Back to Top

Top Phases of Execution

No data exists for this section of the report.

Back to Load Profile
Back to Top

Top SQL

  • Top SQL with Top Events
  • Top SQL with Top Row Sources
  • Top SQL using literals
  • Top Parsing Module/Action
  • Complete List of SQL Text
Back to Top

Top SQL with Top Events

No data exists for this section of the report.

Back to Top SQL
Back to Top

Top SQL with Top Row Sources

No data exists for this section of the report.

Back to Top SQL
Back to Top

Top SQL using literals

No data exists for this section of the report.

Back to Top SQL
Back to Top

Top Parsing Module/Action

No data exists for this section of the report.

Back to Top SQL
Back to Top

Complete List of SQL Text

No data exists for this section of the report.

Back to Top SQL
Back to Top

Top PL/SQL Procedures

No data exists for this section of the report.


Back to Top

Top Java Workload

No data exists for this section of the report.


Back to Top

Top Call Types

No data exists for this section of the report.


Back to Top

Top Sessions

  • Top Sessions
  • Top Blocking Sessions
  • Top Sessions running PQs
Back to Top

Top Sessions

No data exists for this section of the report.

Back to Top Sessions
Back to Top

Top Blocking Sessions

No data exists for this section of the report.

Back to Top Sessions
Back to Top

Top Sessions running PQs

No data exists for this section of the report.

Back to Top Sessions
Back to Top

Top Objects/Files/Latches

  • Top DB Objects
  • Top DB Files
  • Top Latches
Back to Top

Top DB Objects

No data exists for this section of the report.

Back to Top Objects/Files/Latches
Back to Top

Top DB Files

No data exists for this section of the report.

Back to Top Objects/Files/Latches
Back to Top

Top Latches

No data exists for this section of the report.

Back to Top Objects/Files/Latches
Back to Top

Activity Over Time

No data exists for this section of the report.


Back to Top

End of Report

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网络编程系列之UDP广播

一、什么是UDP广播 UDP广播是一种网络通信的方式,在广域网或局域网中,UDP广播可以向多个目标主机发送数据包,使得网络中的所有设备都能接收到广播消息。一定是采用UDP协议。 二、特性 1、面向无连接:UDP广播不需要建立连接&#…

PLC易学但是后期如何发展?

今日话题 PLC易学但是后期如何发展? PLC学习简便,但重要性不容小觑。除基础外,以下为几个技术方向: 大规模系统:包括冗余PLC、网络架构和服务器。掌握虚拟化、网络设计和模块化。 特色系统:如电力行业…

FastAdmin前台分片传输上传文件getshell

漏洞概述 FastAdmin框架存在有条件RCE漏洞,由于FastAdmin的前台文件上传功能中提供了分片传输功能, 但在合并分片文件时因对文件路径的拼接处理不当导致可上传任意文件。 漏洞复现 漏洞需要一个低权限的账号 所以我们需要在前台注册一个普通用户 注册成功后进行…

1. 树的建立与基本操作

程序的输入是一个表示树结构的广义表。假设树的根为 root ,其子树森林 F = ( T1 , T2 , … , Tn ),设与该树对应的广义表为 L ,则 L =(原子&#…

TLS/SSL 详解

目录 基础理论入门HTTPS对称加密非对称加密证书TLS握手过程握手总结 TLS 定义(记录层/握手层)HTTPS HTTP over TLS加密记录层分片 (Fragmentation)记录压缩和解压缩 (Record compression and decompression)空或标准流加密 (Null or standard stream cipher)CBC 块加密 (分组加…

NV21图片格式深入解析与代码实战-RGB转NV21与画框

1.NV21格式图片解析 NV21图像格式属于 YUV颜色空间中的YUV420SP格式 每四个Y分量共用一组U分量和V分量,Y连续排序,U与V交叉排序 重点总结 uv交错模式4Y共用一组uv(2个)大小:UV Y 的一半 排列方式如下 Y Y   Y Y   Y Y   Y Y Y Y   Y Y…

001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试

001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试 文章目录 001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试1. 安装1.1 windows下安装openssl1.2 Linux下安装OpenSSL 2. VS中使用openssl3. 测试 1. 安装 1.1 win…

ionic+vue+capacitor系列笔记--常用操作代码合集(图片引用,axios跨域配置,去除按钮波纹)

1.单个图片引用 html <img :src"userImgSrc" />ts <script lang"ts"> import { defineComponent } from "vue"; export default defineComponent({name: "Tab1Page",components: {},setup(props, context) {let url &…

FFmpeg截图命令优化

由于项目要求&#xff0c;需要对摄像机的rtsp流进行截图。一开始我使用了命令&#xff1a; ./ffmpeg -ss 0 -i XXX -f image2 -vframes 1 -s 370*210 -y output.jpg 上述命令抓取rtsp流第0秒&#xff08;当前&#xff09;的图像&#xff0c;将其保存为370*210分辨率的jpg图片…

清理日志后出现 no boot device available,不能启动处理

3号LNS清理日志后出现 no boot device available&#xff0c;不能启动处理 然后 不知道为什么&#xff0c;清理系统日志后&#xff0c;就这样了&#xff0c; 然后按下F11&#xff0c;选择硬盘启动就好了&#xff0c;不要选择USB那个&#xff01; ...... 这样是能启动了&#xf…

延时盲注(CVE-2022-0948)

详解&#xff1a; 延时盲注&#xff0c;也称为时间盲注或延迟注入&#xff0c;是一种利用执行时间差判断是否执行成功的盲注手法。攻击者提交一个对执行时间敏感的SQL语句&#xff0c;通过执行时间的长短来判断注入是否成功。例如&#xff0c;如果注入成功&#xff0c;执行时间…

互联网Java工程师面试题·Java 并发编程篇·第七弹

目录 16、CAS 的问题 17、什么是 Future&#xff1f; 18、什么是 AQS 19、AQS 支持两种同步方式&#xff1a; 20、ReadWriteLock 是什么 21、FutureTask 是什么 22、synchronized 和 ReentrantLock 的区别 23、什么是乐观锁和悲观锁 24、线程 B 怎么知道线程 A 修改了…

零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表

bookroo网页上有很多不错的英文图书书目。比如这个关于儿童花样滑冰的书单&#xff1a; https://bookroo.com/explore/books/topics/ice-skating 怎么批量下载下来呢&#xff1f; 这个网页是动态网页&#xff0c;要爬取下来比较麻烦&#xff0c;可以先查看源代码&#xff0c;…

06-使用dockerfile构建nginx、redis镜像

主旨 本文使用上一篇文章中说到的dockerfile方式&#xff0c;分别构建一个nginx&#xff0c;一个redis镜像。 环境 linux环境 docker环境 nginx镜像构建 创建目录&#xff0c;并切换至对应目录&#xff1a; [yunweijialocalhost ~]$ mkdir -pv docker/nginx mkdir: 已创建目录 …

redis 缓存设计

1. 前言 学习redis 缓存&#xff0c;可以是为了技术面试&#xff1b;可以是为了应用实践&#xff0c;在开发设计过程中引入缓存&#xff0c;提高性能。比如常见的面试题&#xff1a; 2. 什么是缓存预热、击穿、穿透和雪崩 2.1 缓存预热 缓存预热就是系统上线后&#xff0c;…

Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用&#xff08;四&#xff09; Puppeteer结合测试工具jest使用&#xff08;四&#xff09;一、简介二、与jest结合使用&#xff0c;集成到常规测试三、支持其他的几种四、总结 一、简介 Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node…

09. 机器学习- 逻辑回归

文章目录 线性回归回顾逻辑回归 Hi&#xff0c;你好。我是茶桁。 上一节课&#xff0c;在结尾的时候咱们预约了这节课一开始对上一节课的内容进行一个回顾&#xff0c;并且预告了这节课内容主要是「逻辑回归」&#xff0c;那我们现在就开始吧。 线性回归回顾 在上一节课中&a…

【Linux】基本指令-入门级文件操作(二)

目录 基本指令 7 cp指令&#xff08;重要&#xff09; 8 mv指令&#xff08;重要&#xff09; 9 nano指令 10 cat指令 11 echo指令与重定向&#xff08;重要&#xff09; 12 more指令 13 less指令 基本指令 7 cp指令&#xff08;重要&#xff09; 功能&#xff1a;复…

React高级特性之context

例1&#xff1a; createContext // 跨组件通信Context引入createContext import React, { createContext } from react// App传数据给组件C App -- A -- C// 1. 创建Context对象 const { Provider, Consumer } createContext()function SonA () {return (<div>我是…

分布式存储系统Ceph应用详解

Ceph的应用 一、Ceph 存储池(Pool)1.1 Ceph存储池的基本概念1.2 原理1.3 一个Pool资源池应该包含多少PG数&#xff1f;1.4 Ceph 存储池相关管理命令1.4.1 创建1.4.2 查看1.4.3 修改1.4.4 删除 二、 CephFS文件系统MDS接口三、创建CephFS文件系统MDS接口3.1 服务端操作Step1 在管…