Active Session History (ASH) 读书笔记

2023-10-15 05:04

本文主要是介绍Active Session History (ASH) 读书笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文为博文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                                                           16 rows selected.

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

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

SQL> desc v$active_session_historyName                                      Null?    Type----------------------------------------- -------- ----------------------------SAMPLE_ID                                          NUMBERSAMPLE_TIME                                        TIMESTAMP(3)SAMPLE_TIME_UTC                                    TIMESTAMP(3)USECS_PER_ROW                                      NUMBERIS_AWR_SAMPLE                                      VARCHAR2(1)SESSION_ID                                         NUMBERSESSION_SERIAL#                                    NUMBERSESSION_TYPE                                       VARCHAR2(10)FLAGS                                              NUMBERUSER_ID                                            NUMBERSQL_ID                                             VARCHAR2(13)IS_SQLID_CURRENT                                   VARCHAR2(1)SQL_CHILD_NUMBER                                   NUMBERSQL_OPCODE                                         NUMBERSQL_OPNAME                                         VARCHAR2(64)FORCE_MATCHING_SIGNATURE                           NUMBERTOP_LEVEL_SQL_ID                                   VARCHAR2(13)TOP_LEVEL_SQL_OPCODE                               NUMBERSQL_ADAPTIVE_PLAN_RESOLVED                         NUMBERSQL_FULL_PLAN_HASH_VALUE                           NUMBERSQL_PLAN_HASH_VALUE                                NUMBERSQL_PLAN_LINE_ID                                   NUMBERSQL_PLAN_OPERATION                                 VARCHAR2(30)SQL_PLAN_OPTIONS                                   VARCHAR2(30)SQL_EXEC_ID                                        NUMBERSQL_EXEC_START                                     DATEPLSQL_ENTRY_OBJECT_ID                              NUMBERPLSQL_ENTRY_SUBPROGRAM_ID                          NUMBERPLSQL_OBJECT_ID                                    NUMBERPLSQL_SUBPROGRAM_ID                                NUMBERQC_INSTANCE_ID                                     NUMBERQC_SESSION_ID                                      NUMBERQC_SESSION_SERIAL#                                 NUMBERPX_FLAGS                                           NUMBEREVENT                                              VARCHAR2(64)EVENT_ID                                           NUMBEREVENT#                                             NUMBERSEQ#                                               NUMBERP1TEXT                                             VARCHAR2(64)P1                                                 NUMBERP2TEXT                                             VARCHAR2(64)P2                                                 NUMBERP3TEXT                                             VARCHAR2(64)P3                                                 NUMBERWAIT_CLASS                                         VARCHAR2(64)WAIT_CLASS_ID                                      NUMBERWAIT_TIME                                          NUMBERSESSION_STATE                                      VARCHAR2(7)TIME_WAITED                                        NUMBERBLOCKING_SESSION_STATUS                            VARCHAR2(11)BLOCKING_SESSION                                   NUMBERBLOCKING_SESSION_SERIAL#                           NUMBERBLOCKING_INST_ID                                   NUMBERBLOCKING_HANGCHAIN_INFO                            VARCHAR2(1)CURRENT_OBJ#                                       NUMBERCURRENT_FILE#                                      NUMBERCURRENT_BLOCK#                                     NUMBERCURRENT_ROW#                                       NUMBERTOP_LEVEL_CALL#                                    NUMBERTOP_LEVEL_CALL_NAME                                VARCHAR2(64)CONSUMER_GROUP_ID                                  NUMBERXID                                                RAW(8)REMOTE_INSTANCE#                                   NUMBERTIME_MODEL                                         NUMBERIN_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                                       NUMBERPROGRAM                                            VARCHAR2(48)MODULE                                             VARCHAR2(64)ACTION                                             VARCHAR2(64)CLIENT_ID                                          VARCHAR2(64)MACHINE                                            VARCHAR2(64)PORT                                               NUMBERECID                                               VARCHAR2(64)DBREPLAY_FILE_ID                                   NUMBERDBREPLAY_CALL_COUNTER                              NUMBERTM_DELTA_TIME                                      NUMBERTM_DELTA_CPU_TIME                                  NUMBERTM_DELTA_DB_TIME                                   NUMBERDELTA_TIME                                         NUMBERDELTA_READ_IO_REQUESTS                             NUMBERDELTA_WRITE_IO_REQUESTS                            NUMBERDELTA_READ_IO_BYTES                                NUMBERDELTA_WRITE_IO_BYTES                               NUMBERDELTA_INTERCONNECT_IO_BYTES                        NUMBERDELTA_READ_MEM_BYTES                               NUMBERPGA_ALLOCATED                                      NUMBERTEMP_SPACE_ALLOCATED                               NUMBERCON_DBID                                           NUMBERCON_ID                                             NUMBERDBOP_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                                                  109 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.sqlSpecify 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_PDBCurrent Instance
~~~~~~~~~~~~~~~~DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------3484266510 ORCL                1 ORCL
...
Defaults to current databaseUsing database id: 3484266510Enter 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): 1ASH 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

