- 浏览: 50842 次
- 性别:
- 来自: 北京
最新评论
Oracle AWR 手动配置 1.查看当前的AWR保存策略
select * from dba_hist_wr_control;
DBID,SNAP_INTERVAL,RETENTION,TOPNSQL
860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT
以上结果表示,每小时产生一个SNAPSHOT,保留7天
2.调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配置
2.1调整AWR产生snapshot的频率和保留策略,如:如将收集间隔时间改为30 分钟一次。并且保留5天时间(注:单位都是为分钟):
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
2.2关闭AWR,把interval设为0则关闭自动捕捉快照
2.3手工创建一个快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
2.4 查看快照
select * from sys.wrh$_active_session_history
2.5手工删除指定范围的快照
exec WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047);
2.6创建baseline
exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1')
2.7删除baseline
exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);
3.生产AWR报告
$ORACLE_HOME/rdbms/admin/awrrpt.sql
4.1 Snapshots( 快照)
前面操作报表生成时,snap这个关键字已经出现过多次了,想必你对它充满了疑惑,这个东西是哪来的咋来的谁让它来的呢?事实上,Snap是Snapshot的简写,这正是AWR在自动性方面的体现,虽然你没有创建,但是AWR自动帮你创建了(当然也可以手动创建snapshot),并且是定时(每小时)创建,定期清除(保留最近7天)。
Snapshots 是一组某个时间点时历史数据的集合,这些数据就可被ADDM(Automatic Database Diagnostic Monitor)用来做性能对比。默认情况下,AWR能够自动以每小时一次的频率生成Snapshots性能数据,并保留7天,,如果需要的话,DBA可以通过DBMS_WORKLOAD_REPOSITORY过程手动创建、删除或修改snapshots。
提示:调用DBMS_WORKLOAD_REPOSITORY包需要拥有DBA权限。
4.1.1 手动创建Snapshots
手动创建Snapshots,通过DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT过程,例如:
SQL> exec dbms_workload_repository.create_snapshot();
PL/SQL procedure successfully completed.
然后可以通过DBA_HIST_SNAPSHOT 视图查看刚刚创建的Snapshots信息。
4.1.2 手动删除Snapshots
删除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一个过程:DROP_SNAPSHOT_RANGE,该过程在执行时可以通过指定snap_id的范围的方式一次删除多个Snapshots,例如:
SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;
COUNT(0)
----------
10
SQL> begin
2 dbms_workload_repository.drop_snapshot_range(
3 low_snap_id => 7509,
4 high_snap_id => 7518,
5 dbid => 3812548755);
6 end;
7 /
PL/SQL procedure successfully completed.
SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;
COUNT(0)
----------
0
注意当snapshots被删除的话,与其关联的ASH记录也会级联删除。
4.1.3 修改Snapshots设置
通过MODIFY_SNAPSHOT_SETTINGS过程,DBA可以调整包括快照收集频率、快照保存时间、以及捕获的SQL数量三个方面的设置。分别对应MODIFY_SNAPSHOT_SETTINGS的三个参数:
•Retention :设置快照保存的时间,单位是分钟。可设置的值最小为1天,最大为100年。设置该参数值为0的话,就表示永久保留收集的快照信息。
•Interval :设置快照收集的频率,以分钟为单位。可设置的值最小为10分钟,最大为1年。如果设置该参数值为0,就表示禁用AWR特性。
•Topnsql :指定收集的比较占用资源的SQL数量,可设置的值最小为30,最大不超过100000000。
查看当前快照收集的相关设置,可以通过DBA_HIST_WR_CONTROL视图查看,例如:
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ------------------------ -------------------- ----------
3812548755 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
又比如通过MODIFY_SNAPSHOT_SETTTINGS过程修改snap_intrval的设置:
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>120);
PL/SQL procedure successfully completed.
SQL> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ------------------------ -------------------- ----------
3812548755 +00000 02:00:00.0 +00007 00:00:00.0 DEFAULT
4.2 Baselines( 基线)
Baseline ,直译的话叫做基线,顾名思义的方式理解,就是用于比较的基本线。因为Baseline中包含指定时间点时的性能数据,因此就可以用来与其它时间点时的状态数据做对比,以分析性能问题。
创建Baseline时,Snapshots是做为其中的一个组成部分存在,因此一般来说当AWR自动维护快照时,如果定义过baseline,与baseline相关的快照不会被删除,即使是过期的快照,这样就相当于手动保留了一份统计数据的历史信息,DBA可以在适当的时间将其与现有的快照进行对比,以生成相关的统计报表。
用户可以通过DBMS_WORKLOAD_REPOSITORY包中的相关过程,手动的创建或删除Baseline。
4.2.1 创建Baseline
创建Baseline使用CREATE_BASELINE过程,执行该过程时分别指定开始和结果的snap_id,然后为该baseline定义一个名称即可,例如:
SQL> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id => 7550,
3 end_snap_id => 7660,
4 baseline_name => ¨am_baseline¨);
5 END;
6 /
PL/SQL procedure successfully completed.
SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;
DBID BASELINE_NAME START_SNAP_ID END_SNAP_ID
---------- -------------------- ------------- -----------
3812548755 am_baseline 7550 7660
4.2.2 删除Baseline
删除Baseline使用DROP_BASELINE过程,删除时可以通过cascade参数选择是否将其关联的Snapshots级别进行删除,例如:
SQL> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ¨am_baseline¨,
3 cascade => true);
4 END;
5 /
PL/SQL procedure successfully completed.
SQL> select * from dba_hist_baseline;
no rows selected
SQL> select * from dba_hist_snapshot where snap_id between 7550 and 7660;
no rows selected
如上例中所示,删除时指定了cascade参数值为true,对应的snap也被级联删除了。
不管是EM也好,或是前面演示中使用的awr*.sql脚本也好,实质都是访问ORACLE中的部分相关视图来生成统计数据,因此如果DBA对自己的理解能力有足够的自信,也可以直接查询动态性能视图(或相关数据字典)的方式来获取自己想要的那部分性能数据。ORACLE将这部分性能统计数据保存在DBA_HIST开头的数据字典中,要查询当前实例所有能够访问的DBA_HIST字典,可以通过下列语句:
SQL> select * from dict where table_name like ¨DBA_HIST%¨;
TABLE_NAME COMMENTS
------------------------------ --------------------------------------------------------------------------------
DBA_HIST_DATABASE_INSTANCE Database Instance Information
DBA_HIST_SNAPSHOT Snapshot Information
DBA_HIST_SNAP_ERROR Snapshot Error Information
DBA_HIST_BASELINE Baseline Metadata Information
DBA_HIST_WR_CONTROL Workload Repository Control Information
DBA_HIST_DATAFILE Names of Datafiles
DBA_HIST_FILESTATXS Datafile Historical Statistics Information
DBA_HIST_TEMPFILE Names of Temporary Datafiles
DBA_HIST_TEMPSTATXS Temporary Datafile Historical Statistics Information
DBA_HIST_COMP_IOSTAT I/O stats aggregated on component level
DBA_HIST_SQLSTAT SQL Historical Statistics Information
DBA_HIST_SQLTEXT SQL Text
......................
........................
ORACLE 数据库中以DBA_HIST命名的视图非常多,下面简单介绍几个,比如说:
•V$ACTIVE_SESSION_HISTORY
该视图由ASH自动维护,以每秒一次的频率收集当前系统中活动session的信息。虽然说是记录SESSION的历史记录,不过该视图与V$SESSION还是有差异的。
SQL> desc v$active_session_history;
Name Type Nullable Default Comments
------------------------- ------------ -------- ------- --------
SAMPLE_ID NUMBER Y
SAMPLE_TIME TIMESTAMP(3) Y
SESSION_ID NUMBER Y
SESSION_SERIAL# NUMBER Y
USER_ID NUMBER Y
SQL_ID VARCHAR2(13) Y
SQL_CHILD_NUMBER NUMBER Y
SQL_PLAN_HASH_VALUE NUMBER Y
FORCE_MATCHING_SIGNATURE NUMBER Y
SQL_OPCODE NUMBER Y
PLSQL_ENTRY_OBJECT_ID NUMBER Y
PLSQL_ENTRY_SUBPROGRAM_ID NUMBER Y
PLSQL_OBJECT_ID NUMBER Y
PLSQL_SUBPROGRAM_ID NUMBER Y
SERVICE_HASH NUMBER Y
SESSION_TYPE VARCHAR2(10) Y
SESSION_STATE VARCHAR2(7) Y
QC_SESSION_ID NUMBER Y
QC_INSTANCE_ID NUMBER Y
BLOCKING_SESSION NUMBER Y
BLOCKING_SESSION_STATUS VARCHAR2(11) Y
BLOCKING_SESSION_SERIAL# NUMBER Y
EVENT VARCHAR2(64) Y
EVENT_ID NUMBER Y
EVENT# NUMBER Y
SEQ# NUMBER Y
P1TEXT VARCHAR2(64) Y
P1 NUMBER Y
P2TEXT VARCHAR2(64) Y
P2 NUMBER Y
P3TEXT VARCHAR2(64) Y
P3 NUMBER Y
WAIT_CLASS VARCHAR2(64) Y
WAIT_CLASS_ID NUMBER Y
WAIT_TIME NUMBER Y
TIME_WAITED NUMBER Y
XID RAW(8) Y
CURRENT_OBJ# NUMBER Y
CURRENT_FILE# NUMBER Y
CURRENT_BLOCK# NUMBER Y
PROGRAM VARCHAR2(48) Y
MODULE VARCHAR2(48) Y
ACTION VARCHAR2(32) Y
CLIENT_ID VARCHAR2(64) Y
v$session 中与操作相关的列均被收集,除此之外还冗余了部分列,这是为了方便DBA查询V$ACTIVE_SESSION_HISTORY时能够快速获取到自己需要的数据。
•DBA_HIST_ACTIVE_SESS_HISTORY
该视图与V$ACTIVE_SESSION_HISTORY的结构灰常灰常灰常的想像,功能也灰常灰常灰常的类似,都是记录活动session的操作记录,所不同点在于,V$ACTIVE_SESSION_HISTORY是ORACLE自动在内存中维护的,受制于其可用内存区限制,并非所有记录都能保存,而DBA_HIST_ACTIVE_SESS_HISTORY视图则是维护到磁盘中的。简单理解的话,就是说通常情况下,DBA_HIST_ACTIVE_SESS_HISTORY视图的数据量要比V$ACTIVE_SESSION_HISTORY的多。
提示:上述结构并不绝对,因为默认情况下DBA_HIST_ACTIVE_SESS_HISTORY字典的数据每10秒收集一次,而V$ACTIVE_SESSION_HISTORY中则是每秒一次,因此也有可能V$ACTIVE_SESSION_HISTORY中记录量更大。不过相对来说,DBA_HIST字典中保存的数据更长久。
•DBA_HIST_DATABASE_INSTANCE
该视图用来显示数据库和实例的信息,比如DBID,实例名,数据库版本等等信息,生成报表中第一行表格,就是由该视图生成的。如图:
如果你去分析awrrpt.sql脚本的话,会发现其中有如下脚本,上述表格中显示的内容信息,正是来自于下列脚本:
select distinct
(case when cd.dbid = wr.dbid and
cd.name = wr.db_name and
ci.instance_number = wr.instance_number and
ci.instance_name = wr.instance_name
then ¨* ¨
else ¨ ¨
end) || wr.dbid dbbid
, wr.instance_number instt_num
, wr.db_name dbb_name
, wr.instance_name instt_name
, wr.host_name host
from dba_hist_database_instance wr, v$database cd, v$instance ci;
•DBA_HIST_SNAPSHOT
该视图用来记录当前数据库收集到的快照信息。相信朋友应该还记得之前使用脚本生成报表时,输入完快照区间后显示的一堆列表,没错,那正是DBA_HIST_SNAPSHOT记录的内容,该段功能对应的代码如下:
select to_char(s.startup_time,¨dd Mon "at" HH24:mi:ss¨) instart_fmt
, di.instance_name inst_name
, di.db_name db_name
, s.snap_id snap_id
, to_char(s.end_interval_time,¨dd Mon YYYY HH24:mi¨) snapdat
, s.snap_level lvl
from dba_hist_snapshot s
, dba_hist_database_instance di
where s.dbid = :dbid
and di.dbid = :dbid
and s.instance_number = :inst_num
and di.instance_number = :inst_num
and di.dbid = s.dbid
and di.instance_number = s.instance_number
and di.startup_time = s.startup_time
and s.end_interval_time >= decode( &num_days
, 0 , to_date(¨31-JAN-9999¨,¨DD-MON-YYYY¨)
, 3.14, s.end_interval_time
, to_date(:max_snap_time,¨dd/mm/yyyy¨) - (&num_days-1))
order by db_name, instance_name, snap_id;
发表评论
-
Oracle Result Cache
2012-01-12 10:28 2708result cache1.结果集缓存,oracle 11g新 ... -
Oracle 登录认证相关
2011-11-30 14:11 13031.主要几个配置文件1.sql ... -
Oracle 数据库搬迁测试
2011-11-24 09:36 1100Oracle 数据库搬迁测试 测试目的:将物理文件从E盘目录移 ... -
Oracle logMiner
2011-11-21 20:37 944-- oracle 10g 10.2.0.1.0 ... -
Oracle 表访问方式
2011-11-17 12:12 1005SQL> set autotrace traceonly ... -
listener.ora、sqlnet.ora、tnsnames.ora
2011-11-10 11:20 873三个配置文件 listener.ora、sqlnet.ora、 ... -
Oracle cursor
2011-11-01 11:45 2489一 概念 游标是 ... -
Oracle 认证
2011-10-17 14:23 131.主要几个配置文件1.sql ... -
Oracle 命令大全
2011-09-29 09:33 839System Operateion Sql ... -
ORACLE数据库优化设计方案
2011-09-26 14:22 656对于ORACLE数据库的数据 ... -
oracle 分区管理
2011-09-19 10:47 1077oracle分区表管理2009-08-30 12:29作用:将 ... -
Oracle over
2011-09-01 10:14 858Oracle over函数 ... -
Oracle 号段
2011-09-01 09:42 8611.用lead 和lag 可以获取相邻号段的值 SELECT ... -
oracle job
2011-08-08 20:21 895定义oracle job DECLARE V_J ... -
oracle 日期大全
2011-07-05 16:05 47751:取得当前日期是本月的第几周 SQL> select ... -
EXPIMP详解
2011-06-30 11:22 670exp将数据库内的各对象以二进制方式下载成dmp文件, ... -
oracle 手动建库
2011-06-23 14:42 885自己手动创建的一个过程,贴出来以备查看 1.建立ora ... -
ORACLE 中更改客户端日期显示方式
2011-06-23 14:27 882如,按 yyyy-mm-dd 显示如下 ALTER SESS ... -
Oracle 数据类型及存储方式
2011-04-12 15:36 905Oracle 数据类型及存储方式 概述 通过实例,全面而深入的 ... -
ORA-01092 数据库打不开的问题原因(数据库升级不成功的问题)
2011-04-11 16:13 737Oracle10.2.0.1到10.2.0.4升级,升级完成后 ...
相关推荐
AWR在使用时如出现右键点击project栏时出现崩溃现象将dll文件复制到AWRDE\13下替换掉原来文件,同时将lic文件中的HOSTID值替换成电脑mac地址如:HOSTID=ID=10179 ck=198 SN=10179更改为 HOSTID=************ ck=198 ...
AWR射频仿真,AWR射频仿真,AWR射频仿真,AWR射频仿真,AWR射频仿真,AWR射频仿真,
oracle查看awr的详细介绍 AWR 是 Oracle 10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快,照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个...
awr报告awr报告awr报告awr报告
AWR仿真案例教程英文版,实际案例进行教学
Oracle AWR报告详细分析,详细地说明了AWR报告里个统计量含义。
性能测试过程中,我们会监控数据库资源,发现性能测试瓶颈在数据库后,需要打印oracle awr报告来定位问题,那我们如何打印awr报告呢?以下为生成awr步骤。1. 首先第一步查看实例:echo $ORACLE_SID 2. 赋值实例:...
最近想要通过awr观察下某个oracle实例的性能情况,碰到了在sqlplus执行awrrpt.sql到选择snapshot区间的时候无任何区间供选导致无法进一步生 成awr的情况,而且手动使用execute DBMS_WORKLOAD_REPOSITORY.CREATE_...
这个是AWR14,需要教程的可以联系我哈,教程我也有,懒得往里放了
针对AWR13的license不能用的修改解决方案
网络上大量关于分析 AWR 报表的文档,此类文档没有提供相关的资料,有些描述有岐义。 导致很多新人只知其然不知所以然。 此文档目的帮助更加深入理解 AWR 报表,为 oracle 从业者与技术爱好做性能分析与性 能监控...
AWR报告详细解读及常见等待事件的详细介绍,让你快速学会AWR报告核心内容及主要参数含义,详细等待事件介绍帮助你快速分析数据库瓶颈
oracle awr报告具体分析
目前发现很多局点在上线以后有很多低效的sql,导致cpu繁忙、磁盘I/O繁忙、效率低下,影响系统的正常运行。如何在测试环节或上线以后发现这些低效的sql呢? Oracle AWR报告可以很好的帮我们解决这个问题
目前最好的看awr报告的插件工具,可以将awr报告转换成容易查看的格式。
NI AWR 13.01设计MMIC芯片,官方设计指导中文版的pdf。
AWR1443boost用户指南笔记1
AWR报告生成手动配置,调整AWR配置,dbms_workload_repository包
OracleAWR报告详细分析.pdf