管理自动工作负荷知识库
Oracle 收集大量有关性能和活动的统计信息. 这些信息在内存中积累, 并定期写入数据库: 写入到构成自动工作负荷知识库 (Automatic Workload Repository,AWR) 的表中. AWR 作为 SYSAUX 表空间中的一组表和其他对象而存在. AWR 与数据字典相关, 但又与数据字典不同, 因为 AWR 对于运行数据库而言并不是必需的. 数据写入 AWR, 并存储一段时间, 最终被最近的信息覆盖.
收集 AWR 统计信息
统计信息收集的级别由实例参数 STATISTICS_LEVEL 控制. 可以将这个参数设置为 BASIC,TYPICAL(默认设置)或 ALL.TYPICAL 级别允许收集正常调整所需的所有统计信息, 同时不会收集对性能有不良影响的统计信息集合. BASIC 级别几乎禁用收集所有统计信息, 禁用所有性能调整顾问和服务器生产的警报系统 -- 不存在可评估的运行时性能优势. ALL 级别会收集与 SQL 语句执行相关的, 机器详细的统计信息. 如果进行高级的 SQL 语句调整, 那么可以使用 ALL 级别, 不过在收集统计信息时会导致性能稍有退化.
统计信息在内存中 (也就是在 SGA 内的数据结构中) 累积. 因为统计信息只反映实例进行的操作, 所以并不影响实例的性能. 将统计信息定期地 (默认为每小时一次) 写入磁盘, 也就是写入 AWR. 这称为一次 AWR 快照. 将统计信息写入磁盘的操作由后台进程 (可管理性能监视器 MMON) 完成. 后台进程的使用对于统计信息收集进程的效率来说十分关键. MMON 直接访问构成 SGA 的内存结构, 从而也可以访问这些内存结构中的统计信息. 这个进程可以在不需要通过会话执行 SQL 的情况下从 SGA 内提取数据. 此时唯一的系统开销是将数据的快照实际写入 AWR. 默认方式是每 60 分钟保存一次, 在重写前, 快照会存储 8 天, 这个周期是可配置的.
AWR 是一组表, 由 SYS 拥有, 并且存在于 SYSMAN 表空间中. 这些表不能被重新定位. Oracle 仅支持以 DBMS 包的形式提供的各种 API 或者通过各种视图来访问 AWR.
管理 AWR
可以把一对快照标记为底线, 明确地保存起来. 底线快照不会自动清空. 调整 AWR 设置来频繁保存快照, 可以更准确地诊断问题. 如果快照间隔数个小时, 就可能错过活动高峰时刻. 如果过于频繁, 就会增加 AWR 的大小, 并且可能由于手机和保存信息的工作负荷的增加对性能产生影响.
调用 PL/SQL 包 DBMS_WORKLOAD_REPOSITORY 可以调整 AWR 快照的频率和持久性. 查询 DBA_HIST_WR_CONTROL 视图会显示快照的保留时间和频率的当前值. CREATE_SNAPSHOT 过程会强制生成快照, 并定期手机. 强制生成快照一般咋启动某类工作的前后进行, 这样就可以生成某个特定时间段的报告.
使用自动数据库诊断监视器
Oracle 数据库预配置了一组顾问. 首先涉及的是 Automatic Database Diagnostic Monitor(自动数据库诊断监视器, ADDM). 研究在保存 AWR 快照自动生成的 ADDM 报告通常是 DBA 的一项日常事务. ADDM 报告具有宝贵的价值, 并且突出说明了数据库内的问题以及建议的解决方法, 但是在许多情况下, 报告会建议运行一个或多个其他顾问. 与 ADDM 相比, 这些顾问能给出更准确的诊断信息和建议.
ADDM 查看存储在两个 AWR 快照中的数据. 通过比较它们, 它可以总结出这些快照期间的活动并生成报告. 这个报告试图检测任何可能的性能问题, 并提出缓解它们的建议. ADDM 可以识别的问题包括:
CPU 瓶颈
争用问题, 如行锁
I/O 系统上的压力
高负载 SQL
只要生成 AWR 快照, ADDM 就会自动运行. 它分析当前快照和以前快照之间的活动. 因此, 默认情况下, 每小时可提供一次报告. 也可以根据需要在任意两个快照之间生成一份报告.
生成报告:@?/rdbms/admin/addrpt.sql
描述并使用顾问框架
顾问依靠内存中实例积累的活动统计数据, 这些统计数据会写入 AWR, 作为快照.
来源: http://www.linuxidc.com/Linux/2019-04/158209.htm