这篇文章将为大家详细讲解有关Oracle中AWR管理与维护的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、快照管理

  默认情况下,Oracle数据库每小时生成一次快照,并在工作负载库中保留8天的统计信息。必要时,你可以使用dbms_workload_repository程序手动创建,删除或者修改快照等。可以使用OEM以及dbms_workload_repository包管理快照。

1. 手动创建快照

  使用以下过程手工创建快照,创建完成后可在数据字典DBA_HIST_SNAPSHOT查看所有快照相关信息。

BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();END;/SELECTsnap_id,dbid,begin_interval_time,end_interval_timeFROMdba_hist_snapshotORDERBYend_interval_timeDESC;SNAP_IDDBIDBEGIN_INTERVAL_TIMEEND_INTERVAL_TIME--------------------------------------------------------------------------1644192454814-APR-1709.38.19.467AM14-APR-1710.51.21.886AM1634192454814-APR-1709.00.10.470AM14-APR-1709.38.19.467AM1624192454814-APR-1708.00.07.242AM14-APR-1709.00.10.470AM1614192454814-APR-1707.00.04.120AM14-APR-1708.00.07.242AM

2. 删除快照

  以下过程将删除snap_id从162到164的快照。在未指定41924548时,使用当前缺省的数据库

BEGINDBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id=>162,high_snap_id=>164,dbid=>41924548);END;/

3. 修改快照的保留间隔

--查看当前的保留策略,如下,为缺省值,采集间隔为1小时,保留8天SQL>select*fromdba_hist_wr_control;DBIDSNAP_INTERVALRETENTIONTOPNSQL----------------------------------------------------------41924548+0000001:00:00.0+0000800:00:00.0DEFAULT--下面将其修改为保留5天,采集间隔为30分钟,topnsql为50条BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention=>10*24*60,interval=>30,topnsql=>50,dbid=>41924548);END;/--查看修改后的结果SQL>select*fromdba_hist_wr_control;DBIDSNAP_INTERVALRETENTIONTOPNSQL----------------------------------------------------------41924548+0000000:30:00.0+0001000:00:00.050

二、基线管理

  AWR基线可以手工创建和删除,也可以自动创建和删除。对于自动创建基线则是首先要创建基线样本才能实现自动创建基线。主要描述如下。

1. 创建基线

  基线的创建依赖于快照,因此在创建之前应该得到所需时间范围的snap_id,可以通过查询数据字典DBA_HIST_SNAPSHOT获得,同时在基线创建完成后可以从数据字典DBA_HIST_BASELINE查询基线相关信息。

BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id=>160,end_snap_id=>161,baseline_name=>'peak_baseline',dbid=>41924548,expiration=>10);END;/SQL>SELECTbaseline_id,2baseline_name,3baseline_type,4expiration,5creation_time6FROMdba_hist_baseline;BASELINE_IDBASELINE_NAMEBASELINE_TYPEEXPIRATIONCREATION_------------------------------------------------------------------1peak_baselineSTATIC1014-APR-170SYSTEM_MOVING_WINDOWMOVING_WINDOW07-APR-17--基于特定时间创建基线,如下示例BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_time=>TO_DATE('2017-04-146:00:00','yyyy-mm-ddhh34:mi:ss'),end_time=>TO_DATE('2017-04-148:00:00','yyyy-mm-ddhh34:mi:ss'),baseline_name=>'peak_baseline2',expiration=>10);END;/

  在上面的示例中,创建了一个范围为160-161的,名字为peak_baseline的基线,保留时间为10天。在超过10天后,该基线会被删除,相应的快照也被删除。如果为指定失效期,则该基线以及相应的快照被永久保留。

2. 删除基线

BEGINDBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name=>'peak_baseline',cascade=>FALSE,dbid=>41924548);END;/

  在上面的示例中将删除名为peak_baseline的基线,同时指定了cascade为false,也就是说在删除基线的同时,不删除相应的快照。

3. 基线重命名

BEGINDBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE(old_baseline_name=>'peak_baseline',new_baseline_name=>'peak_mondays',dbid=>41924548);END;/--验证结果SQL>SELECTbaseline_id,2baseline_name,3baseline_type,4expiration,5creation_time6FROMdba_hist_baseline;BASELINE_IDBASELINE_NAMEBASELINE_TYPEEXPIRATIONCREATION_------------------------------------------------------------------1peak_mondaysSTATIC1014-APR-170SYSTEM_MOVING_WINDOWMOVING_WINDOW07-APR-17

  在上面的示例中,将基线的名称由peak_baseline修改成peak_mondays。

4. 修改缺省移动窗口基线保留值

--查看缺省的window_sizeSELECTbaseline_name,baseline_type,moving_window_sizeFROMdba_hist_baselineWHEREbaseline_name='SYSTEM_MOVING_WINDOW';BASELINE_NAMEBASELINE_TYPEMOVING_WINDOW_SIZE-------------------------------------------------------SYSTEM_MOVING_WINDOWMOVING_WINDOW8BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE(window_size=>7,dbid=>41924548);END;/--window_size为天,只能够小于等于当前快照保留时间,否则报错,如下:ERRORatline1:ORA-13541:systemmovingwindowbaselinesize(864000)greaterthanretention(691200)ORA-06512:at"SYS.DBMS_WORKLOAD_REPOSITORY",line686ORA-06512:atline2

5. 管理基线样本

创建单个基线模板

BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(start_time=>TO_DATE('2017-04-1417:00:00','yyyy-mm-ddhh34:mi:ss'),end_time=>TO_DATE('2017-04-1419:00:00','yyyy-mm-ddhh34:mi:ss'),baseline_name=>'baseline_140414',template_name=>'template_140414',expiration=>10,dbid=>41924548);END;/--如果创建基线样本时间小于当前时间,则收到如下错误ERRORatline1:ORA-13537:invalidinputforcreatebaselinetemplate(end_time,end_timeislessthanSYSDATE)ORA-06512:at"SYS.DBMS_WORKLOAD_REPOSITORY",line768ORA-06512:at"SYS.DBMS_WORKLOAD_REPOSITORY",line818ORA-06512:atline2

  在上面的示例中,我们创建了一个单一的基线样本,并且指定了相应的时间范围,基线的名称及保留期限等。那么在这个时间范围内的相应的快照会被保留,同时这个基线可以用于后续在发现性能问题的时候进行比对。

创建重复基线样本

  重复的基线样本指的是在将来某个特定的时间范围内,Oracle会参照这个设定的样本自动为我们创建基线。比如,可以创建一个重复的基线样本,使得在2017年每周一9:00-11:00自动生成基线。

SQL>altersessionsetnls_date_format='yyyy-mm-ddhh34:mi:ss';BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(day_of_week=>'monday',hour_in_day=>9,duration=>2,expiration=>30,start_time=>'2017-04-1409:00:00',end_time=>'2017-12-3111:00:00',baseline_name_prefix=>'baseline_2017_mondays_',template_name=>'template_2017_mondays',dbid=>41924548);END;/--Author:Leshami--Blog:http://blog.csdn.net/leshami--QQ(Weixin):645746311--查看已经创建的基线样本SQL>selectt.template_name,2t.template_type,3t.start_time,4t.end_time,5t.day_of_week,6t.hour_in_day,7t.duration8fromdba_hist_baseline_templatet;TEMPLATE_NAMETEMPLATE_START_TIMEEND_TIMEDAY_OF_WEHOUR_IN_DAYDURATION------------------------------------------------------------------------------------------------template_140414SINGLE2017-04-1417:00:002017-04-1419:00:00template_2017_mondaysREPEATING2017-04-1409:00:002017-12-3111:00:00MONDAY173

  在上面的示例中我们创建了一个重复从2017年4月14日起的每周一(day_of_week)会自动生成一个基线,其开始时间为9点(hour_in_day),其持续时间为2小时(duration),有效期为30天(expiration),整个基线的起止时间范围为:2017-04-14 09:00:00至2017-12-31 11:00:00,同时也指定了基线样本的名称以及基线前缀名称。

