Oracle性能优化使用度量和预警
Posted PrudentWoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle性能优化使用度量和预警相关的知识,希望对你有一定的参考价值。
度量、预警及基线
对性能进行监视时,需要使用一些统计信息之外的特定信息。为了确定特定统计信息是否重要,则需要了解经过一段特定时间之后,该统计信息的变化量。为了具有前瞻性,则需要在存在特定条件时(例如系统响应时间达到了允许的最大值)收到通知。为了诊断性能问题,需要了解更改的具体内容。度量、预警及基线即可提供这些信息。
度量是累积统计信息在一段时间内的更改率。例如,每秒的物理读取数。
可为各种度量设置阈值,当度量的值超过阈值时,就会生成预警。
基线包含所存储的度量集和统计信息集。单个集称为快照。基线由两个或多个快照组成。通常,基线是在正常或可接受的操作期间捕获的,但也可以捕获任何相关时段。如果性能不正常,则可捕获其它度量集,并将其与基线进行比较。通过此方法,数据可明确地指出性能问题。
基本统计信息的限制
统计信息是对数据库中所发生事件的计数。统计信息和等待事件为原始数据。基本统计信息始终只是给定时间对应的一个值。
如果绘制很长一段时间内的基本统计数值,则会看到这些值一直随时间增长。该幻灯片显示了一个可能的图形示例,即从 V$SYSSTAT 性能视图中提取的 physical reads 统计信息图。如幻灯片中所示,虽然两个图的统计数值相同,但在观测期的末尾,趋势是完全不同的。可以非常清楚地看到,上图中数据库的 I/O 变化率远远大于下图中的 I/O 变化率。所以,仅查看统计数值是没有意义的。
为了更好地了解数据库行为,您不仅要查看数值,还要观察这些曲线或趋势。因此,需要计算某一时间段中的统计数值变化率,以便确定该时段内的趋势。
典型增量工具
基本统计信息只是自启动实例以来累积的原始数字。快照是在某一个时间点上捕获的一组统计信息。通过在不同的时间获取快照并获得值之间的差值,可获取有意义的统计数值。该差值即为增量。有几种工具可生成增量。Statspack、自动工作量资料档案库 (AWR) 和自定义脚本可生成两个快照的增量报表。
通过 AWR 和 Statspack 可保存快照集以供将来参考。这些保存的集就是统计信息基线。
Oracle Database 11g 解决方案:度量
Oracle 数据库服务器在正常操作期间收集基本统计信息。基本统计信息即为简单的计数。例如,对自启动以来系统中物理读取数的计数结果即为基本统计信息。
度量是源自基本统计信息的二级统计信息。大多数度量会跟踪 Oracle 服务器中活动的更改率。例如,系统中前 60 分钟内的平均物理读取数即为一个度量。内部组件(客户机)使用度量来监视系统运行状况,检测问题和进行自优化。易管理性监视程序进程 (MMON) 会根据相应的基本统计信息定期更新度量数据。
Oracle 数据库服务器组件使用度量来执行易管理性功能。例如,自动数据库诊断监视程序 (ADDM) 将系统中最后 60 分钟内的平均物理读取数用作输入。其它组件可能需要基于相同基本统计信息(物理读取数)的不同度量。例如,内存指导可能需要高峰时段的物理读取计数。Oracle Database 11g 支持系统、会话、文件和等待事件统计信息的度量。每个度量由一个度量编号来唯一地标识,且与一个量度名称相关联。该图列出了一些固定的视图,可访问这些视图来浏览度量数据。有关这些视图的详细信息,请参阅《Oracle Database Reference》指南。
度量的优点
保留度量的主要优点在于,在组件需要计算某些活动的更改率时,可随时使用相应的数据。
在早期版本中,要计算特定基本统计信息的更改率,则必须在运行工作量之前和之后捕获统计信息。使用度量,所需执行的全部操作就是运行工作量并选择相应的度量。
有了服务器收集的度量,服务器组件便具备了自优化和健康检查的基础。度量提供了自动内存管理和自动数据库诊断监视程序所需的性能信息。
查看度量历史记录信息
在某些 V$ 视图中显示了度量值,其中的这些值是非常小的时间间隔内的平均值。这些间隔可能会变化(从 15 秒到 10 分钟),这取决于度量的类别。V$ 视图中数据的快照将保留在 DBA_HIST 表中。
幻灯片列出了一些度量和 AWR 视图。
例如:
V$SYSMETRIC_HISTORY 显示了数据库中可用的所有系统度量值。此视图同时显示了持续时间较长(60 秒,1 小时历史记录)和持续时间较短(15 秒,仅一个间隔)的度量。
DBA_HIST_SESSMETRIC_HISTORY 显示了几个重要会话度量的历史记录。其包含 V$SYSMETRIC_HISTORY 视图的样本(快照)。
有关这些视图的详细信息和列详细信息,请参阅《Oracle Database Reference》。
使用 EM 查看度量详细资料
使用“All Metrics(所有度量)”页来查看可用于数据库的所有性能度量的列表。可从“Database(数据库)”主页上访问此页,方法是单击“Related Links(相关链接)”部分的“All Metrics(所有度量)”链接。
在“All Metrics(所有度量)”页中,可展开所有或特定度量组来查看特定度量。通过选中一个度量,即可显示该度量的页面。可查看某一特定时段内的度量值,并且可自定义此视图。相应的图形将显示该度量值的历史记录。
要从“Database(数据库)”主页上访问此页,单击“Related Links(相关链接)”部分的“All Metrics(所有度量)”。在“All Metrics(所有度量)”页中,展开“Waits by Wait Class(按等待类等待)”,然后单击“Database Time Spent Waiting(%)(等待所用的数据库时间百分比 (%))”。在“Database Time Spent Waiting(%)(等待所用的数据库时间百分比 (%))”页上,单击“Concurrency(并发性)”。
统计信息直方图
虽然度量可以使您了解特定统计信息的趋势,但它无法告知某个特定瓶颈是影响局部还是影响整个系统。例如,您可能观察到一个变化率大的度量,但这一突然变大可能只局限在系统的一个或两个会话中。在这种情况下,可能就没必要深入研究该问题了。但是,如果此突发性的增长全面影响到整个系统,则需要做进一步的调查。可通过直方图性能视图获得此信息。
如幻灯片所示,您可观察到 I/O 比率有一个突发性的增长。可将此信息与在 V$FILE_HISTOGRAM 中找到的相应 I/O 直方图关联。此视图显示基于每个文件的所有单块读取数的直方图。直方图中具有时间间隔时段,以毫秒为度量单位,从 1 毫秒到 222 毫秒(69.9 分钟)。每个时段内的值是系统等待该时间量的次数。例如,从幻灯片可看出,为了从磁盘中读取数据块,系统等待了 5,500 次,每次等待时间介于 32 到 64 毫秒之间。如果访问时间通常小于 10 毫秒,则对系统而言,这肯定是一个需要关注的问题,应当进一步研究此问题。如果在较短的等待时间段内看到较大的次数,则无需过于担心。
度量可提醒您提前注意潜在的问题。通过使用直方图进行细查,可明确地确定是否真的存在问题。
直方图视图
V$EVENT_HISTOGRAM 显示基于事件的等待次数的直方图。
V$FILE_HISTOGRAM 显示基于每个文件的所有单块读取数的直方图。
V$TEMP_HISTOGRAM 显示基于每个临时文件的所有单块读取数的直方图。
直方图可具有以下时间间隔:< 1 毫秒、< 2 毫秒、< 4 毫秒、< 8 毫秒……< 2^21 毫秒、< 2^22 毫秒、>= 2^22 毫秒。
还可通过 Enterprise Manager 来查看该直方图统计信息。从“Performance(性能)”页,单击“Active Sessions(活动会话)”图的图例区域项,如“User I/O(用户 I/O)”,以进入“Active Sessions Waiting:User I/O(活动会话等待:用户 I/O)”页。再次单击“Active Sessions(活动会话)”图右侧的等待事件名称,以进入相应的“Histogram for Wait Event(等待事件的直方图)”页。幻灯片上显示了“Histogram for Wait Event:db file sequential read(等待事件的直方图:DB 文件连续读取)”图。
注:除非 TIMED_STATISTICS 初始化参数已设置为 TRUE(该值为默认值),否则不会填充直方图。当 STATISTICS_LEVEL 参数设置为 TYPICAL 或 ALL 时,会自动设置 TIMED_STATISTICS。
服务器生成的预警
预警是当数据库处于不理想状态且需要引起注意时发出的通知。默认情况下,Oracle 数据库会通过显示预警的 Oracle Enterprise Manager Database Control 发送预警。也可选择配置 Oracle Enterprise Manager,以向管理员发送电子邮件,报告问题状况。Oracle 数据库服务器还会在工作量资料库中保留度量和预警的历史记录。
预警队列是永久性的多使用者队列,可供要编写自定义预警处理程序的用户使用。
默认情况下会设置几个主要度量的阈值,如设置“Tablespace Used (%)(使用的表空间 (%))”的阈值。可为您的系统设置相关度量的阈值。如果数据库偏离正常读数且超过了这些阈值,则 Oracle Database 11g 会主动发送预警来通知您。提前通知潜在的问题,可使您迅速作出响应,并通常在用户注意到这些问题之前就解决这些问题。
一些可提前提供问题通知的重要度量有:
平均文件读取时间(厘秒)
响应时间(每一事务处理)
SQL 响应时间 (%)
等待时间 (%)
数据库控制使用模型
以下是服务器生成的预警的基本使用模型:
如果需要,可更改服务器预警度量的阈值设置。可通过使用数据库控制或 PL/SQL 过程来实现此操作。
可通过使用数据库控制来建立通知规则(例如电子邮件地址或封锁期)。
生成预警后,数据库控制会在预警页中显示该预警。数据库控制会向已注册接收通知的管理员发送通知。
收到预警后,可根据预警中给出的建议更正问题。
注:应确保 STATISTICS_LEVEL 初始化参数设置为 TYPICAL 或 ALL。
设置阈值
要设置或编辑阈值,请在“Database(数据库)”主页的“Related Links(相关链接)”区域选择“Metrics and Policy Settings(度量和策略设置)”。如果要更改阈值,则输入所需的“Warning Threshold(警告阈值)”和“Critical Threshold(严重阈值)”。选择“All Metrics(所有度量)”视图,以添加阈值。数据库达到指定的值时,就会出现相应的预警。单击“Edit(编辑)”按钮以指定其它响应操作,或添加阈值到一组预警下的各个对象,如特定表空间上的已用阈值百分比。
收集调度指定收集的频率。可更改收集调度,但不可针对各个阈值进行。收集调度是针对度量组而设置的。单击“Collection schedule(收集调度)”以编辑该调度,或查看使用该调度而收集的度量。
“Edit(编辑)”按钮为一个图标,其形式为一支铅笔或一组铅笔。单击形式为单支铅笔的“Edit(编辑)”,可更改阈值和该度量的并发性属性。使用形式为多支铅笔的“Edit(编辑)”按钮,可添加阈值到该度量组中的各个对象,比如在各个表空间上添加不同的阈值。
创建和测试预警
还可为特定对象设置阈值。
示例:您决定要在 INVENTORY 表空间中使用的空间超过 75% 时收到严重预警。(此表空间不允许其数据文件自动进行扩展)。要创建和测试该预警,请执行以下步骤:
1. 在 Oracle Enterprise Manager 中,定位至“Tablespace(表空间)”页,然后设置所需阈值。
2. 在 SQL*Plus 中,使用 CREATE TABLE … TABLESPACE … AS SELECT … 命令将现有表复制到相关的表空间中。继续将行添加到此表中以填充表空间。
3. 在收到提示此表无法扩展的错误后,请检查“Database Instance(数据库实例)”主页以获取相关联的预警。
大多数预警都包含相关指导的名称,可调用该指导以获得详细建议。对于每一条相应的预警消息,数据库控制都会提供一个链接以供调用相应的指导。
注:每隔 10 分钟评估一次“表空间已满”预警。
“度量”视图和“预警”视图
启用后,MMON 会定期计算度量值并在内存中保留一小时。可通过 V$SYSMETRIC 视图和 V$SYSMETRIC_HISTORY 视图查看内存中系统级别的度量值。对于服务级别的度量,也可使用类似的视图。
只需启用 AWR 的自动快照机制,即可为所有这些度量启用磁盘度量收集。可通过 DBA_HIST_* 视图查看度量的磁盘值。度量历史记录的清除策略和其它快照数据的清除策略相同。
通过下列字典视图,可访问有关服务器预警的信息:
DBA_OUTSTANDING_ALERTS 说明 Oracle 数据库服务器认为处于未处理状态的预警。
DBA_ALERT_HISTORY 表示不再处于未处理状态的预警的有限时间内的历史记录。
DBA_THRESHOLDS 提供为该实例定义的阈值设置。
V$ALERT_TYPES 提供有关每个服务器预警类型的信息。
注:有关这些视图的详细信息,请参阅《Oracle Database Reference》指南。
查看用户定义的 SQL 度量
除了服务器计算的度量,EM 还计算其自己的度量集。“User-Defined Metrics(用户定义的度量)”页列出了用户定义的现有 SQL 度量。可查看度量数据;查看、编辑或删除度量定义;或根据现有的度量创建其他用户定义的 SQL 度量。如果未创建任何用户定义的 SQL 度量,则该列表为空。
可自定义 EM 度量集,并可创建自己的、由 EM 检查的度量。要创建自己的度量,请打开“User-Defined Metrics(用户定义的度量)”页并单击“Create(创建)”。该链接在“Database(数据库)”主页的“Related Links(相关链接)”部分中。
创建用户定义的 SQL 度量
通过“User-Defined Metrics(用户定义的度量)”页可定义 SQL 度量。访问此页的路径是“Database Home >“User-Defined Metrics (Related Links section) > Create(数据库主页 > 用户定义的度量(“相关链接”部分)> 创建)” 。为该度量分配一个名称,创建一条返回单个值或两列内容的 SQL 语句。在该两列中,第一列为“键”,第二列为“值”。可为每个键设置警告和严重阈值。
有关创建用户定义的度量的详细信息,请参阅《Oracle Enterprise Manager Advanced Configuration 10g Release 4》。
注:虽然“All Metrics(所有度量)”页中不显示用户定义的度量,但主页的“Alerts(预警)”部分会报告任何超出阈值的情况。
查看用户定义的主机度量
类似于用户定义的 SQL 度量,您也可创建并查看用户定义的主机度量。
可自定义 EM 度量集,并可创建自己的、由 EM 检查的度量。要创建自己的度量,请打开“User-Defined Metrics(用户定义的度量)”页并单击“Create(创建)”。该链接在“Host(主机)”主页的“Related Links(相关链接)”部分中。要定位至此页,请单击“Database(数据库)”主页上的“Hostname(主机名)”链接,然后单击“Host(主机)”页上相关链接部分中的“User-Defined Metrics(用户定义的度量)”。
创建用户定义的主机度量
通过“User-Defined Metrics(用户定义的度量)”页可定义主机度量。访问此页的路径是“Database Home > Hostname > User-Defined Metrics (Related Links section) > Create(数据库主页 > 主机名 > 用户定义的度量(“相关链接”部分)> 创建)” 。为该度量分配一个名称,并创建一条返回单个值的主机命令行语句。可在阈值部分设置警告和严重阈值。
注:虽然“All Metrics(所有度量)”页中不显示用户定义的度量,但主页的“Alerts(预警)”部分会报告任何超出阈值的情况。
以上是关于Oracle性能优化使用度量和预警的主要内容,如果未能解决你的问题,请参考以下文章