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)
----------
0c) 修改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;
/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/573930/viewspace-1056598/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/573930/viewspace-1056598/