教你如何成为Oracle 10g OCP - 第十五章 自动化管理


15.1  自动化管理概述

1. 自动化管理的组件

A. AWR自动工作负载信息库(Automatic Workload Repository)
   AWR由多个schema对象组成,包含大约200多个表和多个程序包。在默认情况下每
   1个小时,Oracle服务器会对整个数据库生成一个快照(snapshot),并把快照信息
   存入AWR相应的表里(为了节省空间,采集的数据在 7 天后自动清除)。捕获下来的
   数据可以由内置的自动化组件进行分析,也可以由DBA来分析。 AWR使用多个表来存
   储收集的统计数据,它们都被放置在SYS这个方案中,存储在一个新的特殊表空间
   SYSAUX上,并且以WRM$_*和WRH$_*的格式存储。前面一种格式的表存储诸如数据库
   检查和采集的快照等元数据消息,而后面一种格式的表存储了实际收集的统计数据
  (M表示“Metadata元数据”,H表示“Historical历史”)。  另外还有多个以
   “DBA_HIST_”为前缀,由这些表构造出的视图。比如相关存储时间的信息可以从
    DBA_HIST_WR_CONTROL视图中获得。

B. 自动化任务: 通过分析AWR里的信息,自动化组件可以确定是否需要进行一些
   日常维护工作,比如每天进行备份,或者每天收集并刷新优化器统计信息等。备注
   一下,Oracle9i中必须手工设置table monitoring, 才能通过判断table统计信息
   是否过期从而进行统计分析,但是Oracle10g中通过设置statistics_level=typical
   或all 就可以自动收集统计信息(在10g中表监控是激活的)。

C. 服务器告警信息(Server Alert): 对于那些不能自动解决而需要DBA介入的工作,
   自动化组件会生成服务器告警信息,从而通知DBA .

D. 顾问(Advisor): 自动化组件里包含多个顾问,比如有负责判断内存大小的顾问,
   优化SQL的顾问等。这些顾问会自动分析AWR里记录的信息,从中找出潜在的问题,
   并得出改进的意见。

E. 自动数据库诊断监控(Automatic Database Diagnostic Monitor, ADDM),每次收
   集完AWR快照之后,都会启动ADDM进程。ADDM进程负责对最近两个快照(也就是最
   近1个小时)的数据库的活动情况进行分析,判断最近1小时是否出现潜在的问题,
   如果发现问题,会根据类型调用各个相关顾问,对发现的问题提出建议。

备注: 结合EM和AWR是非常方便的。

 

2. 自动化管理的功能由statistics_level参数决定,可以为该参数设置3个值。
  
Oracle10g, 11g 默认情况下 statistics_level 的值为 TYPICAL 。

SQL> show   parameter  statistics_level 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL

A. typical -- 默认值,启用所有的自动化功能,并会为此收集数据库里所需要
   的相关信息。收集的信息包括: Buffer Cache Advice, MTTR Advice,Timed
   Statistics, Segment Level Statistics , PGA Advice .....等等,可以通
   过 select statistics_name , activation_level from v$statistics_level
   order by 2 ; 来查询收集的信息 。 Oracle建议使用默认值typical 。

B. all -- 如果设置为all, 那么除了typical之外,还会收集额外的信息,包括
   plan execution statistics 和Timed OS statistics(参考A中的SQL查询语
   句).   在该设置下,可能为了收集诊断信息而消耗过多服务器资源。

C. basic -- 关闭所有自动化功能。

 


3. 自动化相关视图 v$statistics_level查看不同的设置能收集的不同信息
   (以下例子是Oracle11g中得出的)。

SQL> select statistics_name , activation_level from v$statistics_level order by 2 ;

STATISTICS_NAME                                                  ACTIVAT
---------------------------------------------------------------- -------
Timed OS Statistics                                              ALL
Plan Execution Statistics                                        ALL
Timed Statistics                                                 TYPICAL
Segment Level Statistics                                         TYPICAL
PGA Advice                                                       TYPICAL
Shared Pool Advice                                               TYPICAL
Modification Monitoring                                          TYPICAL
Longops Statistics                                               TYPICAL
Bind Data Capture                                                TYPICAL
Ultrafast Latch Statistics                                       TYPICAL
Threshold-based Alerts                                           TYPICAL
Global Cache Statistics                                          TYPICAL
Active Session History                                           TYPICAL
Undo Advisor, Alerts and Fast Ramp up                            TYPICAL
Streams Pool Advice                                              TYPICAL
Time Model Events                                                TYPICAL
Plan Execution Sampling                                          TYPICAL
Automated Maintenance Tasks                                      TYPICAL
SQL Monitoring                                                   TYPICAL
Adaptive Thresholds Enabled                                      TYPICAL
V$IOSTAT_* statistics                                            TYPICAL
Buffer Cache Advice                                              TYPICAL 
MTTR Advice                                                      TYPICAL

 

