#性能报告
YashanDB在运行过程中,每隔一段时间会将数据库的状态数据保存一份快照到WRM$_SNAPSHOT表中,状态数据包括等待事件、指标数据、空间使用统计、SQL状态信息等数据库关键统计信息。性能报告通过对比两份历史快照来反映整个数据库在一个时间段内的状态,为数据库异常提供事后分析和诊断的依据。
# 快照
快照默认由系统定时(默认为每小时,该值可通过DBMS_AWR.MODIFY_SNAPSHOT_SETTINGS修改)创建。
为诊断性能瓶颈,用户可能需要在指定时间点(例如执行某条SQL语句的前后)即时地创建快照,用于生成性能报告,此时可以通过调用DBMS_AWR.CREATE_SNAPSHOT程序,手动创建快照。
快照数据超过一定时间(默认为七天,该值可通过DBMS_AWR.MODIFY_SNAPSHOT_SETTINGS修改)后,由系统自动进行清理,也可通过DBMS_AWR.DROP_SNAPSHOT_RANGE手动清理。
快照主要信息
即WRM$_SNAPSHOT表内容:
| 字段名称 | 含义 |
|---|---|
| SNAP_ID | 快照ID,每次快照的标识,生成报告需以此为关键参数 |
| DBID | 数据库ID,同V$DATABASE中的database_id |
| INSTANCE_NUMBER | 实例标识符,同V$INSTANCE中的instance_number |
| STARTUP_TIME | 实例启库时间,数据库连续运行期间的两次快照所生成的报告才是有意义的,此信息有助于在生成报告时对快照ID的有效性进行过滤判断 |
| BEGIN_INTERVAL_TIME | 快照开始时间 |
| END_INTERVAL_TIME | 快照结束时间 |
| FLUSH_ELAPSED | 生成快照时间 |
| SNAP_LEVEL | 预留字段 |
| STATUS | 预留字段 |
| ERROR_COUNT | 预留字段 |
# 生成报告
生成报告即通过两个快照的对比,按照不同的维度生成性能报告。报告的运算由存储过程(DBMS_AWR. AWR_REPORT)完成,该存储过程由用户在需要获得报告时主动调用。
SET serveroutput ON
-- 3840305236为数据库ID,1为数据库实例标识符,133为起始快照ID,134为结束快照ID
EXEC dbms_awr.awr_report(3840305236,1,133,134);
上述程序生成的结果为起始和结束快照区间的性能报告,直接以文本形式输出(需先执行set serveroutput on以打开所在会话端控制输出的开关),可以将其粘贴到html文件进行网页展现和保存。
# 报告内容
以下为YashanDB所生成性能报告以网页形式展现的示例:

