#性能报告
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 | 预留字段 |
| INST_CHANGE_TIME | 数据库实例变更时间戳 |
| SRC_DBID | 性能数据来源数据库ID |
| DATABASE_ROLE | 数据库角色 * PRIMARY:主库 * STANDBY:物理备库 * LOGICAL STANDBY:逻辑备库 |
| GROUP_ID | 组ID |
| GROUP_NODE_ID | 组内节点ID |
# 生成报告
生成报告即通过两个快照的对比,按照不同的维度生成性能报告。报告的运算由存储过程(DBMS_AWR.AWR_REPORT)完成,该存储过程由用户在需要获得报告时主动调用。
以DBA用户使用yasql连接并登录数据库。
$ yasql sales/********@192.168.1.2:1688查询快照信息,包括对应的数据库ID、实例标识、快照ID等信息,本文以最近2次为例。
SELECT dbid,src_dbid,snap_id,instance_number,group_id,group_node_id FROM sys.wrm$_snapshot ORDER BY snap_id DESC LIMIT 2; DBID SRC_DBID SNAP_ID INSTANCE_NUMBER GROUP_ID GROUP_NODE_ID ----------- ----------- ----------- --------------- ----------- ------------- 121922913 121922913 144 1 0 0 121922913 121922913 143 1 0 0通过以下方式获取性能报告(html文件),请按需指定对应文件的路径,本文均以执行yasql命令的当前路径为例。
文件后缀名应指定为.html,文件名规则请查阅yasql使用指导。
-- 1. 开启缓存区信息打印开关 SET serveroutput ON -- 2. 开启输出结果保存为文件并指定新建目标文件信息,文件名以awr.html为例 spool awr.html CREATE -- 3. 基于上述步骤获取的数据库ID、实例标识、起始快照ID以及结束快照ID生成性能报告 EXEC dbms_awr.awr_report(121922913,1,143,144); -- 4. 结束输出为文件并退出登录。 spool off exit在相应路径下查看新生成的awr.html文件。
awr.html文件即为起始和结束快照区间的性能报告。
$ ll -rw-rw-r-- 1 yashan yashan 110326 7月 2 17:11 awr.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)等待事件信息,对等待事件项的解释请查阅等待事件。
| 信息项 | 含义 |
|---|---|
| Wait Class | 等待事件所属类别 |
| Waits | 等待次数 |
| Total Wait Time (sec) | 总等待时间 |
| Avg Wait Time | 平均等待时间 |
| % DB Time | Total Wait Time占DB Time百分比 |
# 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) | 内存大小(单位:字节) |
# Instance Efficiency Percentages (Target 100%)
记录实例命中率信息。
| 信息项 | 含义 |
|---|---|
| Redo NoWait % | 在redo日志写入过程中没有发生等待的比例 |
| Buffer Hit % | 缓冲区命中率,即从缓冲区成功读取数据页的比例 |
| Soft Parse % | 软解析的百分比 |
# Execute Statistics
记录SQL的执行与解析次数。
| 信息项 | 含义 |
|---|---|
| Execute Count | 执行次数 |
| Hard Parse Count | 硬解析次数 |
| Soft Parse Count | 软解析次数 |
# SQL Statistics
# SQL ordered by Elapsed Time
按SQL执行所占总时间(Elapsed Time项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by CPU Time
按SQL执行所占CPU耗时(CPU Time项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by User I/O Wait Time
按SQL执行所占User I/O类等待时间(User I/O Time项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by Gets
按SQL执行所占逻辑读(Buffer Gets项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by Reads
按SQL执行所占物理读(Physical Reads项,以字节为单位)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by Executions
按SQL的执行次数(Executions项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by Parse Calls
按SQL的软解析次数(Parse Calls项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# SQL ordered by Sharable Memory
按SQL执行所占共享内存(Sharable Mem项)排列的TOP SQL信息,信息项的解释见报告内容所述。
# Memory Statistics
# Virtual Memory Total Statistics
记录VM使用情况,仅统计HEAP表。
| 信息项 | 含义 |
|---|---|
| Total Blocks | 总的内存页数量 |
| Free Blocks | 处于空闲状态的内存页数量 |
| Opened Blocks | 处于打开状态的内存页数量 |
| Closed Blocks | 处于关闭状态的内存页数量 |
| Swapped Out Blocks | 换出磁盘的内存页数量 |
| Ctrl Blocks | 控制页面的数量 |
# System-level Information
记录系统级的统计信息。
| 信息项 | 含义 |
|---|---|
| Name | 统计项名称 |
| Value | 内存大小(单位:字节) |
# VM Buffer Used
记录会话级的VM Buffer累计使用情况(按Alloc Count排序)。
| 信息项 | 含义 |
|---|---|
| SID | 会话的ID |
| Alloc Count | 累计分配的次数 |
| Open Count | 累计打开的次数 |
| Close Count | 累计关闭的次数 |
| Free Count | 累计释放的次数 |
| Swap Out Count | 累计换出到磁盘的次数 |
| Swap In Count | 累计换入到内存的次数 |
| IO Wait Count | 累计发生IO等待的次数 |
| Extend Count | 累计发生VM页扩展的次数 |
# VM Current Open
记录会话级当前的VM使用情况(按Open Count排序)。
| 信息项 | 含义 |
|---|---|
| SID | 会话的ID |
| Open Count | 当前正在打开的次数 |
| Close Count | 当前关闭记录的次数 |
| Swap Out Count | 当前正在换出磁盘的页数 |
# VM Current Swap
记录会话级当前VM的换出信息(按Swap Out Count排序)。
| 信息项 | 含义 |
|---|---|
| SID | 会话的ID |
| Open Count | 当前正在打开的次数 |
| Close Count | 当前关闭记录的次数 |
| Swap Out Count | 当前正在换出磁盘的页数 |
# 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
系统级统计信息中共享集群相关统计项,信息项的解释请查阅统计信息。
# Lock Statistics
# Spinlock Summary
记录spinlock锁的spin次数信息。
| 信息项 | 含义 |
|---|---|
| Name | 锁名 |
| Spincount | 每次spin时CPU需要暂停等待的次数 |
| Times | 总共spin等待的次数 |

