开发者社区> 余二五> 正文

通过案例学调优之--AWR Snapshot管理

简介:
+关注继续查看

     默认情况下,Oracle Database 每小时产生一次快照,并将统计信息在工作负载信息库中保留 8 天。如有必要,您可以使用 DBMS_WORKLOAD_REPOSITORY 包中的一些存储过程手动创建、删除和修改快照。要调用这些存储过程,用户必须授予 DBA 角色。

wKioL1ShCwyBwnciAALALeg-8gg706.jpg

1、查看快照

1
2
3
4
5
6
7
03:27:55 SYS@ prod >select SNAP_ID,dbid,SNAP_LEVEL,BEGIN_INTERVAL_TIME from dba_hist_snapshot;
   SNAP_ID       DBID SNAP_LEVEL BEGIN_INTERVAL_TIME
---------- ---------- ---------- ------------------------------
       117  219724276          1 04-NOV-14 02.02.31.757 AM
       114  219724276          1 04-NOV-14 01.29.48.000 AM
       115  219724276          1 04-NOV-14 01.41.01.518 AM
       116  219724276          1 04-NOV-14 02.01.49.722 AM

2、手工创建快照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Syntax: 
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT
(flush_level IN VARCHAR2 DEFAULT 'TYPICAL');
 
flush_level 参数
Flush level 可以是 'TYPICAL' 或 'ALL'
 
03:28:22 SYS@ prod >exec dbms_workload_repository.create_snapshot();
PL/SQL procedure successfully completed.
 
03:32:27 SYS@ prod >select SNAP_ID,dbid,SNAP_LEVEL,BEGIN_INTERVAL_TIME from dba_hist_snapshot;
   SNAP_ID       DBID SNAP_LEVEL BEGIN_INTERVAL_TIME
---------- ---------- ---------- ------------------------------
       117  219724276          1 04-NOV-14 02.02.31.757 AM
       118  219724276          1 04-NOV-14 03.00.11.848 AM
       114  219724276          1 04-NOV-14 01.29.48.000 AM
       115  219724276          1 04-NOV-14 01.41.01.518 AM
       116  219724276          1 04-NOV-14 02.01.49.722 AM

OEM创建:

wKiom1RXS0LS1LTuAAL94qyHTMg673.jpg

3、删除快照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   您可以使用 DROP_SNAPSHOT_RANGE 存储过程删除个范围内的快照。要查看快照的 snap_id 和 数据库 ID 的列表,请查看 DBA_HIST_SNAPSHOT 视图。例如,您可以删除上例中 snap_id 小于 115 的快照:
    
Syntax:
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id IN  NUMBER,high_snap_id IN NUMBER dbid IN NUMBER DEFAULT NULL);
 
03:38:35 SYS@ prod >exec dbms_workload_repository.drop_snapshot_range(dbid=>219724276,low_snap_id=>114,high_snap_id => 115);
PL/SQL procedure successfully completed.
 
03:39:44 SYS@ prod >select SNAP_ID,dbid,SNAP_LEVEL,BEGIN_INTERVAL_TIME from dba_hist_snapshot;
   SNAP_ID       DBID SNAP_LEVEL BEGIN_INTERVAL_TIME
---------- ---------- ---------- ------------------------------
       117  219724276          1 04-NOV-14 02.02.31.757 AM
       118  219724276          1 04-NOV-14 03.00.11.848 AM
       116  219724276          1 04-NOV-14 02.01.49.722 AM
在调用 DROP_SNAPSHOT_RANGE 存储过程时,属于指定快照范围时间段的 Active Session History (ASH) 数据也将清除。

4、修改快照设置
     对于指定的数据库 ID,您可以调整快照生成的时间间隔、保留期限和捕获的 Top SQL,但是请注意,这会影响 Oracle Database 诊断工具的精确性。
     INTERVAL 设置影响数据库自动生成快照的频率。RETENTION 设置影响数据库在工作负载信息库中存储快照的时间。

     TOPNSQL 设置影响针对每个 SQL 条件捕获的 Top SQL 的数量(Elapsed Time、CPU Time、Parse Calls、sharable Memory 和 Version Count)。