基线样本的删除

BEGINDBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE(template_name=>'template_140414',dbid=>41924548);END;/

  在上面的示例中我们删除之前创建的基线样本,通过指定样本名称即可。

三、AWR空间占用

  AWR快照的数据全部填充在SYSAUX表空间。因此如果要保留的快照越久,意味着需要占用的SYSAUX空间越大。同时可以通过awrinfo.sql查看各个对象占用SYSAUX的详细信息。

SQL>@?/rdbms/admin/awrinfo.sqlThisscriptwillreportgeneralAWRinformation~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SpecifytheReportFileName~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thedefaultreportfilenameisawrinfo.txt.Tousethisname,press<return>tocontinue,otherwiseenteranalternative.Entervalueforreport_name:Usingthereportnameawrinfo.txtNoerrors.--Author:LeshamiNoerrors.--Blog:http://blog.csdn.net/leshami~~~~~~~~~~~~~~~--QQ:645746311AWRINFOReport~~~~~~~~~~~~~~~Reportgeneratedat19:48:53onApr14,2017(Friday)inTimezone+08:00Warning:NonDefaultAWRSetting!--------------------------------------------------------------------------------Snapshotintervalis60minutesandRetentionis8daysDB_IDDBNameHOST_PLATFORMINSTSTARTUP_TIMELAST_ASH_SIDPAR------------------------------------------------------------------------------*41924548ORA11Gydq-Linuxx8664-bit115:18:26(04/07)617410NO########################################################(I)AWRSnapshotsInformation########################################################*****************************************************(1a)SYSAUXusage-Schemabreakdown(dba_segments)*****************************************************||TotalSYSAUXsize617.4MB(2%of32,768.0MBMAXwithAUTOEXTENDON)||SchemaSYSoccupies206.6MB(33.5%)|SchemaXDBoccupies157.7MB(25.5%)|SchemaAPEX_030200occupies85.4MB(13.8%)|SchemaMDSYSoccupies73.9MB(12.0%)

## 四、生成AWR报告

--单实例下生成AWR报告

SQL>@?/rdbms/admin/awrrpt.sql

--RAC环境下生成AWR报告

SQL>@$ORACLE_HOME/rdbms/admin/awrgrpt.sql

--指定数据库实例生成AWR报告

SQL>@$ORACLE_HOME/rdbms/admin/awrrpti.sql

--生成SQL语句AWR报告

SQL>@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

--指定实例生成SQL语句AWR报告

SQL>@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

--生成比较的AWR报告

SQL>@$ORACLE_HOME/rdbms/admin/awrddrpt.sql

--RAC环境下生成比较的AWR报告

@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

五、AWR相关的重要视图和数据字典

v$active_session_history : 显示活跃的数据库会话的活动,每秒采样一次

v$metric和v$metric_history:

   提供度量数据来跟踪系统性能。视图被组织成好几个组,这些组定义在v$metricgroup视图中

DBA_HIST_ACTIVE_SESS_HISTORY

   展示内存中活动会话历史信息

DBA_HIST_BASELINE
   展示捕获的基线的信息

DBA_HIST_BASELINE_DETAILS

  展示特定基线的明细信息

DBA_HIST_BASELINE_TEMPLATE

   基线模板相关信息

DBA_HIST_DATABASE_INSTANCE

  数据库环境

DBA_HIST_DB_CACHE_ADVICE

   根据历史数据预测在不同的cache size下的物理读

DBA_HIST_DISPATCHER

   每个snapshot下调度进程的信息

DBA_HIST_DYN_REMASTER_STATS

   动态remastering进程的统计信息

DBA_HIST_IOSTAT_DETAIL
   按未见类型和功能来统计的历史I/O信息

DBA_HIST_SHARED_SERVER_SUMMARY

   共享服务器的统计信息

DBA_HIST_SNAPSHOT

   快照信息

DBA_HIST_SQL_PLAN

   执行计划

DBA_HIST_WR_CONTROL

   AWR控制信息

关于“Oracle中AWR管理与维护的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。