AWR --生成AWR报表

1. generate AWR report, AWR可以支持HTML .TXT格式的报表

cd $ORACLE_HOME/rdbms/admin

@awrrpt.sql

2.生成指定数据库实例的统计报表

@$ORACLE_HOME/rdbms/admin/awrrpti.sql

3. 生成指定SQL语句的统计报表

这项统计专门用来分析某条指定的SQL语句,通过awrsqrpt.sql脚本,awr能够生成指定sql(曾经执行过的SQL)的执行计划,消耗的资源等等信息,有助于DBA进行SQL调优。

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

4. 生成不同时间段时的统计对比报表

  在没有awr之前,如果希望对不同时间段时,数据库的整体影响进行对比,只能依靠DBA手工查询相关视图,并通过时间条件来获取差异(还有些统计已经无法对比),而在AWR中,直接就提供了,对不同时间段时,数据库的性能统计做差异对比的功能。

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

Enter value for num_days: 2 --选择需要生成报表的时间区间

Listing the last 2 days of Completed Snapshots

5. 查看AWR视图

SQL> select * from dict where table_name like ¨DBA_HIST%¨;

  • V$ACTIVE_SESSION_HISTORY

  该视图由ASH自动维护,以每秒一次的频率收集当前系统中活动session的信息。虽然说是记录SESSION的历史记录,不过该视图与V$SESSION还是有差异的。

  • 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_DATABASE_INSTANCE

  该视图用来显示数据库和实例的信息,比如DBID,实例名,数据库版本等等信息,生成报表中第一行表格,就是由该视图生成的

SQL> select distinct
2 (case when cd.dbid = wr.dbid and
3 cd.name = wr.db_name and
4 ci.instance_number = wr.instance_number and
5 ci.instance_name = wr.instance_name
6 then '* '
7 else ' '
8 end) || wr.dbid dbbid
9 , wr.instance_number instt_num
10 , wr.db_name dbb_name
11 , wr.instance_name instt_name
12 , wr.host_name host
13 from dba_hist_database_instance wr, v$database cd, v$instance ci;

DBBID INSTT_NUM DBB_NAME INSTT_NAME HOST
------------------------------------------ ---------- --------- ---------------- ------------------------------- 1501573165 1 EDADB EDADB1 zged4a
* 1501573165 2 EDADB EDADB2 zged4b
1501573165 1 EDADB EDADB2 zged4b

  • 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;

6. snapshot

a) 手动创建一个snapshot

SQL> exec dbms_workload_repository.create_snapshot();

PL/SQL procedure successfully completed.

SQL> select count(0) from dba_hist_snapshot where snap_id <= 2501 ;

COUNT(0)

----------

10

SQL> begin

2 dbms_workload_repository.drop_snapshot_range(

3 low_snap_id => 2480,

4 high_snap_id => 2501

5 dbid => 1501573165 );

6 end;

7 /

PL/SQL procedure successfully completed.

SQL> select count(0) from dba_hist_snapshot where snap_id between <=2501;

COUNT(0)

----------

0

c) 修改Snapshots设置

--check the configuration of snapshot

select * from dba_hist_wr_control;

--change interval

exec dbms_workload_repository.modify_snapshot_settings(interval=>120);

PL/SQL procedure successfully completed

d) 创建Baseline

SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;

DBID BASELINE_NAME START_SNAP_ID END_SNAP_ID
---------- ---------------------------------------------------------------- ------------- -----------
1501573165 AWR_1225896489989 7650 7841

--create baseline

BEGIN
DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'test_baseline',
cascade => true);
END;
/

SQL> e) 删除Baseline

BEGIN
DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'test_baseline',
cascade => true);
END;
/

b) 手动删除一个snapshot[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/573930/viewspace-1056598/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/573930/viewspace-1056598/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值