# Information
# Database Information
当前所在数据库的相关信息。
| 信息项 | 含义 |
|---|---|
| DB Name | 数据库名称 |
| DB Id | 数据库ID |
| Unique Name | 兼容字段,无含义 |
| Role | 数据库角色 * PRIMARY:主 * STANDBY:备 * CASCADE STANDBY:级联备 |
| Release | 数据库版本号 |
| Instance | 兼容字段,无含义 |
| Inst ID | 实例标识符 |
| Startup Time | 数据库开启时间 |
# Host Information
数据库所在服务器的相关信息。
| 信息项 | 含义 |
|---|---|
| Host Name | 服务器名称 |
| Platform | 服务器操作系统平台 |
| CPUs | 服务器CPU逻辑个数 |
| Cores | 服务器CPU核数 |
| Sockets | 服务器CPU物理个数 |
| Memory(GB) | 服务器内存大小 |
# Snapshot Information
本性能报告所覆盖的快照相关信息。
| 信息项 | 含义 |
|---|---|
| Snap Id | 起止快照ID |
| Snap Time | 起止快照时间 |
| Sessions | 快照时的会话个数 |
| Cursor/Sessions | 快照时的平均每个会话游标数 |
| Elapsed | 起止快照时间差,即性能报告所覆盖时长 |
| DB Time | 起止快照时间内的SQL执行总时间 |
# Load Profile
按每秒、每个事务(DB Time和DB CPU还按每次执行、每个调用)统计的系统平均负载信息。
| 信息项 | 含义 |
|---|---|
| DB Time(s) | SQL执行的总时间 |
| DB CPU(s) | SQL执行的CPU耗时 |
| Redo size (bytes) | 产生的redo大小 |
| Logical read (blocks) | 逻辑读的块数 |
| Block changes | 描述数据块的变化(单位:块) |
| Physical read (blocks) | 物理读的块数 |
| Physical write (blocks) | 物理写的块数 |
| Read IO requests | 物理读IO请求次数 |
| Write IO requests | 物理写IO请求次数 |
| Read IO (MB) | 物理读IO数据量 |
| Write IO (MB) | 物理写IO数据量 |
| scan rows | 表扫描的行数 |
| User calls | 用户级别的调用次数 |
| Parses (SQL) | SQL解析总次数(软解析 + 硬解析) |
| Hard parses (SQL) | SQL硬解析次数 |
| Logons | 当前登录会话数 |
| Executes (SQL) | SQL命令执行次数 |
| Rollbacks | 事务回滚次数 |
| Transactions | 事务数(回滚数 + 提交数) |
# Report Summary
# Top 10 Foreground Events by Total Wait Time
Top 10(按%DB Time)等待事件信息,对等待事件项的解释请查阅等待事件。
| 信息项 | 含义 |
|---|---|
| Waits | 等待次数 |
| Total Wait Time(sec) | 总等待时间 |
| Avg Wait(ms) | 平均等待时间 |
| % DB Time | Total Wait Time占DB Time百分比 |
| Wait Class | 等待事件所属类别 |
# Wait Classes by Total Wait Time
Top 10等待事件类别信息,与Top 10 Foreground Events by Total Wait Time所列信息项含义一致。Avg Active Sessions项为兼容字段,无含义。
对等待事件类别的解释请查阅数据库性能指标。
# SGA Memory Summary
记录全局内存信息。
| 信息项 | 含义 |
|---|---|
| Memory Item Name | 内存项名称 |
| Memory Size(byte) | 内存大小(单位:字节) |
# SQL Statistics
# SQL order by Elapsed Time
按SQL执行所占总时间(Elapsed Time项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by CPU Time
按SQL执行所占CPU耗时(CPU Time项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by User I/O Wait Time
按SQL执行所占User I/O类等待时间(User I/O Time项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by Gets
按SQL执行所占逻辑读(Buffer Gets项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by Reads
按SQL执行所占物理读(Physical Reads项,以字节为单位)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by Executions
按SQL的执行次数(Executions项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by Parse Calls
按SQL的软解析次数(Parse Calls项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL order by Sharable Memory
按SQL执行所占共享内存(Sharable Mem项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# Memory Statistics
# Virtual Memory (Only statistics heap table)
记录VM使用情况。
| 信息项 | 含义 |
|---|---|
| Partition Id | 分区ID |
| Total Blocks | 总的内存页数量 |
| Free Blocks | 处于空闲状态的内存页数量 |
| Opened Blocks | 处于打开状态的内存页数量 |
| Closed Blocks | 处于关闭状态的内存页数量 |
| Swapped Out Blocks | 换出磁盘的内存页数量 |
| Ctrl Blocks | 控制页面的数量 |
# YAC Statistics
Note:
YAC Statistics报告仅在共享集群环境下生成。
# YAC Summary
共享集群概要信息。
| 信息项 | 含义 |
|---|---|
| Number of Instances | 共享集群实例数 |
| Number of GCS Tasks | GCS后台线程数量 |
# Global Cache Load Profile
按每秒、每个事务统计的集群全局缓存统计信息。
| 信息项 | 含义 |
|---|---|
| Global Cache blocks received | 从其他实例接收的页面数量 |
| Global Cache blocks served | 发送给其他实例的页面数量 |
| GRC messages received | 接收的GRC消息数量 |
| GCS messages received | 接收的GCS消息数量 |
| GLS messages received | 接收的GLS消息数量 |
| GRC messages sent | 发送的GRC消息数量 |
| GCS messages sent | 发送的GCS消息数量 |
| GLS messages sent | 发送的GLS消息数量 |
| DBWR Fusion writes | 融合写入次数 |
# Global Cache Efficiency Percentages
全局缓存访问占比。
| 信息项 | 含义 |
|---|---|
| Buffer access - local cache | 本地缓存访问占比 |
| Buffer access - remote cache | 远端缓存访问占比 |
| Buffer access - disk | 磁盘缓存访问占比 |
# Global Cache and Enqueue Services- Workload Characteristics
全局缓存和排队服务的统计信息。
| 信息项 | 含义 |
|---|---|
| Avg global cache cr block receive time (us) | 从缓存中获取CR页面的平均耗时 |
| Avg global cache current block receive time (us) | 从缓存中获取最新页面的平均耗时 |
| Avg global cache current block flush time (us) | 数据块平均刷盘耗时 |
# YAC Sys Stats
系统级统计信息中共享集群相关统计项,信息项的解释请查阅统计信息。

