Oracle automatic workload repository 常用操作

Oracle  AWR
Automatic Workload Repository


由MMON进程控制收集信息(内存监控进程)
AWR表存储在SYSAUX表空间SYS模式下
WRM$_* :M表示metadata,存储元数据信息(如检查的数据库和采集的快照)
WRH$_* :H表示history,保存实际采集的统计数据
例如:DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的


开启AWR
默认是启用AWR功能的,由初始化参数STATISTICS_LEVEL控制,


STATISTICS_LEVEL的值为TYPICAL或者 ALL,表示启用AWR
STATISTICS_LEVEL的值为BASIC,表示禁用AWR。


有三个值:
*BASIC:awr统计的计算和衍生值关闭.只收集少量的数据库统计信息.
*TYPICAL:默认值.只有部分的统计收集.他们代表需要的典型监控oracle数据库的行为.
*ALL : 所有可能的统计都被捕捉. 并且有操作系统的一些信息.这个级别的捕捉应该在很少的情况下,比如你要更多的sql诊断信息的时候才使用


--产生整个数据库的AWR报告,运行脚本awrrpt.sql。
@?/rdbms/admin/awrrpt.sql
--产生某个实例的AWR报告,运行脚本awrrpti.sql。
@?/rdbms/admin/awrrpti.sql
--产生某条SQL语句的AWR报告,运行脚本awrsqrpt.sql。
@?/rdbms/admin/awrsqrpt.sql




Oracle Database 10g使用计划的任务GATHER_STATS_JOB来收集AWR统计数据,当在10g中创建数据库的时候,自动创建该任务。


select a.job_name,a.enabled,c.window_name,c.repeat_interval
from dba_scheduler_jobs a,dba_scheduler_wingroup_members b,
dba_scheduler_windows c
where job_name='GATHER_STATS_JOB'
and a.schedule_name=b.window_group_name
and b.window_name=c.window_name;


可以终止和启动这个JOB
exec dbms_scheduler.disable('GATHER_STATS_JOB');
exec dbms_scheduler.enable('GATHER_STATS_JOB');
二.  AWR使用


SQL>@?/rdbms/admin/awrrpti.sql
Type Specified:  html


输入 num_days 的值:  1
输入 begin_snap 的值:  142
输入 end_snap 的值:  146
输入 report_name 的值:  D:/awrrpt_1_142_146.html




三.  AWR 操作


 


3.1. 查看当前的AWR保存策略


 


col SNAP_INTERVAL format a20
col RETENTION format a20
select * from dba_hist_wr_control;


 DBID     SNAP_INTERVAL        RETENTION            TOPNSQL
---------- -------------------- -------------------- ----------
262089084 +00000 01:00:00.0    +00007 00:00:00.0    DEFAULT


每小时产生一个SNAPSHOT,保留7天


调整AWR产生snapshot的频率和保留策略
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);


关闭AWR,把interval设为0则关闭自动捕捉快照
 exec dbms_workload_repository.modify_snapshot_settings(interval=>0);


手工创建一个快照
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();


查看snap_id及创建时间
SELECT SNAP_ID,
TO_CHAR(BEGIN_INTERVAL_TIME,'yyyy-mm-dd hh24:mi:ss') BEGIN_INTERVAL_TIME,
TO_CHAR(STARTUP_TIME,'yyyy-mm-dd hh24:mi:ss') STARTUP_TIME
FROM DBA_HIST_SNAPSHOT ORDER BY 1;


查看快照信息
set  line  160 pagesize  49999
col END_INTERVAL_TIME  for a20
col BEGIN_INTERVAL_TIME  for a20
col FLUSH_ELAPSED  for a20
select * from DBA_HIST_SNAPSHOT order by 1;




SQL> select DBID, SNAP_INTERVAL, SNAPINT_NUM, RETENTION  from wrm$_wr_control;


      DBID SNAP_INTERVAL        SNAPINT_NUM RETENTION
---------- -------------------- ----------- -----------------------------------
4135496890 +00000 01:00:00.0           3600 +00007 00:00:00.0
4138719355 +00000 01:00:00.0           3600 +00007 00:00:00.0
4138663401 +00000 01:00:00.0           3600 +00015 00:00:00.0


看快照
SQL> select * from sys.wrh$_active_session_history


手工删除指定范围的快照
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 973, high_snap_id => 999, dbid => 262089084);


创建baseline
在AWR内创建基线是一个好主意,基线定义为一定范围内的快照,它可以用来和其他快照进行比较。
这允许你将当前性能与建立的基准性能进行比较,从而有助于确定数据库性能问题。


SQL> exec dbms_workload_repository.create_baseline(start_snap_id => 1003, end_snap_id => 1013, 'apply_interest_1');


删除baseline


SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'apply_interest_1', cascade => FALSE);




将AWR数据导出并迁移到其它数据库以便于以后分析
SQL> exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir => 'DIR_BDUMP', bid => 1003, eid => 1013);
迁移AWR数据文件到其他数据库
SQL> exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile => 'awr_data.dmp', dmpdir => 'DIR_BDUMP');
把AWR数据转移到SYS模式中:
SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');


 

 









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值