AWR&ADDM

----
每个版本的oracle数据库对优化器统计收集进行了改进。
在oracle10g中,优化器统计收集时完全自动化的操作,用户完全不需要担心统计收集操作,并且默认启用了表监控。
表监控特性由statistics_level参数控制,当设为basic,则禁用表监控。typical,all则启用了监控,推荐使用typical。
如果设置为basic,就会禁用大多数的易管理特性,包括
ash(活动会话历史)
awr(自动工作量仓库)
assm(自动共享内存管理)
addm(自动数据库诊断监控程序)
统计监控跟踪从上一次收集统计以来执行的insert,update,delete操作的近似数量,在SGA中维护受影响行的数量的信息。
直到SMON地刷新数据周期性地(大约每隔15分钟)刷新数据字典中的数据时才修改该信息。
user_tab_modifications 描述从上一次收集统计依赖已经修改的用户表的修改
dba,all oracle使用这些视图标识具有陈旧统计的表。当表中10%的数据已经改动时,oracle就认为它的统计是陈旧的。
oracle 10g只能使用CBO。因此具有更新的统计对于生成良好的执行计划非常重要。使用dbms_Stats程序包的自动统计收集作业根据监控数据来确定何时收集具有陈旧对象的对象统计。
当创建oracle10g数据库或升级到oracle1og时,会创建名为gather_stats_job的作业。该作业由调度程序进行管理,并且在打开maintenance_window_group窗口组时运行。
------------------------------------------------------awr-------------------------------------------------------------------------
awr :自动工作量仓库时公共可管理性基础结构的主要组件,它是statspack的后继产品。awr是诊断数据库问题的首选机制,oracle将自动工作量仓库描述为“oracle 10g 的数据仓库”。
它提供了其他CMI组件使用的数例。例如系统生成的警报和顾问,自动工作量仓库主要的组件:内存中统计和仓库快照。
awr依赖于MMON后台进程,默认下:MMON进程每小时唤醒一次,并且在仓库快照中执行统计收集。dba可以配置这个时间间隔。awr快照提供了数据库统计的持久性视图。在sys模式中创建awr快照,并且将其
存储在sysaux表空间中,每秒收集一次关于活动会话的内存中统计,这些统计不会写入到数据库中,并且在收集新的统计时从内存中删除。
(1)awrrpt.sql使用仓库快照生成报表.awrrpt.sql根据开始快照和结束快照之间统计方面的差别来生成报表。
(2)awrrpti.sql该报表具有相同的输出,但是允许用户定义并报告特定的实例。awrrpti.sql根据指定数据库和实例的开始快照和结束快照来显示报表。

addm<自动数据库诊断程序>使用快照信息自动标识性能问题,并且推荐修正这些问题的方法。
awr收集的维护用于性能检测和自动调整目的地性能统计,可以生成awr数据的报表,并且可以通过视图访问它,awr可以报告最近的会话活动以及整体的系统统计和sql利用。

oracle数据库使用awr来检测和分析问题以及自我调整。awr收集许多不同的统计数据,包括等待事件和会话统计数据。对象使用情况统计数据以及与使用大量资源的sql语句相关的信息。
awr由许多表组成,这些表归sys计划所有,通常保存在sysaux表空间里(据我所知,当前还没有办法将这些对象移动到其他表空间).
所有awr表名称都以标识符‘WR’开始,有3种不同类型的名称。
1元数据(wrm$)
2历史数据(ara$)
3与顾问函数相关的awr表(wr2$)
例如:wrm$_snapshot 或wrh$_active_Session_history
还提供一些dba表,他们允许您查询awr仓库。
通过视图v$active_session_history访问内存中统计,该视图查询SGA的ash缓冲区域。这个区域固定为每个CPU占用2MB空间,因此删除统计之前的时间长度将根据工作量变化。
可以使用dba_hist_snapshot视图查看awr中快照的当前情况。
要查看awr的当前保存和时间间隔设置,可使用dba_hist_wr_control
可以使用dba_hist_baseline 视图查看基线
可以通过OEM或提供的报告脚本来从awr生成报表

