您好,欢迎访问一九零五行业门户网

Oracle RAC环境下配置Statspack

statspack是oracle 9i时代的产物,对于监控与分析数据库性能有着跨里程碑的意义,是awr的前身。在oracle 10g后awr取代了statspac
statspack是oracle 9i时代的产物,对于监控与分析数据库性能有着跨里程碑的意义,是awr的前身。在oracle 10g后awr取代了statspack。尽管如此,awr异常或者需要调试包license的情况下statpack依旧是不错的选择。然而在rac环境中,statspack并不支持,,需要单独的进行配置以及使用job来进行管理。本文描述的则是通过在rac环境下创建service,以及job来达到各节点同时产生snapshot的效果。
一、演示环境
suse11a:oracle:orcl101 > cat /etc/issue
welcome to suse linux enterprise server 11 sp3  (x86_64) - kernel \r (\l).
suse11a:oracle:orcl101 > sqlplus -v
sql*plus: release 10.2.0.5.0 - production
suse11a:oracle:orcl101 > $ora_crs_home/bin/crsctl query crs activeversion
crs active version on the cluster is [10.2.0.5.0]
二、配置statspack
1)首先添加service
$  srvctl add service -d orcl10 -s statspack_suse11a_srvc -r orcl101 
$  srvctl add service -d orcl10 -s statspack_suse11b_srvc -r orcl102
$  srvctl start service -d orcl10 -s statspack_suse11a_srvc
$  srvctl start service -d orcl10 -s statspack_suse11b_srvc
$  srvctl status service -d orcl10
service orcl10_srv is running on instance(s) orcl102, orcl101
service statspack_suse11a_srvc is running on instance(s) orcl101
service statspack_suse11b_srvc is running on instance(s) orcl102
$  srvctl config service -d orcl10     
orcl10_srv pref: orcl102 orcl101 avail:
statspack_suse11a_srvc pref: orcl101 avail:
statspack_suse11b_srvc pref: orcl102 avail:
$ lsnrctl status
  .........
service statspack_suse11a_srvc has 1 instance(s).
  instance orcl101, status ready, has 2 handler(s) for this service...
service statspack_suse11b_srvc has 1 instance(s).
  instance orcl102, status ready, has 1 handler(s) for this service...
  .............
2)配置statspack
conn / as sysdba
create tablespace perfstat datafile '+asm_data' size 500m autoextend on;
@?/rdbms/admin/spcreate
grant execute on dbms_lock to perfstat;
grant create job to perfstat;
grant execute on sys.dbms_scheduler to perfstat;
grant execute on sys.dbms_isched to perfstat;
3)创建job class
begin
  dbms_scheduler.create_job_class (
      job_class_name  => 'statspack_suse11a_class',
      service          => 'statspack_suse11a_srvc');
  dbms_scheduler.create_job_class (
      job_class_name  => 'statspack_suse11b_class',
      service          => 'statspack_suse11b_srvc');
end;
/
sql> select job_class_name, service from dba_scheduler_job_classes;
job_class_name                service
------------------------------ -------------------------------------------------
default_job_class
auto_tasks_job_class
statspack_suse11a_class        statspack_suse11a_srvc
statspack_suse11b_class        statspack_suse11b_srvc
grant execute on sys.statspack_suse11a_class to perfstat;
grant execute on sys.statspack_suse11b_class to perfstat;
4)创建用于同步节点的过程
conn perfstat/perfstat
create or replace procedure db_proc_rac_statspack
as
  w_status      number (38);
  w_handle      varchar2 (60);
  w_snap_level  number;
begin
  w_snap_level := 7;
  sys.dbms_lock.allocate_unique (lockname    => 'synchronize statspack',
                                  lockhandle  => w_handle);
  w_status :=
      sys.dbms_lock.request (lockhandle          => w_handle,
                            lockmode            => dbms_lock.x_mode,
                            timeout            => 300, -- seconds, default is dbms_lock.maxwait
                            release_on_commit  => false -- which is the default
                                                        );
  if (w_status = 0)
  then
      dbms_output.put_line (
            to_char (sysdate, 'dd hh24:mi:ss')
        || ': acquired lock, running statspack');
      statspack.snap (w_snap_level);
      dbms_output.put_line (
        to_char (sysdate, 'dd hh24:mi:ss') || ': snapshot completed');
其它类似信息

推荐信息