一、用awr生成报告
SQL> SQLPLUS / AS SYSDBA
SQL> var snap_id number;
SQL> exec:snap_id:=dbms_workload_repository.create_snapshot;
SQL> print snap_id;
SNAP_ID
--------
1182
SQL> @?/rdbms/admin/awrrpt.sql
二、前的AWR保存策略
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
860524039 +00 01:00:00.000000 +07 00:00:00.000000 DEFAULT
以上表示每1小时产生一个SNAPSHOT,保留7天,用户要根据自己的需要设定保存策略。
三.调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配置
1.调整AWR产生snapshot的频率和保留策略
如:如将收集间隔时间改为30 分钟一次。并且保留5天时间(注:单位都是为分钟):
SQL>exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
2.关闭AWR
把interval设为0则关闭自动捕捉快照
SQL>exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
3.手工创建一个快照
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
4. 查看快照
SQL> select * from sys.wrh$_active_session_history;
SQL> select min(snap_id),max(snap_id),dbid from sys.wrh$_active_session_history group by dbid;
5.手工删除指定范围的快照
SQL>exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047);
6.创建baseline
SQL> exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1');
7.删除baseline
SQL>exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);
8.将AWR数据导出并迁移到其它数据库以便于以后分析
SQL> exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir => 'DIR_BDUMP', bid => 1003, eid => 1013);
9.迁移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');
三、AWR报告日常分析
1.SQL ordered by Elapsed Time
记录了执行总和时间的TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time + Wait Time)。
Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time + Wait Time
CPU Time(s): 为SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。
Executions: SQL语句在监控范围内的执行次数总计。
Elap per Exec(s): 执行一次SQL的平均时间。单位时间为秒。
% Total DB Time: 为SQL的Elapsed Time时间占数据库总时间的百分比。
SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。
SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。
SQL Text: 简单的sql提示,详细的需要点击SQL ID。
2.SQL ordered by CPU Time
记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)。
3.SQL ordered by Gets
记录了执行占总buffer gets(逻辑IO)的TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)。
4.SQL ordered by Reads
记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。
5.SQL ordered by Executions
记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。
6.SQL ordered by Parse Calls
记录了SQL的软解析次数的TOP SQL。说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。
7.SQL ordered by Sharable Memory
记录了SQL占用library cache的大小的TOP SQL。Sharable Mem (b):占用library cache的大小,单位是byte。
8.SQL ordered by Version Count
记录了SQL的打开子游标的TOP SQL。
9.SQL ordered by Cluster Wait Time
记录了集群的等待时间的TOP SQL
四、生产AWR报告
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
输入 report_type 的值: 默认为html类型>
输入 num_days 的值: 1
输入 begin_snap 的值: 1181
输入 end_snap 的值: 1182
输入 report_name 的值: 采用默认文件名>
Report written to awrrpt_1_1181_1182.html
SQL> exit
从当前目录下载awrrpt_1_1181_1182.html并打开查看。
五、关闭AWR
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/751371/viewspace-723399/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/751371/viewspace-723399/