为了启用AWR,可以设置statistics_level初始化参数为typical或all
如果设置了staticstics_level为basic。则可以获得awr数据的手工快照。但这些快照不会具有由awr自动执行的快照相同的全面性。
---------------手动管理快照
execute dbms_workload_Repository.create_snapshot();
execute dbms_workload_Repository.drop_snapshot_range(low_snap_id=>1,high_snap_id=>10);
execute dbms_workload_repository.modify_snapshot_settings(retention=>20160,interval=>15);
修改快照集合,让它每15分钟发生一次,快照数据保持时间固定为20160分钟(14天)
---------------基线管理
可以指定一组快照作为系统性能的基线,基线定义为一定范围内的快照,系统基线数据用于在后面与快照进行比较。
基线的主要目的是保护awr仓库中典型的运行时统计数据,允许您随时运行与保护的基本快照相关的awr快照报表,并将他们与awr中包含的最近的快照进行比较,
这允许您将当前性能(和配置)与建立的基线性能进行比较。
创建,删除基线:
execute dbms_workload_Repository.create_baseline(start_snap_id=>1,end_snap_id=>10,baseline_name=>'monday baseline');
execute dbms_workload_Repository.drop_baseline(baseline_name=>'monday baseline',cascade=>false);
如果设置cascade=true,则在删除基线时将删除相关的快照。
---------------------------------------------------ADDM自动数据库诊断监控程序--------------------------------------------------------------------
ADDM由内置在oracle内核中的功能组成,由于帮助用户更为直观地调整oracle实例。
自动化的ADDM是oracle rdbms的一个完整部分,它能够收集性能统计,并且提供改动建议以解决已有的性能问题。
每次获得AWR快照时都会执行ADDM分析,该分析使用在AWR中维护的统计来提出诊断推荐方法,除了提供修正问题的建议之外。ADDM也可以自动地修正某些问题。ADDM集成在数据库服务器中。
因此运行分析对数据库性能基本没有影响。
ADDM可以指出发生了哪些造成性能问题的事件,并且对如何修正这些性能瓶颈提供了遵循的方向。ADDM将发现的时间按照影响降序排列。造成最严重性能影响的问题列在报表的顶端。
解决这些问题将对性能带来最大的增益,同样,在报表的最后一部分中,ADDM指示了不代表实例的性能问题的区域。
为了使用ADDM对如何调整实例和sql提出建议,你需确保已使用至少2组性能数据填充AWR,每个60分钟对其进行一次填充。如果希望在固定时间间隔以外创建快照,则可使用dbms_workload_repository.

为了帮助诊断特定的问题,需要在希望检查的情况下之前和之后创建快照。
10g提供了DBMS_ADVISOR的PL/SQL接口支持ADDM使用,可直接调用,也可通过脚本addmrpt.sql调用或oem。除了这个PL/SQL程序包以外,还可以使用大量视图来检索使用dbms_advisor api执行的
任何操作的结果。
手动访问ADDM时,应该考虑使用和您的oracle版本一起提供的addmrpt.sql脚本。因为该脚本消除了访问dbms_advisor程序包所涉及的复杂性。
如果您只能选择两个oracle实用程序来监控和发现您系统中的性能问题,那么这两个实用程序应当是em和新的AWR报表或STATSPACK。
可以使用awr来收集并分析统计。
-----------------------------------statspack
可以使用statspack实用程序来监控数据库的性能。
statspack实用程序提供了特别的功能,以类时的方式分析统计。通过获得不同呢个时间内数据库统计的快照,并且根据其中的区别生成报表。
statspack包含了主动调整和被动调整数据。并且可能是用来查询绝大数相关的V$视图和x$表,并且在一单一的报表中查看结果的最好方法。
awr报表是挖掘与statspack类似报表中总体性能数据awr的最好方法。
(1)安装statspack  
statspack必需安装在监控的每个数据库中,之前,应创建一个表空间用来容纳statspack数据。还需指定一个足够大的临时表空间,以支持statspack可能执行的大量插入和删除操作。
spcreate.sql脚本创建一个名为perfstat的用户,并按计划创建了大量的对象
(2)perstat账户的安全性
(3)安装后:使用名为statspack的程序包来管理统计收集过程以及表中的数据,所有的集合表都以“stats$”作为名称的开头部分,他们都有基于V$定义的列定义。
(4)收集统计
每个统计信息的集合称为一个快照,可以根据两个快照之间统计中的改变生成报表。
确保在收集统计之前将timed_statistics数据库初始参数设置为true。为了生成一个统计信息的快照。可以执行statspack数据包的snap过程。
execute statspack.snap
I为了评估特定系统测试期间的性能
II评估在一段长时间内性能的改变
为了支持不同等级的集合,statspack提供了等级参数_i_snap_level.默认等级值被设置为5.在改变等级前应当生成尽可能多的快照。并评估生成的报表。可使用statspack数据包的modify_Statspack_parameter
过程,可通过_i_snap_level参数指定快照的等级,并修改该参数。
在绝大多数使用大量资源的sql语句进行查询时。5 可以提高很高的灵活性。
exections_th  sql语句至少执行了100次
disk_read_th   sql语句执行的磁盘读操作的数量超过1000次
parse_calls_th  sql语句执行的解析调用的数量超过1000次
buffer_gets_th  sql语句执行的缓冲区读操作的数量超过1000次
sharable_mem_th  sql语句使用的共享内存超过1MB
verson_count_th  sql语句的版本计数超过20

execute statspack.modify_statspack_parameter(i_snap_leve=>5,i_buffer_gets_th=>1000,i_modify_parameter=>'true');
在数据库每次启动时都会执行的触发器。将statspack数据包固定在共享池中。
create or replace tigger pin_on_startup
after startup on database
begin
dbms_shared_pool.keep('prefstat.statspack','p');
end;/
(5)运行统计报表
为了生成统计报告。进入软件主目录的/rdbms/admin目录,作为perfstat用户身份登录到sql*plus.并执行呢个在该目录下找到的spreport.sql脚本。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值