当前位置:  数据库>oracle

Oracle RAC环境下配置Statspack

    来源: 互联网  发布时间:2017-06-10

    本文导语: Statspack是Oracle 9i时代的产物,对于监控与分析数据库性能有着跨里程碑的意义,是AWR的前身。在Oracle 10g后AWR取代了statspack。尽管如此,awr异常或者需要调试包license的情况下statpack依旧是不错的选择。然而在RAC环境中,statspack并...

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');

      w_status := sys.DBMS_LOCK.release (lockhandle => w_handle);
  ELSE
      DBMS_OUTPUT.put_line (
            TO_CHAR (SYSDATE, 'dd hh24:mi:ss')
        || CASE w_status
              WHEN 1 THEN ': Lock wait timed out'
              WHEN 2 THEN ': deadlock detected'
              WHEN 3 THEN ': parameter error'
              WHEN 4 THEN ': already holding lock'
              WHEN 5 THEN ': illegal lock handle'
              ELSE ': unknown error'
            END);
  END IF;
END;
/

5) 创建用于job调度的过程
BEGIN                                                                       
  DBMS_SCHEDULER.create_program (program_name    => 'PROC_RAC_STATSPACK', 
                                  program_type    => 'STORED_PROCEDURE',   
                                  program_action  => 'db_proc_rac_statspack',
                                  enabled          => TRUE);                 
END;                                                                         
/                                                                           

6) 清除同名job(如果存在)
BEGIN                                                   
  DBMS_SCHEDULER.drop_job ('ORCL10_PERFSTAT_COLLECT_N1',force=>true);
  DBMS_SCHEDULER.drop_job ('ORCL10_PERFSTAT_COLLECT_N2',force=>true);
  DBMS_SCHEDULER.drop_job ('ORCL10_PERFSTAT_PURGE_N1',force=>true); 
  DBMS_SCHEDULER.drop_job ('ORCL10_PERFSTAT_PURGE_N2',force=>true); 
END;                                                     
/                                                       

7) 创建产生snapshot以及清除历史snapshot的job    --Author :Leshami --Blog :www.linuxidc.com
  DBMS_SCHEDULER.create_job (
      job_name          => 'ORCL_PERFSTAT_COLLECT_N1',
      program_name      => 'PROC_RAC_STATSPACK',
      start_date        => SYSTIMESTAMP,
      repeat_interval  => 'FREQ=hourly; INTERVAL=1; BYMINUTE=30',
      job_class        => 'statspack_suse11a_class',
      comments          => 'This job will run on suse11a',
      ENABLED          => TRUE);

  DBMS_SCHEDULER.create_job (
      job_name          => 'ORCL_PERFSTAT_PURGE_N1',
      job_type          => 'PLSQL_BLOCK',
      job_action        => 'begin STATSPACK.PURGE(31); end;',
      start_date        => SYSTIMESTAMP,
      repeat_interval  => 'FREQ=DAILY; BYHOUR=23; BYMINUTE=30',
      job_class        => 'statspack_suse11a_class',
      enabled          => TRUE);
END;
/

--- create the job for Node 2:

BEGIN
  DBMS_SCHEDULER.create_job (
      job_name          => 'ORCL_PERFSTAT_COLLECT_N2',
      program_name      => 'PROC_RAC_STATSPACK',
      start_date        => SYSTIMESTAMP,
      repeat_interval  => 'FREQ=hourly; INTERVAL=1; BYMINUTE=30',
      job_class        => 'statspack_suse11b_class',
      comments          => 'This job will run on suse11b',
      enabled          => TRUE);

 

  DBMS_SCHEDULER.create_job (
      job_name          => 'ORCL_PERFSTAT_PURGE_N2',
      job_type          => 'PLSQL_BLOCK',
      job_action        => 'begin STATSPACK.PURGE(31); end;',
      start_date        => SYSTIMESTAMP,
      repeat_interval  => 'FREQ=DAILY; BYHOUR=23; BYMINUTE=30',
      job_class        => 'statspack_suse11b_class',
      enabled          => TRUE);
END;
/

更多详情见请继续阅读下一页的精彩内容:


    
 
 

您可能感兴趣的文章:

  • 细化解析Oracle 10g STATSPACK的新功能
  • Oracle中暗藏的珍宝:STATSPACK
  • 配置Oracle management server /Oracle启动OMS
  • 在Redhat7.2+Oracle8i如果硬件配置中用P4处理器,对oracle的安装有没有影响(100分)
  • weblogic 中怎样配置 oracle JDBC driver?
  • redhat 8.0+oracle 8.1.7下面配置proc环境的问题
  • linux下怎么配置jdbc 访问oracle ,知情者请告知
  • oracle的jdbc的配置
  • 一个jsp的数据库问题-oracle的服务端如何配置
  • 不会配置oracle怎么办?
  • JDBC from ORACLE 8.1.7的配置问题
  • Linux上怎么配置oracle的ODBC数据源?
  • 请问jboss+oracle文件怎样配置,数据库中文字段不为乱码
  • linux iis7站长之家
  • 请问哪里有 小性机 +linux +oracle 的配置方案?
  • Linux主机下配置Oracle 10G自动启动过程记
  • 如何配置 linux 下 oracle 的 listener .ora 和
  • 求.bash_profile配置oracle详解
  • 用redhat linux8.0+Oracle8i做网络数据库服务器,我需要怎样配置?
  • 配置Oracle RAC需要注意的问题
  • Oracle数据库安装配置示例
  • Linux Apache PHP Oracle 安装配置
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Red Hat Linux 9 和 Oracle 9.2 环境下,如何配制字符集,让Oracle能存入并显示日语里的假名?
  • window中oracle环境变量设置方法分享
  • linux环境下oracle条件导出数据的shell脚本怎么写
  • oracle环境变量保存问题求教
  • Oracle9i在Win2k环境下的完全卸载
  • Oracle与JSDK4.0环境变量冲突,如何解决(在线等待)?
  • windows下通过ie访问不到linux环境下的oracle em
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 请教:关于[linux/unix环境下连接到Oracle数据库后断开连接]的问题
  • 急急急!!!Solaris中JSP运行环境(tomcat)应如何设置才能使jsp连接到ORACLE???
  • 请教怎样在虚拟机中的linux系统安装 Java环境以及Oracle
  • Linux环境中Oracle数据导入与导出备份操作
  • Linux环境下完全删除Oracle
  • 技巧学习 在Python环境下连接Oracle数据库
  • 基于Linux环境的Oracle 11g数据库正式推出
  • Linux环境下搭建Oracle SOA Suite
  • 请高人指点:我准备在我的机子(winxp)上安装linux(双操作系统),然后在linux环境下 安装oracle817
  • CentOS 5 环境下安装oracle 10g 与 rhel 5下 安装有区别吗? [散分]
  • windows server 2003 sp1下.net 3.5(Oracle 9.2)环境配置
  • Linux平台配置Oracle ProC开发环境
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,