此设置的值不受 statistics_level 和 flush_level 的影响,将会覆盖系统 AWR SQL 收集的默认行为。可以讲次设置的值设置为 MAXIMUM 来捕获 shared SQL area 中的全部 SQL 集合,这么做(将此值设置为一个非常高的值)可能会导致一定的空间和性能问题,因为将会收集和存储更多的数据。要调整这些设置,请使用 MODIFY_SNAPSHOT_SETTING 存储过程。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Syntax: 
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention IN NUMBER DEFAULT NULL,   
interval IN NUMBER DEFAULT NULL,   
topnsql IN NUMBER DEFAULT NULL,   
dbid IN NUMBER DEFAULT NULL);
 
03:45:25 SYS@ prod >desc dba_hist_wr_control;
 Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 DBID                                                              NOT NULL NUMBER
 SNAP_INTERVAL                                                     NOT NULL INTERVAL DAY(5) TO SECOND(1)
 RETENTION                                                         NOT NULL INTERVAL DAY(5) TO SECOND(1)
 TOPNSQL                                                                    VARCHAR2(10)
  
03:44:18 SYS@ prod >col SNAP_INTERVAL for a20
03:44:40 SYS@ prod >col RETENTION for a30
03:45:25 SYS@ prod >select * from dba_hist_wr_control
      DBID SNAP_INTERVAL        RETENTION                      TOPNSQL
---------- -------------------- ------------------------------ ----------
 219724276 +00000 01:00:00.0    +00008 00:00:00.0              DEFAULT
 
03:51:56 SYS@ prod >exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(  retention => 43200,interval => 30, topnsql => 100, dbid =>219724276);
PL/SQL procedure successfully completed.
 
   在本例中,快照的保留期限将设置为 43200 分钟(30天),快照间隔指定未 30 分钟,每个 SQL 条件的 Top SQL 数量指定为 100。如果指定未 NULL,则将保留现有设置。dbid 可选。如果您不指定dbid,则将使用本地数据库标示符作为默认值。您可以通过 DBA_HIST_WR_CONTROL视图查看数据库实例的当前默认值。
 
03:52:18 SYS@ prod >col SNAP_INTERVAL for a20
03:52:52 SYS@ prod >col RETENTION for a30
03:52:59 SYS@ prod >select * from dba_hist_wr_control;
      DBID SNAP_INTERVAL        RETENTION                      TOPNSQL
---------- -------------------- ------------------------------ ----------
 219724276 +00000 00:30:00.0    +00030 00:00:00.0                     100

5、AWR相关视图

Oracle AWR Views

The following workload repository views are available:

V$ACTIVE_SESSION_HISTORY - Displays the active session history (ASH) sampled every second.
V$METRIC - Displays metric information.
V$METRICNAME - Displays the metrics associated with each metric group.
V$METRIC_HISTORY - Displays historical metrics.
V$METRICGROUP - Displays all metrics groups.
DBA_HIST_ACTIVE_SESS_HISTORY - Displays the history contents of the active session history.
DBA_HIST_BASELINE - Displays baseline information.
DBA_HIST_DATABASE_INSTANCE - Displays database environment information.
DBA_HIST_SNAPSHOT - Displays snapshot information.
DBA_HIST_SQL_PLAN - Displays SQL execution plans.
DBA_HIST_WR_CONTROL - Displays AWR settings.

六、AWR 报告分析

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: SQLElapsed Time时间占数据库总时间的百分比。

            SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。

            SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。

            SQL Text: 简单的sql提示,详细的需要点击SQL ID

 SQL ordered by CPU Time:

            记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)

 SQL ordered by Gets:

            记录了执行占总buffer gets(逻辑IO)TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)

 SQL ordered by Reads:

            记录了执行占总磁盘物理读(物理IO)TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读) 

 SQL ordered by Executions:

            记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。 

SQL ordered by Parse Calls:

            记录了SQL的软解析次数的TOP SQL。说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oraclesql的处理过程。

SQL ordered by Sharable Memory:

            记录了SQL占用library cache的大小的TOP SQLSharable Mem (b):占用library cache的大小,单位是byte

SQL ordered by Version Count:

            记录了SQL的打开子游标的TOP SQL

SQL ordered by Cluster Wait Time:

            记录了集群的等待时间的TOP SQL。










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1571336,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29075 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16421 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20686 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14896 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22330 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23576 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36420 0
+关注
20377
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载