管理AWR
• 保留期
– 默认:八天
– 考虑存储需要
• 收集间隔
– 默认:60 分钟
– 考虑存储需要和
性能影响
• 收集级别
– Basic(禁用多数ADDM 功能)
– Typical(建议级别)
– All(将其它SQL 优化信息添加到快照中)

AWR 设置中包括保留期、收集间隔和收集级别。请记住,降低其中任何设置都会影响依赖于AWR 的组件(包括指导)的功能。
增大设置可改进指导建议,但是会增加存储快照所需的空间,而且收集快照信息时的性能会下降。
优化新应用程序时,请考虑将收集级别设置为ALL。使用ALL设置可收集SQL 执行计划和定时统计信息,这些信息可以改进SQL 指导的建议。优化完成后,应重新将此设置设回TYPICAL。
示例:
将保留期改为9天,时间间隔改为2小时。
begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(12960,120); end;
将保留期改为永远保留和关闭快收集。
begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(0,0); end;
将收集级别改为ALL或者BASIC。
ALTER SYSTEM SET statistics_level = "ALL" SCOPE=MEMORY
ALTER SYSTEM SET statistics_level = "BASIC" SCOPE=MEMORY
统计级别
STATISTICS_LEVEL初始化参数可控制对各种统计信息和各种指导的捕获,其中包括自动维护任务。自动维护任务包括搜集优化程序统计信息。STATISTICS_LEVEL参数
可设置为以下级别:
• BASIC:AWR 统计信息和度量的计算被关闭。自动优化程序统计信息任务被禁用,所有指导和服务器生成的预警也被禁用。
• TYPICAL:收集数据库自我管理所需的主要统计信息。这些统计信息表示监视OracleDB 行为通常需要的信息。这包括自动搜集统计信息,以减少由于统计信息过时或无效而导致不正确执行SQL 语句的可能性。
• ALL:捕获所有可能的统计信息。此捕获级别增加了计时操作系统统计信息和计划执行统计信息。多数情况下并不需要这些统计信息,为了获得最佳性能,不应启用这些统计信息;有时执行特定的诊断测试时需要这些统计信息。
Oracle 建议将STATISTICS_LEVEL初始化参数设置为默认值TYPICAL。如果将该参数的值设置为BASIC,则会禁用自动搜集优化程序统计信息功能。
自动数据库诊断监视器(ADDM)

• 在记录每个AWR 快照之后运行
• 监视实例;检测瓶颈
• 在AWR 中存储结果
自动数据库诊断监视器(ADDM)
与其它指导不同,ADDM 在记录每个AWR 快照之后会自动运行。每次记录快照后,ADDM 会分析与最后两个快照对应的时段。ADDM 会预先监视实例,以便在大多数瓶颈问题成为严重问题之前检测到这些问题。多数情况下,ADDM 会为检测到的问题提供建议解决方案,甚至可以量化这些建议的优势。
ADDM 检测到的一些常见问题包括:
•CPU 瓶颈
• Oracle Net 连接管理不佳
• 锁争用
• 输入/输出(I/O) 能力差
• 数据库实例内存结构大小不足
•SQL 语句的负载过高
• PL/SQL 和Java 时间过高
• 检查点负载过高及原因(例如,日志文件太小)
每次ADDM 分析的结果都存储在AWR 中,并可通过Enterprise Manager进行访问。
ADDM 查找结果
在“AutomaticDatabase Diagnostic Monitor (ADDM)(自动数据库诊断监视器(ADDM))”页中,可查看上次运行ADDM 的详细查找结果。数据库时间表示会话在分析时段在数据库中花费的非空闲时间总和。为每个查找结果都提供了一个特定的影响百分比。此影响百分比表示相应问题消耗的时间与分析时段的数据库时间之比。

在幻灯片中,请注意以下几点:
1..此图标表示在此页底部显示的ADDM 输出对应于此时间点。单击其它图标可转到过去的时间(用于查看以前的分析)。
3.这些查找结果提供一个简短概要,按可优化区域显示ADDM 找到的问题。单击特定问题,可以转至“Performance Finding Details(性能查找结果详细资料)”页。
单击“View Report(查看报表)”按钮可以获得文本报表格式的性能分析详细资料。
ADDM 建议
在“PerformanceFinding Details(性能查找结果详细资料)”页中,会得到用于解决相应问题的建议。这些建议分为“Schema(方案)”、“SQL Tuning(SQL 优化)”、
“Database Configuration(数据库配置)”和其它许多类别。如果实施建议,则“Benefit(%)(缩时比率(%))”列将显示数据库已用时间的最大减少量。
ADDM 将考虑对系统的各种更改。其建议可以包括:
• 硬件更改:添加CPU 或更改I/O 子系统配置
• 数据库配置:更改初始化参数设置
• 方案更改:对表或索引进行散列分区,或者使用自动段空间管理(ASSM)
• 应用程序更改:对序列使用高速缓存选项,或使用绑定变量
• 使用其它指导:在高负载SQL 上运行SQL 优化指导或在热对象上运行段指导
指导框架

指导可提供有关资源占用率和各个服务器组件性能的有用反馈。例如,内存指导为MEMORY_TARGET初始化参数提供建议值,该参数用于控制Oracle DB 实例所使用的总内存量。
由于ADDM 依赖于AWR 中捕获的数据,因此Oracle DB 通过ADDM 可诊断自身的性能并确定如何解决识别出的问题。ADDM 在每次捕获AWR 统计信息后会自动运行。它可能还会调用其它指导。
下面是指导基础结构提供的主要优点:
• 所有指导都使用统一的界面。
• 通过使用工作量资料档案库,所有指导拥有共用的数据源和结果存储空间。
上图未显示所有指导(例如,未列出数据恢复指导和SQL 修复指导)。
自动数据库诊断监视器(ADDM)
ADDM 是一个基于服务器的专用软件,它每隔60 分钟复查一次数据库的性能。ADDM 的目标是提前检测出可能存在的系统瓶颈,并在系统性能明显降低之前提供建议的修复办法。
内存指导
内存指导实际上是多项指导功能的集合,通过它可确定数据库实例所使用的总内存的最佳设置。系统全局区(SGA) 为共享池、数据库缓冲区高速缓存、Java 池和流池提供了一组指导。Java 池和流池指导不显示在EM 的“Memory Advisor(内存指导)”页上。还有一个指导针对程序全局区(PGA)。除了指导功能外,本指导还为大型池和Java 池提供了一个中央控制点。
平均恢复时间(MTTR) 指导
使用MTTR 指导,可设置实例崩溃后数据库恢复所需的时间长短。
段指导
此指导用于查找占用空间多于所需空间的表和索引。此指导会在表空间级或方案级检查造成低效率的空间消耗问题,如果可能,还会生成脚本来减少空间消耗。
SQL 访问指导
此指导用于分析在给定时段发出的所有SQL 语句,还就其它索引或实体化视图(可提高性能)的创建提供建议。
SQL 优化指导
此指导用于分析单个SQL 语句,还提供建议以改进该语句的性能。建议中可包括重写语句、更改实例配置或添加索引等操作。不会直接调用SQL 优化指导,而是从其它工具(如顶级SQL 或顶级会话)中调用它,以帮助优化影响大的SQL 语句。
还原管理指导
使用还原管理指导时,可确定支持指定的保留期所需要的还原表空间大小。
数据恢复指导
此指导自动诊断持续性数据故障,向用户提供修复选项并根据用户的请求执行修复。数据恢复指导的用途是减少平均恢复时间(MTTR) 并提供用于自动修复数据的集中式工具。
SQL 修复指导
如果某一SQL 语句因严重错误而失败,进而导致在自动诊断资料档案库中生成问题,则可运行SQL 修复指导。该指导会对该语句进行分析,并在多数情况下会推荐一个补丁程序来修复该语句。如果实施了建议,所应用的SQL 补丁程序会让查询优化程序选择一个替代执行计划以备将来执行,从而避免故障。此操作无需更改该SQL 语句本身即可完成。
Enterprise Manager 和指导
“Advisor Central(指导中心)”页是所有指导的主页。在Database Control 主页的“Related Links(相关链接)”列表中,单击“Advisor Central(指导中心)”链接可访问此页。但是,Database Control 中并不是只有这一个可调用指导的地方。还可以在某些上下文中访问指导。
在“Advisor Central(指导中心)”页的“Advisors(指导)”选项卡上,可以列出工作量资料档案库中注册的所有指导任务。还可以按指导类型和预定义时段过滤此列表。

通过“Advisor Central(指导中心)”页的“Checkers(检查器)”选项卡,可以调度各种数据库完整性检查器。可按名称、类型或时段列出所有检查器运行。

注:使用“Change DefaultParameters(更改默认参数)”页可更改将来所有任务的默认到期时间(以天为单位)。还可以使用此页更改某些重要指导的参数。
DBMS_ADVISOR程序包

DBMS_ADVISOR程序包中包含所有指导模块的所有常数和过程声明。使用这个程序包可从命令行执行任务。
要执行指导过程,必须具有ADVISOR权限。使用ADVISOR权限可对指导过程和视图进行全权访问。
自动维护任务
自动任务维护进程:
1. 打开维护窗口。
2. 自动任务后台进程调度作业。
3. 调度程序启动作业。
4. 资源管理器限制自动任务作业的影响。
默认自动任务维护作业:
• 搜集优化程序统计信息
• 自动段指导
• 自动SQL 指导
自动维护任务
通过分析AWR 中存储的信息,数据库可确定是否需要执行常规维护任务,如刷新优化程序统计信息。自动维护任务基础结构使Oracle DB 能够自动执行这些操作。这种基础结构使用调度程序在预定义的维护窗口中运行这些任务。
默认情况下,工作日维护窗口在晚上10 点启动,并持续4 小时。在周六和周日,维护窗口在早上6 点启动,并持续20 小时。维护窗口的所有属性均可自定义,这些属性包括起始时间和结束时间、频率、每周几天等等。另外,通过将数据库资源管理器资源计划与维护窗口关联,可限制自动维护任务对正常数据库操作的影响。
维护示例:
• 使用自动维护任务基础结构自动刷新优化程序统计信息。
• 自动段指导有默认的作业,这些作业在维护窗口中运行。
• 使用DBCA 创建数据库时,可启动常规数据库备份。

在“Server(服务器)”页上单击“Scheduler(调度程序)”标题下的“AutomatedMaintenance Tasks(自动维护任务)”可访问“Automated Maintenance Task(自动维护任务)”页,在该页可以查看自动维护任务调度和最近历史记录。从此处可细化到某些任务的详细资料。单击“Configure(配置)”进入“Automated Maintenance Tasks Configuration(自动维护任务配置)”页。任务将在窗口中执行。图中显示的是已在其中执行一个任务的上一个窗口和计划在其中执行该任务的下一个窗口。
注:示例中显示的是默认任务窗口。如果维护窗口关闭,则调度程序默认情况下会终止优化程序统计信息搜集作业。之后会在下一个维护窗口中处理剩余对象。
自动维护任务配置

在“AutomatedMaintenance Tasks Configuration(自动维护任务配置)”页上,可一次全部或者按单个任务或特定窗口启用和禁用自动维护任务。还可以配置用于搜集优化程序统计信息的设置以及自动SQL 优化指导的作业控制参数。
选择窗口名称以查看或编辑窗口调度。
单击“Edit Window Group(编辑窗口组)”在窗口组中添加和删除窗口。
服务器生成的预警

预警是当数据库处于不理想状态且需要引起注意时发出的通知。默认情况下,Oracle DB通过Enterprise Manager Database Control 提供预警。也可选择配置Enterprise Manager以向管理员发送有关问题状况的电子邮件,还可在控制台上显示预警信息。
另外,还可为系统的多个相关度量设置阈值。如果数据库偏离正常读数太多而达到了这些阈值,Oracle Database11g会预先发送通知。提前通知潜在的问题,可使用户迅速作出响应,并通常在用户注意到这些问题之前就解决这些问题。
默认情况下受监视的度量大约有60 个,其中包括:
• 中断作业计数
• 等待所用的数据库时间百分比(%)
• 转储区占用率(%)
• 参照基线的SQL 响应时间百分比(%)
• 表空间占用率(%)
• 一般意外事件
另外一些可提前提供问题通知的重要度量有:
• 平均文件读取时间(厘秒)
• 响应时间(每事务处理)
• 等待时间(%)
设置阈值

要设置或编辑整个数据库的阈值,在数据库主页的“Related Links(相关链接)”区域中单击“Metric and Policy Settings(度量和策略设置)”。输入所需的警告阈值和严重阈值。数据库达到指定的值时,就会出现相应的预警。
已设置的阈值显示在“Metrics withthresholds(带有阈值的度量)”列表中。默认情况下,大约有60 个度量包含预先设置的阈值;可以根据需要更改这些阈值。“All metrics(所有度量)”列表会显示未设置阈值的度量。
单击其中一个“Edit(编辑)”图标可访问一个页面,在该页可为警告阈值或严重阈值指定其它更正操作。
单击“CollectionSchedule(收集调度)”链接并更改已调度的收集时间间隔。请注意,每个调度都会影响一组度量。
创建和测试预警
1. 指定阈值。
2. 创建测试用例。
3. 检查预警。
示例
设置当INVENTORY表空间中使用的空间超过75% 时需要收到严重预警。(此表空间不允许其数据文件自动进行扩展)。要创建和测试该预警,请执行以下步骤:
1.在Enterprise Manager中,导航到“Metrics and Policy Settings(度量和策略设置)”页,然后单击“Tablespace Used(%)(已用表空间百分比(%))”阈值的“Edit(编辑)”图标。为表空间设置所需的阈值。
2.在“Tables(表)”页上的“Schema(方案)”选项卡下,创建一个表来测试预警。使用“Define using SQL(使用SQL 定义)”操作复制现有表。STORAGE子句中的初始设置为8 MB,这会使表立即在10 MB 的INVENTORY表空间中分配出80% 的空间。
3.在收到指明此表无法扩展的错误后,请在“Database(数据库)”主页中查看关联的预警。默认情况下,每10 分钟会收集一次已用表空间百分比(%)。
大多数预警都包含相关联指导的名称,调用该指导可获得详细建议。对于每一条相应的预警消息,Database Control 都会提供一个链接以供调用相应的指导。
预警通知
通知机制使用Enterprise Manager用户界面。通知机制建立在通知规则概念的基础上,通知规则又确定了一组即将发出预警的相应通知机制。
使用Database Control 编辑通知规则。在主页上,单击“Preferences(首选项)”链接显示“General(一般信息)”页,在该页中可指定接收通知的电子邮件地址。

在“General(一般信息)”页中,单击“Notification(通知)”区域中的“Rules(规则)”链接。选择“DatabaseAvailabilityand Critical States(数据库可用性和严重状态)”
规则,然后单击“Edit(编辑)”按钮。此时会进入“Edit Notification Rule: DatabaseAvailability andCritical States(编辑通知规则:数据库可用性和严重状态)”页,在该页单击“Metrics(度量)”选项卡并编辑要接收通知的度量。

可以指定在出现特定预警时由Enterprise Manager直接向你发出通知。例如,如果你指定要接收严重预警的电子邮件通知,并且为每个调用度量的系统响应时间设置了严重阈值,那么,你可以发送一封电子邮件消息,其中包含类似于以下内容的消息:
Host Name=mydb.us.mycompany.com
Metric=Response Time per Call
Timestamp=08-NOV-2005 10:10:01 (GMT -7:00)
Severity=Critical
Message=Response time per call hasexceeded the threshold.
See the latest ADDM analysis.
Rule Name= Rule
Owner=SYSMAN
该电子邮件包含指向主机名及最新ADDM 分析的链接。
默认情况下,处于严重状态(如“数据库已关闭”、“一般预警日志错误状态”和“已用表空间”)的预警已设置发送通知。但是,要收到这些通知,必须按照以下步骤设置电子邮件信息:
1.在任何Database Control 页中,单击页眉和页脚区中的“Setup(设置)”链接。
2. 在“Setup(设置)”页中选择“Notification Methods(通知方法)”。
3. 在“NotificationsMethods(通知方法)”页的“Mail Server(邮件服务器)”区域中输入所需的信息。

还有其它通知方法,这包括脚本和简化网络管理协议(SNMP) 陷阱。后者可用于与第三方应用程序进行通信。
要收到通知,请执行以下操作:
1. 在任何Database Control 页中,单击页眉和页脚区中的“Preferences(首选项)”链接。
2. 在“Preferences(首选项)”页中选择“General(一般信息)”。在“E-mailAddresses(电子邮件地址)”区域中输入电子邮件地址。
3. 可以有选择地编辑通知规则(如更改接收通知的严重状态)。要执行此操作,请单击“NotificationRules(通知规则)”。此时会出现“NotificationRules(通知规则)”页。
对预警作出响应
• 如果需要,应搜集更多的输入信息(如运行ADDM 或其它指导进行搜集)。
• 调查严重错误。
• 采取纠正措施。
• 确认不会自动清空的预警。
对预警作出响应
收到预警时,按照预警提供的建议进行操作,或者可以考虑运行ADDM(或其它适当的指导),以便获取有关系统或对象行为的更多详细诊断信息。
系统会为严重错误生成预警和意外事件。严重错误通常会生成收集到问题中的意外事件。
可使用“Support Workbench(支持工作台)”进行调查并尽量向Oracle 技术支持报告问题。
问题的起因消失后,会自动清空大多数预警(如“空间不足”)。但是,如果就其它预警(如“一般预警日志错误”)向你发送通知,则必须由你进行确认。采取必要的纠正措施后,可通过清空或清除预警进行确认。清空某个预警后,会将这个预警发送到预警历史记录,可在“Related Links(相关链接)”下的主页上浏览历史记录。清除一个预警会从预警历史记录中删除它。
要清空类似“一般预警日志错误”的预警,请在“DiagnosticSummary(诊断概要)”下的主页上单击“Alert Log(预警日志)”链接。此时会出现“Alert Log Errors(预警日志错误)”页。选择要清空的预警,然后单击“Clear(清空)”。要清除一个预警,请选择这个预警,然后单击“Purge(清除)”。也可单击“Clear Every Open Alert(清理每个
打开的预警)”按钮或“Purge Every Alert(清除每个预警)”按钮。
预警类型和清空预警

服务器生成预警分为两种类型:阈值预警和非阈值预警。
大多数服务器生成的预警是通过对数据库度量设置警告阈值和严重阈值来配置的。可为120 多个度量定义阈值,这些度量包括:
• 每秒的物理读取次数
• 每秒的用户提交次数
•SQL 服务响应时间
除了表空间的空间占用率度量与数据库相关外,其它度量都与实例相关。阈值预警又称为“有状态预警”,清空预警条件后,会自动清空这些预警。有状态预警显示在DBA_OUTSTANDING_ALERTS中,清空后会转到DBA_ALERT_HISTORY。
服务器生成的其它预警对应于特定的数据库事件,如ORA-*错误、“快照太旧”错误、“恢复区空闲空间过少”和“可恢复会话被挂起”等。这些都不是基于阈值的预警,又称为“无状态预警”。无状态预警会直接转到历史记录表。只在Database Control 环境中,清空无状态预警才有意义,因为Database Control 会在自身的资料档案库中存储无状态预警。

扫描二维码关注我的微学堂
搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!