这篇关于Active Session History (ASH) 读书笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/215500

相关文章

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

读书笔记(一):双脑记

谁又知道年轻人那反复无常的大脑有着怎样的运行机制?尽管他们的大脑已被荷尔蒙折腾地七荤八素;却偶尔还会有灵感跻身夹缝之间; 层级化:每时每刻,人类都在进行抽象化,也就是说,从客观事实中发展出更具普遍意义的理论和知识。利用这种方法,我们得以不断地开发出新的更为简洁的描述层级,方便我们那容量有限的大脑加以处理。分层的概念几乎可以应用于任何复杂系统,甚至包括我们的社交世界,也即是人们的个人生

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类class User(UserMixin):def __init__(self, id):self.id = id@app.route('/login')def login():# 模拟用户登录过程user

2024.09.07【读书笔记】| SMRTLink工具对PB组装疑难解答

在使用SMRT Link的pb_assembly_hifi命令进行组装分析时,可以参考以下步骤和信息: 使用pbcromwell show-workflow-details pb_assembly_hifi命令查看该工作流的详细信息。这将帮助你了解所需的输入参数和可选输入参数。 根据工作流的要求,你需要准备相应的输入文件。例如,对于单样本基因组组装,需要CCS(连续测序)的fastq文件路径作

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

Session用法详解

本文引用http://www.accdb.net/article.asp?id=1115 阅读本文章之前的准备   阅读本文章前,需要读者对以下知识有所了解。否则,阅读过程中会在相应的内容上遇到不同程度的问题。   懂得ASP/ASP.NET编程    了解ASP/ASP.NET的Session模型    了解ASP.NET Web应用程序模型    了解ASP.N

history命令内容格式优化:添加日期时间及IP地址

目录 一、历史记录格式1.1操作步骤1.2其他说明 二、历史记录问题2.1记录显示不全2.2定时自动记录 一、历史记录格式 1.1操作步骤 [可选步骤]清空当前历史记录:history -c && > ~/.bash_history && history -r 编辑对应的配置文件: 用户配置文件:vim ~/.bashrc系统配置文件[推荐]:sudo vim /etc

Vue 项目hash和history模式打包部署与服务器配置

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 在开发 Vue 项目时,Vue Router 提供了两种模式来创建单页面应用(SPA)的 URL:hash 模式和 history 模式。 简单说下两者的主要区别: hash 模式下的 URL 看起来不那么美观,带有一个 # 符号。在这种模式下,URL 中的 hash 值(# 后面的部分)会改变,但页面不会重新加载。因为不会向服务器发送请求,服

报错:Reached the max session limit(DM8 达梦数据库)

报错:Reached the max session limit - - DM8 达梦数据库 1 环境介绍2 数据库启动SYSTEM IS READY后面日志3 数据库刚启动日志4 达梦数据库学习使用列表 1 环境介绍 某项目无法连接数据库,报错:超过最大会话数限制 , 检查 dmdba ulimit -a openfiles 已改检查 dm.ini 其中 MAX_SESSION