监控备库性能,为Active DataGuard的备库生成statspack报告并实现定时发送

因为备库的数据与主库完全一样且只读,所以备库无法收集AWR报告,在备库上收集到的AWR其实是主库的数据信息。针对需要监控备库的性能这种情况,11g提供了一种办法,可以收集备库的statspack。
本文说明如何配置statspack并实现定时通过邮件发送报表到指定人员,下面为详细步骤:
注意,下面所有操作都是在主库上执行:

一、安装配置statspack
1、创建单独的表空间
$ sqlplus / as sysdba
SQL> create tablespace statspack '/oracle/data/statspack01.dbf' size 500m autoextend on maxsize unlimited;

2、安装statspack用户和对象
$ sqlplus / as sysdba
SQL> @?/rdbms/admin/spcreate.sql
输入PERFSTAT用户的密码,这里为aaa
默认表空间为sysaux,可以指定为statspack表空间
指定临时表空间为temp

SQL> @?/rdbms/admin/sbcreate.sql
输入STDBYPERF用户的密码,这里为bbb
默认表空间为sysaux,可以指定为statspack表空间
指定临时表空间为temp

3、添加备库实例
在运行sbcreate.sql脚本时,创建完对象时会自动调用/rdbms/admin/sbaddins.sql脚本来添加备库实例:
THE INSTANCE YOU ARE GOING TO ADD MUST BE ACCESSIBLE AND OPEN READ ONLY

Do you want to continue (y/n) ?
Enter value for key: y
You entered: y
需要输入standby数据库在主库中的tns的名称:
Enter the TNS ALIAS that connects to the standby database instance
-----------------------------------------------------------------
Make sure the alias connects to only one instance (without load balancing).
Enter value for tns_alias: orclb

需要输入standby数据库中perfstat用户的密码:
Enter the PERFSTAT user's password of the standby database
---------------------------------------------------------
Performance data will be fetched from the standby database via
database link. We will connect to user PERFSTAT.
Enter value for perfstat_password: aaa

4、收集快照:
$ sqlplus stdbyperf/bbb;
SQL> exec statspack_orclb_orcl.snap;
SQL> exec statspack_orclb_orcl.snap;
格式为statspack_(db_unique_name)_(instance_name).snap

5、生成报表:
SQL> @?/rdbms/admin/sbreport.sql

Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Unique Name                 Instance Name
------------------------------ ----------------
orclb                 orcl

Enter the DATABASE UNIQUE NAME of the standby database to report
Enter value for db_unique_name: orclb
You entered: orclb

Enter the INSTANCE NAME of the standby database instance to report
Enter value for inst_name: orcl
You entered: orcl

Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing <return> without
specifying a number lists all completed snapshots.



Listing all Completed Snapshots

                           Snap
Instance       Snap Id     Snap Started     Level Comment
------------ --------- ----------------- ----- --------------------
orcl           1 27 Oct 2015 18:38     5
               2 27 Oct 2015 18:46     5



Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1
Begin Snapshot Id specified: 1

Enter value for end_snap: 2
End   Snapshot Id specified: 2



Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sb_orclb_orcl_1_2.  To use this name,
press <return> to continue, otherwise enter an alternative.

Enter value for report_name: /tmp/sb_orclb_orcl_1_2


所有收集到的数据会存储在stdbyperf用户下面。

6、删除snapshot
$ sqlplus stdbyperf/bbb;
SQL> @?/rdbms/admin/sbpurge.sql

二、配置statspack定时收集snapshot
1、以使STATSPACK每小时收集一次备库的snapshot为例说明

在/tmp目录下创建sbauto.sql脚本,内容如下(从$ORACLE_HOME/rdbms/admin/spauto.sql脚本改编而来):
spool sbauto.lis

variable jobno number;
variable instno number;
begin
  select 1 into :instno from dual;
  dbms_job.submit(:jobno, 'statspack_orclb_orcl.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
  commit;
end;
/

prompt  the job:
print jobno

prompt  The next scheduled run for this job is:
select job, next_date, next_sec
  from user_jobs
where job = :jobno;

spool off;

2、执行脚本:
在主库上使用stdbyperf用户登录
$ sqlplus stdbyperf/bbb;
SQL> @/tmp/sbauto.sql

3、查询任务是否创建成功
$ sqlplus stdbyperf/bbb;
SQL> select job,log_user,priv_user,schema_user,next_date,next_sec from user_jobs;



三、设置定时产生报表并发送:
1、创建生成报表并发送的脚本:
改脚本范例为当天12点到14点的statspack报告。
$ vi /home/oracle/scripts/get_statspack.sh
内容如下:
. /home/oracle/.bash_profile
LOGDIR=/u02/monitor/log
date=`date '+%Y%m%d'`
filename=statspack_$date.txt
db_unique_name=orclb
inst_name=orcl

minid=`sqlplus -s / as sysdba <<EOF
set pagesize 0 feedback off verify off heading off echo off
select min(snap_id) from stdbyperf.stats\\$snapshot where snap_time between trunc(Sysdate)+12/24 And trunc(Sysdate)+14/24;
exit;
EOF`

maxid=`sqlplus -s / as sysdba <<EOF
set pagesize 0 feedback off verify off heading off echo off
select max(snap_id) from stdbyperf.stats\\$snapshot where snap_time between trunc(Sysdate)+12/24 And trunc(Sysdate)+14/24;
exit;
EOF`

sqlplus -S stdbyperf/bbb <<EOF
@$ORACLE_HOME/rdbms/admin/sbreport.sql
$db_unique_name
$inst_name
$minid
$maxid
$LOGDIR/statspack_$date.txt
exit;
EOF

mutt -s "statspack daily report" xxx@163.com -a $LOGDIR/$filename

加上执行权限:
chmod u+x /home/oracle/scripts/get_statspack.sh


2、创建定时任务:
$ crontab -e
30 15 * * * sh /home/oracle/scripts/get_statspack.sh >> /home/oracle/log/get_statspack.log

四、定时删除statspack历史数据的脚本:
vi /home/oracle/scripts/del_sp_his_snapshot_for_nicaifub.sh
内容:
. /home/oracle/.bash_profile
export DB_UNIQUE_NAME=nicaifub
export INSTANCE_NAME=nicaifu
export DATE=`date '+%Y%m%d'`

echo $DATE

lowid=`sqlplus -s / as sysdba <<EOF
set pagesize 0 feedback off verify off heading off echo off
select min(snap_id) from stdbyperf.stats\\$snapshot;
exit;
EOF`

highid=`sqlplus -s / as sysdba <<EOF
set pagesize 0 feedback off verify off heading off echo off
select max(snap_id)-24 from stdbyperf.stats\\$snapshot;
exit;
EOF`

echo $lowid
echo $highid

sqlplus stdbyperf/statspack_1qaz2wsx <<EOF
@$ORACLE_HOME/rdbms/admin/sbpurge.sql
$DB_UNIQUE_NAME
$INSTANCE_NAME
$lowid
$highid
exit;
EOF

chmod u+x /home/oracle/scripts/del_sp_his_snapshot_for_nicaifub.sh
定时任务crontab -e
10 03 * * * sh /home/oracle/scripts/del_sp_his_snapshot_for_nicaifub.sh >> /home/oracle/log/del_sp_his_snapshot_for_nicaifub.log




附:
运行job:
SQL> exec dbms_job.run(4);
停止job:
SQL> exec dbms_job.broken(4,true);
删除job:
SQL> dbms_job.remove(4);

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

转载于:http://blog.itpub.net/26194851/viewspace-2120135/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值