共计 1695 个字符,预计需要花费 5 分钟才能阅读完成。
管理自动工作负荷知识库
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,作为快照。
更多 Oracle 相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12
: