• 管理优化程序统计信息
• 管理自动工作量资料档案库(AWR)
• 使用自动数据库诊断监视器(ADDM)
• 说明和使用指导框架
• 设置预警阈值
• 使用服务器生成的预警
• 使用自动任务
- 数据库维护
通过复杂的Oracle DB 基础结构,可以方便地执行预先数据库维护,主要包括以下要素:
• 每个Oracle DB 中都有一个内置的资料档案库,即 自动工作量资料档案库(AWR)。
Oracle DB 服务器会定期为所有重要统计信息及工作量信息创建快照,并将这些数据存储在AWR 中。用户可以对捕获的数据进行分析,也可以由数据库自己进行分析,
或者两者兼有。
• 数据库使用自动任务执行常规维护操作,如定期备份、刷新优化程序统计信息以及数据库健康检查。
被动数据库维护包括数据库健康检查器发现的严重错误和状态:
• 当出现无法自动解决并需要通知管理员的问题(如用完空间时)时,Oracle DB 服务器会提供服务器生成的预警。Oracle DB 服务器默认情况下会监视其本身,并发送预警通知发生的问题。预警不仅通知你出现问题,通常还会就如何解决报告的问题提供建议。
• 建议由一些指导生成,其中每个指导负责一个子系统。例如,有内存指导、段指导和SQL 指导。
- 查看预警历史记录
“Alert History(预警历史记录)”页会显示一个图表,图表上根据指定的时间段显示当前数据库的预警历史记录。出现预警表明可能存在问题:不是监视度量达到警告阈值或严重阈值,就是表明目标不再可用。单击“Alert History(预警历史记录)”页上列出的度量名称可获得每个预警的详细统计信息、图形和实际时间戳。此外,该页上还提供了一个输入预警相关注释(如解决方案信息)的位置。
- 术语
• 自动工作量资料档案库(AWR):是用于数据搜集、分析和提供解决方案建议的基础结构
• AWR 基线:用于性能比较的一组AWR 快照
• 度量:累计统计数据中的更改率
• 统计信息:提供数据库和对象详细信息的数据集合
– 优化程序统计信息:供查询优化程序使用
– 数据库统计信息:用于了解性能
• 阈值:比较度量值时所根据的边界值
自动工作量资料档案库(AWR) 通过为内部Oracle 服务器组件提供服务来收集、处理、维护和使用性能统计信息,以便进行问题检测和自优化。 活动会话历史记录(ASH) 是存 储在AWR 中的最近会话活动的历史记录。
统计信息是一些数据的集合,可提供有关数据库及数据库中对象的详细信息。查询优化程序会使用优化程序统计信息为每个SQL 语句选择最佳执行计划。数据库统计信息则提供用于性能监视的信息。
AWR 快照包括 数据库统计信息和度量、应用程序统计信息(事务处理量和响应时间)、操作系统统计信息及其它度量。AWR 基线是在一段时间内收集的一组AWR 快照。基线用于性能比较,这既可以是当前性能与基线的比较,也可以是一个基线与另一基线的比较。
在Oracle Database 11g中,默认情况下会收集 “系统移动窗口”基线。系统移动窗口基线是一组不断变化的快照,默认情况下包括最近八天的快照。收集了足够的数据并且计算了统计信息之后,此基线就会变为有效。默认情况下,统计信息计算被安排在每周六的午夜。
- Oracle 优化程序:概览
Oracle 优化程序可确定最有效的执行计划,这是处理任何SQL 语句最重要的一步。
该优化程序可以:
• 对表达式和条件求值
• 使用对象和系统统计信息
• 确定如何访问数据
• 确定如何联接表
• 确定最有效的路径
优化程序是Oracle DB 的一部分,用于为 SQL 语句创建执行计划。确定执行计划是处理任何SQL 语句的重要一步,会对执行时间产生重大影响。
执行计划是执行语句时按顺序执行的一系列操作。优化程序会考虑许多与被引用对象相关的以及与查询中所指定的条件相关的因素。优化程序所需的信息包括:
• 为系统(I/O、CPU 等)以及方案对象(行数、索引等)搜集的统计信息
• 字典中的信息
• WHERE子句限定符
• 开发人员提供的提示
使用诊断工具(如Enterprise Manager、EXPLAIN PLAN和SQL*Plus AUTOTRACE)时,可以看到优化程序选择的执行计划。
注:根据其功能的不同,Oracle 优化程序具有两个名称:“查询优化程序”和“自动优化程序”。
- 优化程序统计信息
优化程序统计信息:
• 是某一时间点的快照
• 每次重新启动实例后会变为永久信息
• 可自动收集
SQL> SELECT COUNT(*) FROM hr.employees;
COUNT(*)
----------
SQL> SELECT num_rows FROM dba_tables
2 WHERE owner='HR' AND table_name = 'EMPLOYEES';
NUM_ROWS
----------
优化程序统计信息
优化程序统计信息包括 表、列、索引和系统的统计信息。 表和索引的统计信息存储在数据 字典中。这些统计信息不提供实时数据。而是为优化程序提供数据存储和数据分发的正确统计快照,优化程序会使用该快照来决定如何访问数据。
收集的统计信息包括:
• 数据库块中表或索引的大小
• 行数
• 平均行大小和链计数(仅限表)
• 已删除叶行的高度和数量(仅限索引)
插入、删除和修改数据后,这些统计信息会发生变化。由于维护实时数据分发统计信息会对性能带来负面影响,因此,通过定期搜集表和索引的统计信息来更新这些统计信息。
优化程序统计信息由自动维护作业自动收集,该作业默认情况下在预定义的维护窗口中每日运行一次。系统统计信息是优化程序要使用的操作系统特征。不会自动收集这类统计信息。优化程序统计信息不同于AWR 快照中搜集的数据库性能统计信息。
- 使用“管理优化程序统计信息”页
要在Enterprise Manager 中管理优化程序统计信息,请单击“Server(服务器)”选项卡,然后单击“Query Optimizer(查询优化程序)”部分下的“Manage Optimizer Statistics(管理优化程序统计信息)”。
在此页上,可以对统计信息执行下列任务:
• 手动搜集优化程序统计信息。
• 将优化程序统计信息还原到以前的某个时间点。选择的时间点必须位于优化程序统计信息保留期内,默认为30 天。
• 锁定优化程序统计信息以确保永远不覆盖某些对象的统计信息。如果在存在很有代表性的数据时计算了某个表的统计信息,而你又希望永远保留这些统计信息,那么该任
务就很有帮助。如果锁定了统计信息,表的任何波动都不会影响这些统计信息。
• 取消对优化程序统计信息的锁定以撤消以前执行的锁定。
• 删除优化程序统计信息以删除统计信息。
最佳实践提示
可使用自动维护任务搜集优化程序统计信息。要启用搜集优化程序统计信息的任务,必须确保STATISTICS_LEVEL初始化参数设置为TYPICAL或ALL。
- 手动搜集优化程序统计信息
某些时候可能需要手动搜集统计信息,例如表的内容在两次自动搜集作业之间发生了很大 的变化,以致于统计信息无法再准确表示表。对于24 小时内其大小变化超过10% 的大型 表,通常需要此操作。
最佳实践提示:收集统计信息的频率应足够高,以保证表在两个收集期之间的变化率不超 过10%。这可能需要手动收集统计信息或使用其它维护窗口。
可以使用Enterprise Manager 或DBMS_STATS程序包手动收集统计信息。系统统计信息 只能使用 DBMS_STATS 程序包来搜集。系统统计信息向查询优化程序描述了系统的硬件 特征,例如I/O 以及CPU 性能和利用率。
选择“Gather Optimizer Statistics(搜集优化程序统计信息)”菜单会启动一个向导,使用 该向导可以为要搜集优化程序统计信息的作业选择作用域、对象、选项和调度。该向导会 在你指定的以下作用域提交DBMS_STATS.GATHER_*_STATS作业:表、方案或数据库。
在该向导中,将首选项设置为DBMS_STATS程序包所使用的默认值,并将此作业安排在你 决定的时间运行。
不建议手动搜集常规统计信息,因为通过维护窗口搜集统计信息的效率更高,而且对用户 的影响更小。如果自动作业已失败或已禁用,也可提交手动作业。
此外,还可以直接通过DBMS_STATS程序包搜集优化程序统计信息:
SQL> EXEC dbms_stats.gather_table_stats('HR','EMPLOYEES');
SQL> SELECT num_rows FROM dba_tables WHERE owner='HR' AND table_name = 'EMPLOYEES';
NUM_ROWS
----------
214
注意,现在的行数正确地反映了截止到搜集统计信息时表中的行数。通过DBMS_STATS 还可对整个方案甚至整个数据库启用手动收集统计信息。
除非工作量发生了显著变化,否则系统统计信息不会改变。因此,不需要频繁调整系统 统计信息。DBMS_STATS.GATHER_SYSTEM_STATS过程会在指定时间段内收集系统 统计信息,你也可以启动系统统计信息的搜集过程并执行另一个调用来停止搜集。
最佳实践提示:创建数据库时使用以下命令:
SQL> EXEC dbms_stats.gather_system_stats('NOWORKLOAD');
NOWORKLOAD选项会花费几分钟的时间(具体取决于数据库大小)来捕获I/O 特征的 估计值,如平均读取查找时间和I/O 传输率。
- 用于搜集统计信息的首选项
可在各种级别调用
DBMS_STATS.GATHER_*_STATS过程,以便搜集整个数据库或单个
对象(比如表)的统计信息。调用GATHER_*_STATS过程时,通常可将其中的几个参数
设置为默认值。提供的默认值适用于数据库中的多数对象,但对于某些对象或方案,需要
更改这些默认值。在Oracle Database 11g中,可以为单个对象、方案或数据库设置值(称
为“首选项”),也可以使用全局级命令更改默认值,而无需为每个对象运行手动作业。
DBMS_STATS.GATHER_*_STATS过程,以便搜集整个数据库或单个
对象(比如表)的统计信息。调用GATHER_*_STATS过程时,通常可将其中的几个参数
设置为默认值。提供的默认值适用于数据库中的多数对象,但对于某些对象或方案,需要
更改这些默认值。在Oracle Database 11g中,可以为单个对象、方案或数据库设置值(称
为“首选项”),也可以使用全局级命令更改默认值,而无需为每个对象运行手动作业。
这些首选项指定了赋予搜集过程的参数。SET_*_PREFS过程为不属于SYS或SYSTEM
的任何对象创建首选项值。对于应位于数据库范围内的任何参数,一般由DBA 为其设置
全局首选项。这些过程适用于任何可设置为默认值的参数。
的任何对象创建首选项值。对于应位于数据库范围内的任何参数,一般由DBA 为其设置
全局首选项。这些过程适用于任何可设置为默认值的参数。
设置指定的首选项时,SET_DATATBASE_PREFS过程会循环访问数据库中的所有表和
方案。SET_SCHEMA_PREFS循环访问指定方案中的表。SET_TABLE_PREFS为单个表
设置首选项值。
方案。SET_SCHEMA_PREFS循环访问指定方案中的表。SET_TABLE_PREFS为单个表
设置首选项值。
无论是在数据库级、方案级还是在表级设置,所有对象首选项均保存在一个单个表中。
在方案级更改这些首选项会覆盖以前在表级设置的首选项。
在执行各种搜集过程时,这些过程会检索已经为每个对象设置的对象级首选项。你可以在
DBA_TAB_STAT_PREFS视图中查看这些对象级首选项。未在对象级设置的所有首选项
都会被设置为全局级首选项。通过对每个首选项调用DBMS_STATS.GET_PREFS过程,
可以查看全局首选项。
DBA_TAB_STAT_PREFS视图中查看这些对象级首选项。未在对象级设置的所有首选项
都会被设置为全局级首选项。通过对每个首选项调用DBMS_STATS.GET_PREFS过程,
可以查看全局首选项。
你可以在表级、方案级、数据库级和全局级设置、获取、删除、导出和导入这些首选项。
首选项的值一般来说是按全局级向表级的顺序进行设置,最终将首选项应用于最小的组。
如下实例:
begin
dbms_stats.gather_table_stats(
ownname=> 'HR',
tabname=> 'EMPLOYEES' ,
estimate_percent=> DBMS_STATS.AUTO_SAMPLE_SIZE,
cascade=> DBMS_STATS.AUTO_CASCADE,
degree=> null,
no_invalidate=> DBMS_STATS.AUTO_INVALIDATE,
granularity=> 'AUTO',
method_opt=> 'FOR ALL COLUMNS SIZE AUTO');
dbms_stats.lock_table_stats(ownname=> 'HR', tabname=> 'EMPLOYEES' );
end;
Oracle Database 11g中的首选项:
• CASCADE,确定在搜集表统计信息的过程中是否收集索引统计信息。
• DEGREE,设置用于搜集统计信息的并行度。
• PUBLISH,用于确定是将统计信息发布到字典还是将其存储在专用区域中。这使得
DBA 可以先验证统计信息,然后再使用PUBLISH_PENDING_STATS过程将其发布
到数据字典。
DBA 可以先验证统计信息,然后再使用PUBLISH_PENDING_STATS过程将其发布
到数据字典。
• STALE_PERCENT用于确定判断对象是否具有过时统计信息所依据的阈值级别。该值
是自上次搜集统计信息以来已修改的行数百分比。
是自上次搜集统计信息以来已修改的行数百分比。
exec dbms_stats. set_table_prefs('SH','SALES','STALE_PERCENT ','13');
示例仅将SH.SALES的默认值10%
更改为13%。
更改为13%。
• INCREMENTAL,以增量方式搜集分区表的全局统计信息。
• METHOD_OPT,确定列和用于搜集列统计信息的直方图参数。
• GRANULARITY,确定收集统计信息的粒度(仅当表为分区表时才适用)。
• NO_INVALIDATE,确定是否使游标失效。
• ESTIMATE_PERCENT,确定为获得有效的统计信息而采样的行数。它是表中行数的
百分比。
百分比。
使用DBMS_STATS.DELETE_*_PREFS过程,可在表级、方案级和数据库级删除首选项。
使用DBMS_STATS.RESET_PARAM_DEFAULTS过程,可将全局首选项重置为建议值。
- 自动工作量资料档案库(AWR)
• 内置的性能信息资料档案库
• 每60 分钟获取一次数据库度量快照,保留期为八天
• 所有自我管理功能的基础
自动工作量资料档案库(AWR)
AWR 是为Oracle Database 11g组件提供服务的基础结构,借助它可以收集、维护和利用
统计信息进行问题检测和自优化。可将此基础结构视为数据库统计信息、度量等的数据
仓库。
统计信息进行问题检测和自优化。可将此基础结构视为数据库统计信息、度量等的数据
仓库。
数据库(默认情况下)每60 分钟从SGA 中自动捕获一次统计信息,然后将其以快照形式
存储在AWR 中。这些快照通过一个名为
易管理性监视器(MMON)
的后台进程存储在磁盘
上。默认情况下,快照会保留八天。你可以修改快照时间间隔和保留间隔。
存储在AWR 中。这些快照通过一个名为
易管理性监视器(MMON)
的后台进程存储在磁盘
上。默认情况下,快照会保留八天。你可以修改快照时间间隔和保留间隔。
AWR 中包含数百个表,所有这些表均属于
SYSMAN方案且存储在SYSAUX表空间中。
SYSMAN方案且存储在SYSAUX表空间中。
Oracle 建议仅使用Enterprise Manager 或DBMS_WORKLOAD_REPOSITORY程序包访问
资料档案库,对AWR 进行操作。不支持直接对资料档案库表进行DML 操作。
资料档案库,对AWR 进行操作。不支持直接对资料档案库表进行DML 操作。
- AWR 基础结构
AWR 基础结构由两个主要部分组成:
•
一个内存中统计信息收集工具,Oracle Database 11g组件使用它来收集统计信息。
出于性能方面的考虑,这些统计信息存储在内存中。可以通过动态性能(V$) 视图
访问存储在内存中的统计信息。
一个内存中统计信息收集工具,Oracle Database 11g组件使用它来收集统计信息。
出于性能方面的考虑,这些统计信息存储在内存中。可以通过动态性能(V$) 视图
访问存储在内存中的统计信息。
• 代表该工具持久部分的AWR 快照。AWR 快照可以通过数据字典视图和Enterprise
Manager Database Control 来访问。
Manager Database Control 来访问。
出于以下几方面的考虑,统计信息存储在持久存储中:
• 实例崩溃后统计信息需要仍然可用。
• 某些分析需要使用历史记录数据进行基线比较。
• 可能会发生内存溢出。当旧统计信息因内存不足而被新统计信息替换时,被替换的
数据可以存储起来供以后使用。
数据可以存储起来供以后使用。
内存版本的统计信息定期通过MMON后台进程转移到磁盘上。使用AWR 时,Oracle DB
可自动捕获历史统计信息,而不需要DBA 进行干预。
可自动捕获历史统计信息,而不需要DBA 进行干预。
- AWR 基线
AWR 基线是一个AWR 快照集。通常是在AWR 中标记和保留的某个重要时段的快照数
据的集合。基线是用一对快照定义的;这两个快照通过其快照序列号(snap_id) 或起始
和结束时间进行标识。每个快照集都有起始和结束快照,并包含位于这两个快照之间的所
有快照。快照集用于保留快照数据。因此,默认情况下,在删除快照集前,属于快照集的
快照会一直保留。可以根据快照要保留的天数设置一个过期值。
据的集合。基线是用一对快照定义的;这两个快照通过其快照序列号(snap_id) 或起始
和结束时间进行标识。每个快照集都有起始和结束快照,并包含位于这两个快照之间的所
有快照。快照集用于保留快照数据。因此,默认情况下,在删除快照集前,属于快照集的
快照会一直保留。可以根据快照要保留的天数设置一个过期值。
基线通过用户提供的名称来标识。执行CREATE_BASELINE过程可基于一个快照集创建
基线,并可以指定名称和一对快照标识符。对于新创建的基线,会为其分配一个在数据库
生命周期内唯一的基线标识符。通常是基于过去有代表性的时段建立快照集,以用于与
当前系统行为进行比较。你也可以在Database Control 中使用基线来设置基于阈值的预警。
可以使用该过程的过期参数设置以天数表示的过期时间。默认值为NULL,表示“永不
过期”。
基线,并可以指定名称和一对快照标识符。对于新创建的基线,会为其分配一个在数据库
生命周期内唯一的基线标识符。通常是基于过去有代表性的时段建立快照集,以用于与
当前系统行为进行比较。你也可以在Database Control 中使用基线来设置基于阈值的预警。
可以使用该过程的过期参数设置以天数表示的过期时间。默认值为NULL,表示“永不
过期”。
可从DBA_HIST_SNAPSHOT或Database Control 中直接获取snap_id。
- Enterprise Manager 和AWR
单击“Server(服务器)”选项卡,然后单击“Statistics Management(统计信息管理)”
部分中的“Automatic Workload Repository(自动工作量资料档案库)”。
部分中的“Automatic Workload Repository(自动工作量资料档案库)”。
在“Automatic
Workload Repository(自动工作量资料档案库)”页上,单击“Edit(编辑)”更改设置。
在“Automatic Workload Repository(自动工作量资料档案库)”页上,可执行下列操作:
Workload Repository(自动工作量资料档案库)”页上,单击“Edit(编辑)”更改设置。
在“Automatic Workload Repository(自动工作量资料档案库)”页上,可执行下列操作:
• 编辑工作量资料档案库设置
• 查看已创建的快照的详细信息,或者手动创建新快照
• 创建AWR 基线
• 生成AWR 报表
- 管理AWR
• 保留期
– 默认:八天
– 考虑存储需要
• 收集间隔
– 默认:60 分钟
– 考虑存储需要和
性能影响
• 收集级别
– Basic(禁用多数ADDM 功能)
– Typical(建议级别)
– All(将其它SQL 优化信息添加到快照中)
AWR 设置中包括保留期、收集间隔和收集级别。请记住,降低其中任何设置都会影响依
赖于AWR 的组件(包括指导)的功能。
赖于AWR 的组件(包括指导)的功能。
增大设置可改进指导建议,但是会增加存储快照所需的空间,而且收集快照信息时的性能
会下降。
会下降。
优化新应用程序时,请考虑将收集级别设置为ALL。使用ALL设置可收集SQL 执行计划
和定时统计信息,这些信息可以改进SQL 指导的建议。优化完成后,应重新将此设置设回
TYPICAL。
和定时统计信息,这些信息可以改进SQL 指导的建议。优化完成后,应重新将此设置设回
TYPICAL。
示例:
将保留期改为9天,时间间隔改为2小时。
,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参数
自动维护任务。自动维护任务包括搜集优化程序统计信息。STATISTICS_LEVEL参数
可设置为以下级别:
• BASIC:AWR 统计信息和度量的计算被关闭。自动优化程序统计信息任务被禁用,
所有指导和服务器生成的预警也被禁用。
所有指导和服务器生成的预警也被禁用。
• TYPICAL:收集数据库自我管理所需的主要统计信息。这些统计信息表示监视Oracle
DB 行为通常需要的信息。这包括自动搜集统计信息,以减少由于统计信息过时或无
DB 行为通常需要的信息。这包括自动搜集统计信息,以减少由于统计信息过时或无
效而导致不正确执行SQL 语句的可能性。
• ALL:捕获所有可能的统计信息。此捕获级别增加了计时操作系统统计信息和计划执
行统计信息。多数情况下并不需要这些统计信息,为了获得最佳性能,不应启用这些
行统计信息。多数情况下并不需要这些统计信息,为了获得最佳性能,不应启用这些
统计信息;有时执行特定的诊断测试时需要这些统计信息。
Oracle 建议将STATISTICS_LEVEL初始化参数设置为默认值TYPICAL。如果将该参数
的值设置为BASIC,则会禁用自动搜集优化程序统计信息功能。
的值设置为BASIC,则会禁用自动搜集优化程序统计信息功能。
- 自动数据库诊断监视器(ADDM)
• 在记录每个AWR 快照之后运行
• 监视实例;检测瓶颈
• 在AWR 中存储结果
自动数据库诊断监视器(ADDM)
与其它指导不同,ADDM 在记录每个AWR 快照之后会自动运行。每次记录快照后,
ADDM 会分析与最后两个快照对应的时段。ADDM 会预先监视实例,以便在大多数瓶颈
问题成为严重问题之前检测到这些问题。
多数情况下,ADDM 会为检测到的问题提供建议解决方案,甚至可以量化这些建议的优势。
ADDM 会分析与最后两个快照对应的时段。ADDM 会预先监视实例,以便在大多数瓶颈
问题成为严重问题之前检测到这些问题。
多数情况下,ADDM 会为检测到的问题提供建议解决方案,甚至可以量化这些建议的优势。
ADDM 检测到的一些常见问题包括:
•CPU 瓶颈
• Oracle Net 连接管理不佳
• 锁争用
• 输入/输出(I/O) 能力差
• 数据库实例内存结构大小不足
•SQL 语句的负载过高
• PL/SQL 和Java 时间过高
• 检查点负载过高及原因(例如,日志文件太小)
每次ADDM 分析的结果都存储在AWR 中,并可通过Enterprise Manager 进行访问。
- ADDM 查找结果
在“Automatic Database Diagnostic Monitor (ADDM)(自动数据库诊断监视器(ADDM))”
页中,可查看上次运行ADDM 的详细查找结果。数据库时间表示会话在分析时段在数据
库中花费的非空闲时间总和。为每个查找结果都提供了一个特定的影响百分比。此影响
百分比表示相应问题消耗的时间与分析时段的数据库时间之比。
页中,可查看上次运行ADDM 的详细查找结果。数据库时间表示会话在分析时段在数据
库中花费的非空闲时间总和。为每个查找结果都提供了一个特定的影响百分比。此影响
百分比表示相应问题消耗的时间与分析时段的数据库时间之比。
在幻灯片中,请注意以下几点:
1.
.此图标表示在此页底部显示的ADDM 输出对应于此时间点。单击其它图标可转到过
去的时间(用于查看以前的分析)。
.此图标表示在此页底部显示的ADDM 输出对应于此时间点。单击其它图标可转到过
去的时间(用于查看以前的分析)。
3.这些查找结果提供一个简短概要,按可优化区域显示ADDM 找到的问题。单击特定
问题,可以转至“Performance Finding Details(性能查找结果详细资料)”页。
问题,可以转至“Performance Finding Details(性能查找结果详细资料)”页。
单击“View Report(查看报表)”按钮可以获得文本报表格式的性能分析详细资料。
- ADDM 建议
在“Performance Finding Details(性能查找结果详细资料)”页中,会得到用于解决相应
问题的建议。这些建议分为“Schema(方案)”、“SQL Tuning(SQL 优化)”、
问题的建议。这些建议分为“Schema(方案)”、“SQL Tuning(SQL 优化)”、
“Database Configuration(数据库配置)”和其它许多类别。如果实施建议,
则“Benefit(%)(缩时比率(%))”列将显示数据库已用时间的最大减少量。
则“Benefit(%)(缩时比率(%))”列将显示数据库已用时间的最大减少量。
ADDM 将考虑对系统的各种更改。其建议可以包括:
• 硬件更改:添加CPU 或更改I/O 子系统配置
• 数据库配置:更改初始化参数设置
• 方案更改:对表或索引进行散列分区,或者使用自动段空间管理(ASSM)
• 应用程序更改:对序列使用高速缓存选项,或使用绑定变量
• 使用其它指导:在高负载SQL 上运行SQL 优化指导或在热对象上运行段指导
- 指导框架
指导可提供有关资源占用率和各个服务器组件性能的有用反馈。例如,内存指导为
MEMORY_TARGET初始化参数提供建议值,该参数用于控制Oracle DB 实例所使用的总
MEMORY_TARGET初始化参数提供建议值,该参数用于控制Oracle DB 实例所使用的总
内存量。
由于ADDM 依赖于AWR 中捕获的数据,因此Oracle DB 通过ADDM 可诊断自身的性能
并确定如何解决识别出的问题。
ADDM 在每次捕获AWR 统计信息后会自动运行
。它可能
还会调用其它指导。
并确定如何解决识别出的问题。
ADDM 在每次捕获AWR 统计信息后会自动运行
。它可能
还会调用其它指导。
下面是指导基础结构提供的主要优点:
• 所有指导都使用统一的界面。
• 通过使用工作量资料档案库,所有指导拥有共用的数据源和结果存储空间。
上图未显示所有指导(例如,未列出数据恢复指导和SQL 修复指导)。
自动数据库诊断监视器(ADDM)
ADDM 是一个基于服务器的专用软件,它每隔60 分钟复查一次数据库的性能。ADDM 的
目标是提前检测出可能存在的系统瓶颈,并在系统性能明显降低之前提供建议的修复办法。
目标是提前检测出可能存在的系统瓶颈,并在系统性能明显降低之前提供建议的修复办法。
内存指导
内存指导实际上是多项指导功能的集合,通过它可确定数据库实例所使用的总内存的最佳
设置。系统全局区(SGA) 为共享池、数据库缓冲区高速缓存、Java 池和流池提供了一组
指导。Java 池和流池指导不显示在EM 的“Memory Advisor(内存指导)”页上。还有
一个指导针对程序全局区(PGA)。除了指导功能外,本指导还为大型池和Java 池提供了
一个*控制点。
设置。系统全局区(SGA) 为共享池、数据库缓冲区高速缓存、Java 池和流池提供了一组
指导。Java 池和流池指导不显示在EM 的“Memory Advisor(内存指导)”页上。还有
一个指导针对程序全局区(PGA)。除了指导功能外,本指导还为大型池和Java 池提供了
一个*控制点。
平均恢复时间(MTTR) 指导
使用MTTR 指导,可设置实例崩溃后数据库恢复所需的时间长短。
段指导
此指导用于查找占用空间多于所需空间的表和索引。此指导会在表空间级或方案级检查
造成低效率的空间消耗问题,如果可能,还会生成脚本来减少空间消耗。
造成低效率的空间消耗问题,如果可能,还会生成脚本来减少空间消耗。
SQL 访问指导
此指导用于分析在给定时段发出的所有SQL 语句,还就其它索引或实体化视图(可提高
性能)的创建提供建议。
性能)的创建提供建议。
SQL 优化指导
此指导用于分析单个SQL 语句,还提供建议以改进该语句的性能。建议中可包括重写
语句、更改实例配置或添加索引等操作。不会直接调用SQL 优化指导,而是从其它工具
语句、更改实例配置或添加索引等操作。不会直接调用SQL 优化指导,而是从其它工具
(如*SQL 或*会话)中调用它,以帮助优化影响大的SQL 语句。
还原管理指导
使用还原管理指导时,可确定支持指定的保留期所需要的还原表空间大小。
数据恢复指导
此指导自动诊断持续性数据故障,向用户提供修复选项并根据用户的请求执行修复。数据
恢复指导的用途是减少平均恢复时间(MTTR) 并提供用于自动修复数据的集中式工具。
恢复指导的用途是减少平均恢复时间(MTTR) 并提供用于自动修复数据的集中式工具。
SQL 修复指导
如果某一SQL 语句因严重错误而失败,进而导致在自动诊断资料档案库中生成问题,则
可运行SQL 修复指导。该指导会对该语句进行分析,并在多数情况下会推荐一个补丁程
序来修复该语句。如果实施了建议,所应用的SQL 补丁程序会让查询优化程序选择一个
替代执行计划以备将来执行,从而避免故障。此操作无需更改该SQL 语句本身即可完成。
可运行SQL 修复指导。该指导会对该语句进行分析,并在多数情况下会推荐一个补丁程
序来修复该语句。如果实施了建议,所应用的SQL 补丁程序会让查询优化程序选择一个
替代执行计划以备将来执行,从而避免故障。此操作无需更改该SQL 语句本身即可完成。
- Enterprise Manager 和指导
“Advisor Central(指导中心)”页是所有指导的主页。在Database Control 主页的
“Related Links(相关链接)”列表中,单击“Advisor Central(指导中心)”链接可访问
“Related Links(相关链接)”列表中,单击“Advisor Central(指导中心)”链接可访问
此页。但是,Database Control 中并不是只有这一个可调用指导的地方。还可以在某些上下
文中访问指导。
文中访问指导。
在“Advisor Central(指导中心)”页的“Advisors(指导)”选项卡上,可以列出工作量
资料档案库中注册的所有指导任务。还可以按指导类型和预定义时段过滤此列表。、
资料档案库中注册的所有指导任务。还可以按指导类型和预定义时段过滤此列表。、
通过“Advisor Central(指导中心)”页的“Checkers(检查器)”选项卡,可以调度各种
数据库完整性检查器。可按名称、类型或时段列出所有检查器运行。
数据库完整性检查器。可按名称、类型或时段列出所有检查器运行。
注:使用“Change Default Parameters(更改默认参数)”页可更改将来所有任务的默认到
期时间(以天为单位)。还可以使用此页更改某些重要指导的参数。
期时间(以天为单位)。还可以使用此页更改某些重要指导的参数。
- DBMS_ADVISOR程序包
DBMS_ADVISOR程序包中包含所有指导模块的所有常数和过程声明。使用这个程序包
可从命令行执行任务。
可从命令行执行任务。
要执行指导过程,必须具有ADVISOR权限。使用ADVISOR权限可对指导过程和视图
进行全权访问。
进行全权访问。
- 自动维护任务
自动任务维护进程:
1. 打开维护窗口。
2. 自动任务后台进程调度作业。
3. 调度程序启动作业。
4. 资源管理器限制自动任务作业的影响。
默认自动任务维护作业:
• 搜集优化程序统计信息
• 自动段指导
• 自动SQL 指导
自动维护任务
通过分析AWR 中存储的信息,数据库可确定是否需要执行常规维护任务,如刷新优化程
序统计信息。自动维护任务基础结构使Oracle DB 能够自动执行这些操作。这种基础结构
使用调度程序在预定义的维护窗口中运行这些任务。
序统计信息。自动维护任务基础结构使Oracle DB 能够自动执行这些操作。这种基础结构
使用调度程序在预定义的维护窗口中运行这些任务。
默认情况下,工作日维护窗口在晚上10 点启动,并持续4 小时。在周六和周日,维护窗
口在早上6 点启动,并持续20 小时。维护窗口的所有属性均可自定义,这些属性包括起
始时间和结束时间、频率、每周几天等等。另外,通过将数据库资源管理器资源计划与
维护窗口关联,可限制自动维护任务对正常数据库操作的影响。
口在早上6 点启动,并持续20 小时。维护窗口的所有属性均可自定义,这些属性包括起
始时间和结束时间、频率、每周几天等等。另外,通过将数据库资源管理器资源计划与
维护窗口关联,可限制自动维护任务对正常数据库操作的影响。
维护示例:
• 使用自动维护任务基础结构自动刷新优化程序统计信息。
• 自动段指导有默认的作业,这些作业在维护窗口中运行。
• 使用DBCA 创建数据库时,可启动常规数据库备份。
在“Server(服务器)”页上单击“Scheduler(调度程序)”标题下的“Automated
Maintenance Tasks(自动维护任务)”可访问“Automated Maintenance Task(自动维护
Maintenance Tasks(自动维护任务)”可访问“Automated Maintenance Task(自动维护
任务)”页,在该页可以查看自动维护任务调度和最近历史记录。从此处可细化到某些
任务的详细资料。单击“Configure(配置)”进入“Automated Maintenance Tasks
任务的详细资料。单击“Configure(配置)”进入“Automated Maintenance Tasks
Configuration(自动维护任务配置)”页。任务将在窗口中执行。图中显示的是已在其中
执行一个任务的上一个窗口和计划在其中执行该任务的下一个窗口。
执行一个任务的上一个窗口和计划在其中执行该任务的下一个窗口。
注:示例中显示的是默认任务窗口。如果维护窗口关闭,则调度程序默认情况下会终止
优化程序统计信息搜集作业。之后会在下一个维护窗口中处理剩余对象。
优化程序统计信息搜集作业。之后会在下一个维护窗口中处理剩余对象。
- 自动维护任务配置
在“Automated Maintenance Tasks Configuration(自动维护任务配置)”页上,可一次全部
或者按单个任务或特定窗口启用和禁用自动维护任务。还可以配置用于搜集优化程序统计
信息的设置以及自动SQL 优化指导的作业控制参数。
或者按单个任务或特定窗口启用和禁用自动维护任务。还可以配置用于搜集优化程序统计
信息的设置以及自动SQL 优化指导的作业控制参数。
选择窗口名称以查看或编辑窗口调度。
单击“Edit Window Group(编辑窗口组)”在窗口组中添加和删除窗口。
- 服务器生成的预警
预警是当数据库处于不理想状态且需要引起注意时发出的通知。默认情况下,Oracle DB
通过Enterprise Manager Database Control 提供预警。也可选择配置Enterprise Manager 以向
管理员发送有关问题状况的电子邮件,还可在控制台上显示预警信息。
通过Enterprise Manager Database Control 提供预警。也可选择配置Enterprise Manager 以向
管理员发送有关问题状况的电子邮件,还可在控制台上显示预警信息。
另外,还可为系统的多个相关度量设置阈值。如果数据库偏离正常读数太多而达到了这些
阈值,Oracle Database 11g会预先发送通知。提前通知潜在的问题,可使用户迅速作出响
应,并通常在用户注意到这些问题之前就解决这些问题。
阈值,Oracle Database 11g会预先发送通知。提前通知潜在的问题,可使用户迅速作出响
应,并通常在用户注意到这些问题之前就解决这些问题。
默认情况下受监视的度量大约有60 个,其中包括:
• 中断作业计数
• 等待所用的数据库时间百分比(%)
• 转储区占用率(%)
• 参照基线的SQL 响应时间百分比(%)
• 表空间占用率(%)
• 一般意外事件
另外一些可提前提供问题通知的重要度量有:
• 平均文件读取时间(厘秒)
• 响应时间(每事务处理)
• 等待时间(%)
- 设置阈值
要设置或编辑整个数据库的阈值,在数据库主页的“Related Links(相关链接)”区域
中单击“Metric and Policy Settings(度量和策略设置)”。输入所需的警告阈值和严重阈
值。数据库达到指定的值时,就会出现相应的预警。
中单击“Metric and Policy Settings(度量和策略设置)”。输入所需的警告阈值和严重阈
值。数据库达到指定的值时,就会出现相应的预警。
已设置的阈值显示在“Metrics with thresholds(带有阈值的度量)”列表中。默认情况下,
大约有60 个度量包含预先设置的阈值;可以根据需要更改这些阈值。“All metrics
(所有度量)”列表会显示未设置阈值的度量。
大约有60 个度量包含预先设置的阈值;可以根据需要更改这些阈值。“All metrics
(所有度量)”列表会显示未设置阈值的度量。
单击其中一个“Edit(编辑)”图标可访问一个页面,在该页可为警告阈值或严重阈值
指定其它更正操作。
指定其它更正操作。
单击“Collection Schedule(收集调度)”链接并更改已调度的收集时间间隔。请注意,
每个调度都会影响一组度量。
每个调度都会影响一组度量。
- 创建和测试预警
1. 指定阈值。
2. 创建测试用例。
3. 检查预警。
示例
设置当INVENTORY表空间中使用的空间超过75% 时需要收到严重预警。(此表空间
不允许其数据文件自动进行扩展)。要创建和测试该预警,请执行以下步骤:
不允许其数据文件自动进行扩展)。要创建和测试该预警,请执行以下步骤:
1.在Enterprise Manager 中,导航到“Metrics and Policy Settings(度量和策略设置)”
页,然后单击“Tablespace Used (%)(已用表空间百分比(%))”阈值的“Edit(编
页,然后单击“Tablespace Used (%)(已用表空间百分比(%))”阈值的“Edit(编
辑)”图标。为表空间设置所需的阈值。
2.在“Tables(表)”页上的“Schema(方案)”选项卡下,创建一个表来测试预警。
使用“Define using SQL(使用SQL 定义)”操作复制现有表。STORAGE子句中的初
使用“Define using SQL(使用SQL 定义)”操作复制现有表。STORAGE子句中的初
始设置为8 MB,这会使表立即在10 MB 的INVENTORY表空间中分配出80% 的空间。
3.在收到指明此表无法扩展的错误后,请在“Database(数据库)”主页中查看关联的
预警。默认情况下,每10 分钟会收集一次已用表空间百分比(%)。
预警。默认情况下,每10 分钟会收集一次已用表空间百分比(%)。
大多数预警都包含相关联指导的名称,调用该指导可获得详细建议。对于每一条相应的
预警消息,Database Control 都会提供一个链接以供调用相应的指导。
预警消息,Database Control 都会提供一个链接以供调用相应的指导。
- 预警通知
通知机制使用Enterprise Manager 用户界面。通知机制建立在通知规则概念的基础上,
通知规则又确定了一组即将发出预警的相应通知机制。
通知规则又确定了一组即将发出预警的相应通知机制。
使用Database Control 编辑通知规则。在主页上,单击“Preferences(首选项)”链接
显示“General(一般信息)”页,在该页中可指定接收通知的电子邮件地址。
显示“General(一般信息)”页,在该页中可指定接收通知的电子邮件地址。
在“General(一般信息)”页中,单击“Notification(通知)”区域中的“Rules(规
则)”链接。选择“Database Availabilityand Critical States(数据库可用性和严重状态)”
则)”链接。选择“Database Availabilityand Critical States(数据库可用性和严重状态)”
规则,然后单击“Edit(编辑)”按钮。此时会进入“Edit Notification Rule: Database
Availability and Critical States(编辑通知规则:数据库可用性和严重状态)”页,在该页
单击“Metrics(度量)”选项卡并编辑要接收通知的度量。
Availability and Critical 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 has exceeded the threshold.
See the latest ADDM analysis.
Rule Name= Rule
Owner=SYSMAN
该电子邮件包含指向主机名及最新ADDM 分析的链接。
默认情况下,处于严重状态(如“数据库已关闭”、“一般预警日志错误状态”和“已用
表空间”)的预警已设置发送通知。但是,要收到这些通知,必须按照以下步骤设置电子
表空间”)的预警已设置发送通知。但是,要收到这些通知,必须按照以下步骤设置电子
邮件信息:
1.在任何Database Control 页中,单击页眉和页脚区中的“Setup(设置)”链接。
2. 在“Setup(设置)”页中选择“Notification Methods(通知方法)”。
3. 在“Notifications Methods(通知方法)”页的“Mail Server(邮件服务器)”区域中
输入所需的信息。
输入所需的信息。
还有其它通知方法,这包括脚本和简化网络管理协议(SNMP) 陷阱。后者可用于与第三方
应用程序进行通信。
应用程序进行通信。
要收到通知,请执行以下操作:
1. 在任何Database Control 页中,单击页眉和页脚区中的“Preferences(首选项)”链接。
2. 在“Preferences(首选项)”页中选择“General(一般信息)”。在“E-mail
Addresses(电子邮件地址)”区域中输入电子邮件地址。
Addresses(电子邮件地址)”区域中输入电子邮件地址。
3. 可以有选择地编辑通知规则(如更改接收通知的严重状态)。要执行此操作,请单击
“Notification Rules(通知规则)”。此时会出现“Notification Rules(通知规则)”页。
“Notification Rules(通知规则)”。此时会出现“Notification Rules(通知规则)”页。
- 对预警作出响应
• 如果需要,应搜集更多的输入信息(如运行ADDM 或
其它指导进行搜集)。
其它指导进行搜集)。
• 调查严重错误。
• 采取纠正措施。
• 确认不会自动清空的预警。
对预警作出响应
收到预警时,按照预警提供的建议进行操作,或者可以考虑运行ADDM(或其它适当
的指导),以便获取有关系统或对象行为的更多详细诊断信息。
的指导),以便获取有关系统或对象行为的更多详细诊断信息。
系统会为严重错误生成预警和意外事件。严重错误通常会生成收集到问题中的意外事件。
可使用“Support Workbench(支持工作台)”进行调查并尽量向Oracle 技术支持报告
问题。
问题。
问题的起因消失后,会自动清空大多数预警(如“空间不足”)。但是,如果就其它预警
(如“一般预警日志错误”)向你发送通知,则必须由你进行确认。采取必要的纠正措施
(如“一般预警日志错误”)向你发送通知,则必须由你进行确认。采取必要的纠正措施
后,可通过清空或清除预警进行确认。清空某个预警后,会将这个预警发送到预警历史
记录,可在“Related Links(相关链接)”下的主页上浏览历史记录。清除一个预警会从
预警历史记录中删除它。
记录,可在“Related Links(相关链接)”下的主页上浏览历史记录。清除一个预警会从
预警历史记录中删除它。
要清空类似“一般预警日志错误”的预警,请在“Diagnostic Summary(诊断概要)”下
的主页上单击“Alert Log(预警日志)”链接。此时会出现“Alert Log Errors(预警日志错误)”页。选择要清空的预警,然后单击“Clear(清空)”。要清除一个预警,请选
择这个预警,然后单击“Purge(清除)”。也可单击“Clear Every Open Alert(清理每个
的主页上单击“Alert Log(预警日志)”链接。此时会出现“Alert Log Errors(预警日志错误)”页。选择要清空的预警,然后单击“Clear(清空)”。要清除一个预警,请选
择这个预警,然后单击“Purge(清除)”。也可单击“Clear Every Open Alert(清理每个
打开的预警)”按钮或“Purge Every Alert(清除每个预警)”按钮。
- 预警类型和清空预警
服务器生成预警分为两种类型:阈值预警和非阈值预警。
大多数服务器生成的预警是通过对数据库度量设置警告阈值和严重阈值来配置的。可为
120 多个度量定义阈值,这些度量包括:
120 多个度量定义阈值,这些度量包括:
• 每秒的物理读取次数
• 每秒的用户提交次数
•SQL 服务响应时间
除了表空间的空间占用率度量与数据库相关外,其它度量都与实例相关。阈值预警又称为
“有状态预警”,清空预警条件后,会自动清空这些预警。有状态预警显示在
“有状态预警”,清空预警条件后,会自动清空这些预警。有状态预警显示在
DBA_OUTSTANDING_ALERTS中,清空后会转到DBA_ALERT_HISTORY。
服务器生成的其它预警对应于特定的数据库事件,如ORA-*错误、“快照太旧”错误、
“恢复区空闲空间过少”和“可恢复会话被挂起”等。这些都不是基于阈值的预警,又称
“恢复区空闲空间过少”和“可恢复会话被挂起”等。这些都不是基于阈值的预警,又称
为“无状态预警”。无状态预警会直接转到历史记录表。只在Database Control 环境中,
清空无状态预警才有意义,因为Database Control 会在自身的资料档案库中存储无状态
预警。
清空无状态预警才有意义,因为Database Control 会在自身的资料档案库中存储无状态
预警。