Oracle statspack 安装及使用
转载:http://blog.csdn.net/joinplay/article/details/23358133
oracle statspack 工具从oracle 8.1.6开始被引用,从oracle 10G开始,oracle推出新的工具AWR(Automatic Workload Repository)。
statspack是免费的,AWR工具很多特性是需要付费的。
在数据库中statspack初始并未安装,要使用,需要通过一系列脚本来安装,statspack的脚本文件位于$ORACLE_HOME/rdbms/admin目录下,对于oracle 8.1.6来说,脚本是一组以stat开头的文件;对于oracle 8.1.7以及以后的版本,是sp开头。
在statspack未发布之前,常用于诊断数据库的工具是两个脚本UTLBSTAT.SQL和UTLESTAT.SQL。BSTAT/ESTAT是一个非常简单的性能诊断工具,BSTAT获取开始时很多v$视图快照,ESTAT通过先前的快照和当前视图生成一个报表,该报表相当于statspack中的两个采样点。
♠安装statspack
1、设置系统参数
SQL>alter system set job_queue_processes=1000 scope=both;
SQL> show parameter job_queue_processes
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer1000
job_queue_processes改参数需要大于0,该参数可以在参数文件中修改(重启后依然有效),也可以在系统级动态修改(重启失效)
检查timed_statistics是否为true,oracle 9i开始,该值默认为true
SQL> show parameter timed_statistics;
NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
timed_statistics booleanTRUE
如果timed_statistics为false,可以通过以下方式更改
SQL>alter system set timed_statistics=true scope=both;
2、安装statspack
安装statspack需要使用sys以sysdba的身份安装,在oracle 9i之前,需要用internal用户安装(9i后已取消internal用户)
因为statspack需要一定的存储空间,所以最好建立独立的表空间,创建的表空间不能太小,至少100M,否则创建 对象会失败,根据实际情况,可以适当设置表空间大小。
SQL>conn / as sysdba
SQL> create tablespace statperf
2 datafile '/home/oracle/app/statperf.dbf' size 200M
3 extent management local;
Tablespace created.
查看脚本创建文件
$cd $ORACLE_HOME/rdbms/admin
$ ls sp*
spauto.sql spctab.sql spdtab.sql sprepins.sql sptrunc.sql spup816.sql
spawrrac.sql spcusr.sql spdusr.sql spreport.sql spuexp.par spup817.sql
spcpkg.sql spdoc.txt sppurge.sql sprepsql.sql spup102.sql spup90.sql
spcreate.sql spdrop.sql sprepcon.sql sprsqins.sql spup10.sql spup92.sql
SQL> @$ORACLE_HOME/rdbms/admin/spcreate
Choose the PERFSTAT user's password
-----------------------------------
Not specifying a password will result in the installation FAILING
Enter value for perfstat_password: 输入密码,安装过程,自动创建用户perfstat
Choose the Default tablespace for the PERFSTAT user
---------------------------------------------------
Below is the list of online tablespaces in this database which can
store user data. Specifying the SYSTEM tablespace for the user's
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.
Choose the PERFSTAT users's default tablespace. This is the tablespace
in which the STATSPACK tables and indexes will be created.
TABLESPACE_NAME CONTENTS STATSPACK DEFAULT TABLESPACE
------------------------------ --------- ----------------------------
FBRA PERMANENT
RMAN PERMANENT
STATPERF PERMANENT
SYSAUX PERMANENT *
TEST PERMANENT
USERS PERMANENT
Pressing <return> will result in STATSPACK's recommended default
tablespace (identified by *) being used.
Enter value for default_tablespace: statperf --------------------输入statspack使用的表空间
Choose the PERFSTAT user's Temporary tablespace.
TABLESPACE_NAME CONTENTS DB DEFAULT TEMP TABLESPACE
------------------------------ --------- --------------------------
TEMP TEMPORARY *
Pressing <return> will result in the database's default Temporary
tablespace (identified by *) being used.
Enter value for temporary_tablespace: temp -------------------------------输入法默认临时表空间
Using tablespace temp as PERFSTAT temporary tablespace.
... Creating PERFSTAT user
... Installing required packages
... Creating views
... Granting privileges
NOTE:
SPCUSR complete. Please check spcusr.lis for any errors.
----- - - - - - - - - - - - -- - - - - - - - - - -- - - - - -- - -- - - - - - - - - - - - - - - -- - - - - - - - - - - - --
- - - - - - -- - - - - - - - - -- - - - - - - -- - - - - - - -- - - - - - - -- - - - - - - - - - - -- - - -- - - - - - - - -
Creating Package STATSPACK...
Package created.
No errors.
Creating Package Body STATSPACK...
Package body created.
No errors.
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
创建成功,没有错误,如果有错误,我们可以查看.lis文件,运行spdrop.sql脚本删除这些对象,然后重新运行spcreate.sql来创建。
我们大概看下spcreate.sql脚本的内容,主要调用了另外3个脚本
$ cat spcreate.sql
-- Create PERFSTAT user and required privileges
@@spcusr 创建用户,并授权
--
-- Build the tables and synonyms
connect perfstat/&&perfstat_password
@@spctab 创建表、同义词等对象
-- Create the statistics Package
@@spcpkg 创建系统包
3、测试statspack
运行statspack.snap 可以产生系统快照,运行两次,然后执行spreport.sql就可以产生一个基于两个时间点的报告。如果正常,说明安装成功。
SQL> execute statspack.snap
PL/SQL procedure successfully completed.
SQL> execute statspack.snap
PL/SQL procedure successfully completed.
SQL> @$ORACLE_HOME/rdbms/admin/spreport.sql 调用spreport.sql生成分析报告
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
Listing all Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level Comment
------------ ------------ --------- ----------------- ----- --------------------
test001 TEST001 1 10 Apr 2014 16:33 5
2 10 Apr 2014 16:34 5
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1 输入开始快照ID,上面已经列出存在快照
Begin Snapshot Id specified: 1
Enter value for end_snap: 2 输入结束快照ID
End Snapshot Id specified: 2
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp_1_2. To use this name,
press <return> to continue, otherwise enter an alternative.
Enter value for report_name: 指定报告名称,如果直接回车,将使用默认名称
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
-- - - - - - - -- - - - - -- - - - -- - - - -- - - - -- - - - - -- - - - -- - - - - - - -- - - - - -
End of Report ( sp_1_2.lst )
可以看出报告已经生成,报告生成目录在当前目录
[oracle@backup1 ~]$ pwd
/home/oracle
[oracle@backup1 ~]$ sqlplus / as sysdba
这时报告生成的文件就保存在/home/oracle 这个位置
$ ls /home/oracle/
app oradiag_oracle pfile.ora~ spauto.lis spctab.lis
delete_archive_log.sh pfile.ora sp_1_2.lst spcpkg.lis spcusr.lis
♠规划自动任务
查看下spauto.sql的关键内容
variable jobno number;
variable instno number;
begin
select instance_number into :instno from v$instance;
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE
+1/24,''HH'')', TRUE, :instno);
commit;
end;
/
这个job任务定义了收集收据的时间间隔,一天有24小时,即1440分钟,那么
1/24 HH,即每小时一次
1/48 M,即每半小时一次
1/144 MI,即每10分钟一次
1/288 MI,即每5分钟一次
可以查看spauto.lis来获取输出信息,spauto.list保存在当前目录
SQL> @$ORACLE_HOME/rdbms/admin/spauto
执行spauto.sql,建立每1小时执行一次数据收集计划
PL/SQL procedure successfully completed.
- - - - - - - -- - - - - - - - - -- - - - - - - -- - ---- - - - - -- - - - - - -- - - - - - -- - - - - - -- - - - --
- - - - - -- - - - - - - -- - - - - - - -- - - - - -- - - - - - -- - - - - -- - - - - -- - - - - - - -- - - - - - -- -
Next scheduled run
~~~~~~~~~~~~~~~~~~
The next scheduled run for this job is:
JOB NEXT_DATE NEXT_SEC
---------- --------- --------------------------------
43 10-APR-14 17:00:00
建立定时任务成功
♠移除定时任务
查询user_jobs视图,查看当前的定时任务
SQL> select job,log_user,priv_user,last_date,next_date,interval from user_jobs;
JOB LOG_USER PRIV_USERLAST_DATE NEXT_DATE INTERVAL
---------- ------------------------------ ------------------------------ --------- --------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
43 PERFSTAT
PERFSTAT 10-APR-14 10-APR-14 trunc(SYSDATE+1/24,'HH')
使用dbms_job.remove移除定时任务
SQL> execute dbms_job.remove('43');
PL/SQL procedure successfully completed.
如果采样完成,应该及时移除job任务,不然statspack长时间运行,数据量将非常大,因此会引起宕机。
♠删除历史数据
★删除stats$snapshot数据表中的相应数据,其他表中的数据也会相应地级联删除;
SQL> select max(snap_id) from stats$snapshot;
MAX(SNAP_ID)
------------
3
SQL> delete from stats$snapshot where snap_id <= 3;
3 rows deleted.
在删除过程中,所有相关的表都被锁定,我们通过以下SQL查询得到
SQL> select a.object_id,a.oracle_username,b.object_name
2 from v$locked_object a,dba_objects b
3 where a.object_id=b.object_id;
★sppurge.sql脚本可以用于删除一定范围的采样数据,但是会产生大量归档日志
SQL> @$ORACLE_HOME/rdbms/admin/sppurge
Database Instance currently connected to
========================================
Instance
DB Id DB Name Inst Num Name
----------- ---------- -------- ----------
4133908770 TEST001 1 test001
Snapshots for this database instance
====================================
Base- Snap
Snap Id Snapshot Started line? Level Host Comment
-------- --------------------- ----- ----- --------------- --------------------
1 10 Apr 2014 16:33:44 5 backup1
2 10 Apr 2014 16:34:00 5 backup1
3 10 Apr 2014 17:00:04 5 backup1
4 10 Apr 2014 17:24:58 5 backup1
5 10 Apr 2014 17:25:00 5 backup1
6 10 Apr 2014 17:25:01 5 backup1
7 10 Apr 2014 17:25:02 5 backup1
8 10 Apr 2014 17:25:03 5 backup1
9 10 Apr 2014 17:25:04 5 backup1
10 10 Apr 2014 17:25:06 5 backup1
Warning
~~~~~~~
sppurge.sql deletes all snapshots ranging between the lower and
upper bound Snapshot Id's specified, for the database instance
you are connected to. Snapshots identified as Baseline snapshots
which lie within the snapshot range will not be purged.
It is NOT possible to rollback changes once the purge begins.
You may wish to export this data before continuing.
Specify the Lo Snap Id and Hi Snap Id range to purge
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for losnapid: 1 输入开始快照ID
Using 1 for lower bound.
Enter value for hisnapid: 5 输入结束快照ID
Using 5 for upper bound.
Deleting snapshots 1 - 5.
Number of Snapshots purged: 5
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Purge of specified Snapshot range complete.
SQL> commit;
Commit complete.
★我们还可以用sptrunc.sql脚本,截断所有表
♠导出statspack表数据,使用spuexp.par,主要内容如下
file=spuexp.dmp log=spuexp.log compress=y grants=y indexes=y rows=y constraints=y owner=PERFSTAT consistent=y
举例说明:
$ exp perfstat/Pass1234 parfile=$ORACLE_HOME/rdbms/admin/spuexp.par
$ ls /home/oracle/spuex* 可以看到导出的文件及日志文件
/home/oracle/spuexp.dmp /home/oracle/spuexp.log
♠调整statspack收集门限
statspack有两种类型的收集选项:级别(level)和门限(threshold),其中级别用于控制收集数据的类型,门限用于设置收集的数据的阀值。
statspack有5类快照级别,默认Level5.
①Level 0:包含一般性能统计数据,如等待事件、系统事件、系统统计、回滚段统计、行缓存、SGA、会话、锁、缓冲池统计等。
②Level 5:较Level 0增加了SQL语句收集,SQL语句收集信息保存在stats$sql_summary中。
③Level 6: 从oracle 9i开始引入,除包含Level5的全部信息,增加了SQL执行计划部分信息。
④Level 7:从oracle 9i开始引入,除包含低级别的所有信息之外,还增加段级统计信息(segment level statistics)收集。
⑤Level 10:增加Parent/Children Latch信息统计。这一级别包含低级别收集的所有信息,并且还会将附加的parent/children latch信息记入stats$latch_children字典表中。这个一级别将耗费大量CPU时间
修改级别
SQL> execute statspack.snap(i_snap_level=>0,i_modify_parameter=>'true');
PL/SQL procedure successfully completed.
而快照门限只应用于stats$sql_summary表中获取的SQL语句。因为每一个快照都会收集很多数据,每一行都代表获取快照时数据库中的一个SQL语句,所以stats$sql_summary表会很快成为statspack中最大的表,门限信息存储在stats$statspack_parameter表中,各种门限说明如下:
executions_th:这是SQL语句执行的数量,默认值是100。
disk_reads_tn:这是SQL语句执行的磁盘读入数量,默认值是1000。
parse_calls_th:这是SQL语句执行的解析调用的数量,默认值是1000。
buffer_gets_th:这是SQL语句执行的缓冲区获取的数量,默认值是10000。
任何一个门限值,超过以上参数就会产生一条记录。通过调用statspack.modify_statspack_parameter函数就可以改变门限的默认值。
SQL> execute statspack.modify_statspack_parameter(i_buffer_gets_th=>100000,i_disk_reads_th=>10000);
PL/SQL procedure successfully completed.
Oracle statspack 安装及使用的更多相关文章
- Oracle 10g安装教程
首先下载安装文件,打开后文件结构如图所示: 安装之前请关闭Windows防火墙并断开网络. xp系统下直接双击运行(本经验以XP系统安装为例进行讲述). 如果是在win7上安装,如图:在setup文件 ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- Oracle软件安装目录满的清理方法
这是Oracle数据库日常运维中很常见的一个场景,安装目录满有时不光会导致无法记录最新数据库的日志信息,导致遇到问题无法查到最新的日志信息,还会引发一些奇怪的问题. 所以日常巡检要保证Oracle的安 ...
- CentOS7安装Oracle 11gR2 安装
概述 Oracle 在Linux和window上的安装不太一样,公司又是Linux系统上的Oracle,实在没辙,研究下Linux下Oracle的使用,oracle默认不支持CentOS系统安装,所以 ...
- Oracle RAC安装部署文档
1. 部署环境步骤 1.1 软件环境 操作系统:CentOS release 6.5(推荐使用5.*的系统)192.168.1.151 racnode1 192.168.1.152 ...
- winserver2008 Oracle 11g 安装
.在Windows Server2008R2上安装Oracle Database 11g Release 2,下载64位的安装程序,地址: 文件1:http://download.oracle.com ...
- oracle免安装客户端设置
对oracle不是很熟悉,就是使用层面的,开发时往往需要连接oracle,又不想单独安装,一般都用个免安装的客户端罢了,再次记录一下自用 1.下载oracle免安装的客户端 下载地址:http://w ...
- oracle数据库安装
1.oracle10g下载完成后,选择“setup.exe”启动安装. 2.oracle主目录位置就是oracle准备安装的位置,称为"Oracle_Home".Oracle安装的 ...
- BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法
BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法 安装Oracle Adapter 安装Oracle客户端 BizTalk 2013R2 安装 ...
随机推荐
- 类库探源——System.Configuration 配置信息处理
按照MSDN描述 System.Configuration 命名空间 包含处理配置信息的类型 本篇文章主要两方面的内容 1. 如何使用ConfigurationManager 读取AppSetting ...
- java线程中生产者与消费者的问题
一.概念 生产者与消费者问题是一个金典的多线程协作的问题.生产者负责生产产品,并将产品存放到仓库:消费者从仓库中获取产品并消费.当仓库满时,生产者必须停止生产,直到仓库有位置存放产品:当仓库空时,消费 ...
- IDE开发<LER-Studio>(2)::登录模块
软件中写登录模块是为了防止软件的恶意传播,内测阶段可以忽略登录. 以下为登录模块主要源代码: void CLoginDlg::OnBnClickedBtnLogin() { // TODO: Add ...
- ISO 学习笔记 2015-03-15
Objective--C 一 关键字 @property 定义变量函数 @synthesize 实现变量函数 二 函数 alloc 分配内存 init 初始化 new 替代上面两个函数 分配内存,并且 ...
- 实体框架(Entity Framework)简介
实体框架(Entity Framework)简介 简称EF,与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R ...
- vim 配置文件 ,高亮+自动缩进+行号+折叠+优化
vim 配置文件 ,高亮+自动缩进+行号+折叠+优化 将一下代码copy到 用户目录下 新建文件为 .vimrc保存即可生效: 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)& ...
- 【收集整理】Linux下的目录讲解
Linux下的目录介绍:在Linux系统中,一切东西都是存放在一个唯一的“虚拟文件系统”中的,这个“虚拟文件系统”是树状的结构以一个根目录开始.以文件来表示所有逻辑实体和非逻辑实体,逻辑实体指文件和目 ...
- 系统监控的一些工具w , vmstat
w 命令:--w 查看的是系统整体上的负载 # w 15:23:46 up 3:34, 2 users, load average: 0.03, 0.05, 0.00 USER TTY FROM LO ...
- DIV+CSS 网页布局之:混合布局
1.混合布局 在了解了一列.两列和三列布局之后,混合布局也就不难理解了,混合布局也可以叫综合型布局,那么混合布局就可以在一列布局的基础之上,分为两列布局,三列布局,网页布局的结构普遍都是三列布局,但是 ...
- node论坛练手
当时学node,自己写了个论坛练手,现在看还是有很多问题,有时间好好改改 https://github.com/hitbs228/countdown