整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

AWR基本操作

AWR基本操作

.手工创建一个快照

SQL> select * from dba_hist_snapshot order by 1 desc;

SQL> exec dbms_workload_repository.create_snapshot;

2.手工删除指定范围的快照

SQL> select * from sys.wrh$_active_session_history order by snap_id desc;

SQL> select * from dba_hist_snapshot order by 1 desc;

SQL> execute dbms_workload_repository.drop_snapshot_range(low_snap_id=> 26, high_snap_id=> 44, dbid=> 1236598332);

SQL> select * from sys.wrh$_active_session_history order by snap_id desc;

3.修改采集时间和统计信息保留时间(默认的的收集间隔为1小时,保存时间为1周)

SQL> select * from dba_hist_wr_control;

SQL> execute dbms_workload_repository.modify_snapshot_settings(interval=>10,retention=> 60*24*7);

--修改快照的收集间隔为10分钟,保存时间为1周。

SQL> select * from dba_hist_wr_control;

4.设置基线

基线(baseline)是一种机制,这样你可以在重要时间的快照信息集做标记。一个基线定义在一对快照之间,快照通过他们的快照序列号识别.每个基线有且只有一对快照。

SQL> select * From dba_hist_baseline;

SQL> select * from sys.wrm$_baseline;

SQL> exec dbms_workload_repository.create_baseline(45, 46, 'base_line_test_1');

这一操作将快照从 45 到 46 编号,作为上面指定的基准线的一部分。查看现有的基准线:

SQL> select * From dba_hist_baseline;

SQL> select * from sys.wrm$_baseline;

在一些调整步骤之后,我们可以创建另一个基准线 — 假设名称为 apply_interest_2,然后只为那些与这两条基准线相关的快照比较量度。

SQL> exec dbms_workload_repository.create_baseline(46, 47, 'base_line_test_2');

5.删除基线

SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'base_line_test_1', cascade=>false);

SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'base_line_test_2', cascade=>true);

说明:cascade=>false,只删除基线,不删除快照;cascade=>true基线、快照都删除。

6.生成报表

可以使用脚本awrrpt.sql或awrrpti.sql来查看AWR报告,这两个脚本都在目录$ORACLE_HOME/rdbms/admin中。Awrrpt.sql脚本可以显示指定快照id范围的诊断信息,报告可以保存为文本文件或HTML文件;awrrpti.sql脚本与awrrpt.sql类似,唯一的不同就是在awrrpti.sql脚本中,你可以指定数据库ID和实例ID(作为参数)。

SQL> @D:\oracle\product.1.0\db_1\RDBMS\ADMIN\awrrpt.sql;

注意看提示,一步步操作。

7.将AWR数据导出并迁移到其它数据库以便于以后分析(Oracle10g Release2提供两个新工具来完成导出和迁移,需要在sys用户下)

SQL> execute DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile=> 'awr_data', dmpdir=> 'UTL_DIR', bid=> 32, eid=> 35 ,dbid=> 1233305016 );

8.迁移AWR数据文件到其他数据库(Oracle10g Release2提供两个新工具来完成导出和迁移,需要在sys用户下)

SQL> exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME=> 'EDW', dmpfile=> 'awr_data', dmpdir=> 'UTL_DIR');

把AWR数据转移到SYS模式中:

SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME=> 'TEST');

通过awr特性我们可以随时从数据库提取awr报告。通过报告可以了解一个系统的整个运行情况,生成的报告包括多个部分。下面用shell脚本来收集每天开始时间6点,结束时间20点的awr报告并存储在/home/oracle/awr/report/目录下


基础环境

目录:mkdir -p /home/oracle/awr/report

脚本:/home/oracle/awr/awr.sh

执行用户:oracle


生成awr的脚本内容

vi /home/oracle/awr/awr.sh

#!/bin/bash
# ********************************
# * awr.sh
# ********************************
export ORACLE_SID=nwppdb
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
#the big snap_id
m=(`sqlplus -S "/ as sysdba" << EOF
set pagesize 0 feedback off verify off heading off echo off
select max(snap_id) from dba_hist_snapshot where begin_interval_time>to_date(to_char(sysdate,'YYYY-MM-DD')||' 06
','YYYY-MM-DD HH24') and end_interval_time<=to_date(to_char(sysdate,'YYYY-MM-DD')||' 20','YYYY-MM-DD HH24');
EOF`)
#the small snap_id
n=(`sqlplus -S "/ as sysdba" << EOF
set pagesize 0 feedback off verify off heading off echo off
select min(snap_id) from dba_hist_snapshot where begin_interval_time>to_date(to_char(sysdate,'YYYY-MM-DD')||' 06
','YYYY-MM-DD HH24') and end_interval_time<=to_date(to_char(sysdate,'YYYY-MM-DD')||' 20','YYYY-MM-DD HH24');
EOF`)
name=(`sqlplus -S "/ as sysdba" << EOF
set pagesize 0 feedback off verify off heading off echo off
select instance_name from v\\\$instance;
EOF`)
date=(`sqlplus -S "/ as sysdba" << EOF
set pagesize 0 feedback off verify off heading off echo off
select to_char(sysdate,'yyyymmddhh24') from dual;
EOF`)
sqlplus -S "/ as sysdba" <<EOF
@$ORACLE_HOME/rdbms/admin/awrrpt.sql;
html
1
$n
$m
/home/oracle/awr/report/awrrpt_1_${name}_${date}.html
EOF

这里大家注意根据需要修改ORACLE_SID、ORACLE_BASE、ORACLE_HOME参数

执行脚本

chmod u+x awr.sh

./awr.sh

执行过程如下:

拷贝html到本地后查看awr报告:

设置定时任务

crontab -e 设置每天晚上23:30自动执行脚本收集awr报告

30 23 * * * sh /home/oracle/awr/awr.sh


关于用shell脚本自动生成awr报告的内容就介绍到这了,大家也可以自己根据需要对脚本做调整。后面会分享更多关于devops和DBA方面内容,感兴趣的朋友可以关注下!!