参考资料: 
------------------------------------------------------------------------------

在 Oracle9i 中,您可以通过打开表监视选项 (ALTER TABLE ...MONITORING) 然后
检查这些表的视图DBA_TAB_MODIFICATIONS,检查表中的数据是否已明显更改过,备注
:This view is populated only for tables with the MONITORING attribute。

在 10g 中,已不再使用 MONITORING 语句了。而通过设置初始化参数 STATISTIC_LEVEL
为 TYPICAL 或 ALL,就可以自动收集统计信息。(默认值为 TYPICAL,因此可以随即启
用自动收集统计信息的功能。)Oracle 数据库 10g 具有一个预定义的调度程序作业,
名称为 GATHER_STATS_JOB,它由 STATISTIC_LEVEL 参数的适当数值所激活。

statistics_level 默认是typical,在10g中表监控是激活的(默认建立table就是
monitoring属性,9i下默认建立table是nomonitoring属性),强烈建议在10g中此
参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且
将禁掉如下一些10g的新功能:

ASH(Active Session History)
ASSM(Automatic Shared Memory Management)
AWR(Automatic Workload Repository)
ADDM(Automatic Database Diagnostic Monitor)

------------------------------------------------------------------------------

 

4.  通过自动分析AWR中的数据,数据库能够判断是否进行一些日常的维护,比如
    收集优化器统计信息等,Oracle10g中通过使用自动维护任务框架(automated
    maintenance tasks infrastructure) 来完成自动化任务。调度器使用预先
    定义的维护窗口来运行这些任务,需要定期进行维护的情况包括:

A. 收集优化器统计信息

   SQL执行时,通过优化器对SQL进行解析得到最佳的执行计划。优化器在生成
   执行计划过程中,必须参考SQL语句引用到的表及列的信息,这些信息用于
   描述表中的数据的分布情况,包括表中包含的数据行数,表中包含的数据
   块的个数,列上有哪些索引等,这些信息也叫做优化器统计信息。统计信息
   是存放在数据字典里的静态的数据,他们不会随着表中的数据的变化而变化,
   只有收集完毕统计信息后,它们才会被更新,从而体现出收集完统计信息的
   那一个时间点上表里数据的分布情况。

B. 段顾问(segment advicor) 
  
   该顾问用来找出哪些segment占用的空闲空间过多,从而可以通过执行shrink
   来释放可用空间。

C. 自动备份任务 

 


15.2  AWR体系结构
    AWR是Oracle10g数据库中的一个基础架构,提供了收集数据库诊断信息,
对潜在问题进行分析和自我调整的功能。通过使用AWR, 数据库服务器提供了一
个自动收集历史统计信息的功能。

详细可以参考: http://space.itpub.net/35489/viewspace-609528

在AWR中包括以下两个部分:

1. 在内存中通过读取动态性能视图和数据字典中的数据,收集数据库工作负载
信息,信息包括以下几大类:

A. 基本统计信息,比如优化器统计信息、操作系统统计信息如dba_hist_osstat
   视图(来自v$osstat)等。
B. 指标值:衡量数据库活动的各个指标值。
C. ASH (Active Session History): 记录了历史上session的活动情况,ASH非常
   有价值,后面将会谈到。
D. 顾问得出的建议: 针对各个问题,顾问得出的结论也存放在AWR中。
E. 快照信息:每隔一段时间(默认是60分钟),Oracle会对整个数据库生成一个快
   照,快照中的数据来自于动态性能视图和数据字典,这些快照数据存放在相应
   的表里。

2. 每隔一段时间,通过一个名为MMON (Manageability Monitor)的后台进程,将
   内存中的数据写入到磁盘上的表空间中。AWR包含了上百个表, 都位于sys用
   户下,并存放在sysaux表空间下。 不建议通过SQL直接访问AWR相关表中的数据,
   而是通过Database Control或者dbms_workload_repository包来访问AWR中数据。


-------------------------------------------------------------------------------

备注: Oracle10g新后台进程MMON及MMNL进程

在Oracle不同的文档中,对这两个进程的解释存在歧义。
MMON 应该是 Memory Monitor 的缩写,但是在有的文档中被记录为Manageability
Monitor ,这应当是10g早期版本中的称呼,只不过后来发生了变更。

ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配
空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息
都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提
供了永久保留ASH信息的方法,这就是AWR(automatic workload repository)。

由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:
MMON进程每小时对ASH (v$active_session_history)进行采样一次,并将信息保存
到磁盘中,当ASH BUFFER满的话MMNL进程会写,并保留7天,7天后旧的记录才会
被覆盖。这些采样信息被保存在表wrh$_active_session_history中。


mmon进程与mmnl进程快照由一个称为 MMON 的新的后台进程(及其从进程)
以及MMNL后台进程自动地每隔固定时间采样一次。我们先来看一下这两个
新增加的后台进程的介绍:

MMON进程负责执行多种和管理相关(manageability-related)的后台任务,例如:
当某个测量值(metrics)超过了预设的限定值(threshold value)后提交警告
创建新的MMON 隶属进程(MMON slave process)来进行快照(snapshot) 捕获
最近修改过的 SQL 对象的统计信息

MMNL进程负责执行轻量级的且频率较高的和可管理性相关的后台任务,例如捕获
会话历史信息,测量值计算等。AWR的采样工作由MMON进程每个1小时执行一次,
ASH信息同样会被采样写出到AWR负载库中。虽然ASH buffer被设计为保留1小时的
信息,但很多时候这个内存是不够的,当ASH buffer写满后,另外一个后台进程
MMNL将会主动将ASH信息写出。


-------------------------------------------------------------------------------


    每隔一段时间(默认60分钟),AWR都会收集一次快照。快照描述的是在一个特定时间
点上所捕获的数据库相关的统计信息,由于Oracle库中,几乎所有的统计信息体现的都
是截止到到目前的累计值,因此我们每隔一段时间就获取一个时间点上的统计信息,然
后将两个时间点上的统计信息相减,得到在这段时间里,发生的数据库活动的情况,这
为数据库诊断提供了指导。 快照默认保存一周。

    每个快照都会由一个唯一的快照ID(snap_id)标识,默认情况下,AWR每隔60分钟收集
一次快照,该时间间隔可以根据需要进行调整。 由于Oracle自动化组件中的各个顾问
都会访问快照中的数据,因此不同的时间间隔可能会影响顾问在诊断时的精确性。比如
如果收集快照间隔为3小时,可能时间间隔过长,从而丢失某些问题。所有快照的snap_id
以及相关属性(快照创建时间等)可以从dba_hist_snapshot视图中显示出来。


备注: 两次快照之间不能有数据库的开关机,否则收集信息无效。
Oracle提供以下命令可以修改快照收集时间间隔和保存时间: 
execute dbms_workload_repository.modify_snapshot_settings(interval => 120,retention => 20160);
上述命令修改快照的收集间隔为2小时,保存时间为两周 (其中单位为分钟)。


我们可以手工调用程序包来收集快照,比如调用存储过程:
SQL > begin 
      dbms_workload_repository.create_snapshot();
      end;  /
我们也可以使用命令删除指定的快照:
dbms_workload_repository.drop_snapshot_range(low_snap_id=>41,high_snap_id=>46);

 

AWR中的数据量 ---  

AWR中存储的数据都在sysaux表空间中,AWR中收集的统计信息的数据量取决于数据库中
活动的session个数。假设,始终有10个活动session的系统来说,如果默认保存7天,那么
AWR保存的数据大致为200M到300M .  比如我们一个active session保持在300个左右,
目前sysaux 表空间用到了2.5G左右。

我们可以使用rdbms/admin/utlsyxsz.sql 来显示当前sysaux表空间里各个组件的大小
尺寸。 我们还可以通过awrinfo.sql来生成一个报表,该报表用来显示sysaux表空间
里不同逐渐的增长率 。当然,如果AWR检测到syaux表空间中的可用空间不足时,会
自动删除那些最早生成的快照,并发出告警信息。

我们可以通过指定收集快照的时间间隔和对快照设置保留策略来控制AWR中的数据量,
收集时间间隔越长,AWR中的数据量相对就少(因为是累计的) , 默认保留7天数据,
MMON进程会在每天晚上定期删除7天前的数据。

 

AWR系统表 --- 
AWR快照存放在以WR开头的sys用户下的系统表中,其中WR表示workload repository,
包括 WRI$_, WRH$_, WRM$_ , 其中I表示Internal, H 表示History, M表示Metadata.
这些表的数据都通过 DBA_HIST_* 视图展现出来。


快照集(snapshot set) ---
如果将快照纳入到快照集中,则快照不会被MMON进程自动删除。快照集是让我们保留
重要时间段的快照数据的一种方法 。 快照集通常用于保留重要的快照数据(比如作为
性能比较,作为基准线的快照),可以一直保留直到快照集被删除,创建的快照集可以
从dba_hist_baseline 视图中显示出来。通过执行如下命令创建快照集:

SQL> begin
       dbms_workload_repository.create_baseline(
        start_snap_id=>29 ,
        end_snap_id=>36 ,
        baseline_name=>'my_baseline'); 
     end ;
     /

删除指定的快照集:

SQL> begin
       dbms_workload_repository.drop_baseline(
        baseline_name=>'my_baseline'); 
     end ;
     /

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-675613/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-675613/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值