【statspack的使用】

1、检查部分参数值
--job_queue_process:为了能够建立自动任务,执行数据收集,此参数必须大于0。
SQL> show parameter job_

NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes      integer  0
SQL> alter system set job_queue_processes=10;

System altered.

SQL> show parameter job_

NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes      integer  10
SQL> show parameter timed_statistics      

NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
timed_statistics      boolean  TRUE

--timed_statistics:收集操作系统的计时信息,这些信息可被用来显示时间等统计信息、优化数据库和 SQL 语句。
要防止因从操作系统请求时间而引起的开销,请将该值设置为False ,使用statspack收集统计信息时建议将该值设置为 TRUE,否则收集的统计信息大约只能起到10%的作用,将timed_statistics设置为True所带来的性能影响与好处相比是微不足道的。
该参数使收集的时间信息存储在在V$SESSTAT 和V$SYSSTAT 动态性能视图中。
SQL> show parameter timed_statistics

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics     boolean FALSE
SQL> alter system set timed_statistics=true;

System altered.

SQL> show parameter timed_statistics

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics     boolean TRUE

2、手工产生快照
使用perfstat用户连接数据库
SQL> conn perfstat/perfstat
Connected.

运行statspack.snap可以产生系统快照,运行两次,产生两次快照。
第一次:
SQL> exec statspack.snap;

PL/SQL procedure successfully completed.

SQL> select * from tab;

TNAME       TABTYPE CLUSTERID
------------------------------ ------- ----------
V$DYNAMIC_REMASTER_STATS       SYNONYM
STATS$DATABASE_INSTANCE        TABLE
STATS$LEVEL_DESCRIPTION        TABLE
STATS$SNAPSHOT       TABLE
STATS$DB_CACHE_ADVICE       TABLE
STATS$FILESTATXS       TABLE
STATS$TEMPSTATXS       TABLE
STATS$LATCH       TABLE
STATS$LATCH_CHILDREN       TABLE
STATS$LATCH_PARENT       TABLE
STATS$LATCH_MISSES_SUMMARY     TABLE
STATS$LIBRARYCACHE       TABLE
STATS$BUFFER_POOL_STATISTICS   TABLE
STATS$ROLLSTAT       TABLE
STATS$ROWCACHE_SUMMARY       TABLE
STATS$SGA       TABLE
STATS$SGASTAT       TABLE
STATS$SYSSTAT       TABLE
STATS$SESSTAT       TABLE
STATS$SYSTEM_EVENT       TABLE
STATS$SESSION_EVENT       TABLE
STATS$BG_EVENT_SUMMARY       TABLE
STATS$WAITSTAT       TABLE
STATS$ENQUEUE_STATISTICS       TABLE
STATS$SQL_SUMMARY       TABLE
STATS$SQLTEXT       TABLE
STATS$SQL_STATISTICS       TABLE
STATS$RESOURCE_LIMIT       TABLE
STATS$DLM_MISC       TABLE
STATS$CR_BLOCK_SERVER       TABLE
STATS$CURRENT_BLOCK_SERVER     TABLE
STATS$INSTANCE_CACHE_TRANSFER  TABLE
STATS$UNDOSTAT       TABLE
STATS$SQL_PLAN_USAGE       TABLE
STATS$SQL_PLAN       TABLE
STATS$SEG_STAT       TABLE
STATS$SEG_STAT_OBJ       TABLE
STATS$PGASTAT       TABLE
STATS$PARAMETER       TABLE
STATS$INSTANCE_RECOVERY        TABLE
STATS$STATSPACK_PARAMETER      TABLE
STATS$SHARED_POOL_ADVICE       TABLE
STATS$SQL_WORKAREA_HISTOGRAM   TABLE
STATS$PGA_TARGET_ADVICE        TABLE
STATS$JAVA_POOL_ADVICE       TABLE
STATS$THREAD       TABLE
STATS$FILE_HISTOGRAM       TABLE
STATS$TEMP_HISTOGRAM       TABLE
STATS$EVENT_HISTOGRAM       TABLE
STATS$TIME_MODEL_STATNAME      TABLE
STATS$SYS_TIME_MODEL       TABLE
STATS$SESS_TIME_MODEL       TABLE
STATS$STREAMS_CAPTURE       TABLE
STATS$STREAMS_APPLY_SUM        TABLE
STATS$PROPAGATION_SENDER       TABLE
STATS$PROPAGATION_RECEIVER     TABLE
STATS$BUFFERED_QUEUES       TABLE
STATS$BUFFERED_SUBSCRIBERS     TABLE
STATS$RULE_SET       TABLE
STATS$OSSTATNAME       TABLE
STATS$OSSTAT       TABLE
STATS$PROCESS_ROLLUP       TABLE
STATS$PROCESS_MEMORY_ROLLUP    TABLE
STATS$SGA_TARGET_ADVICE        TABLE
STATS$STREAMS_POOL_ADVICE      TABLE
STATS$MUTEX_SLEEP       TABLE
STATS$DYNAMIC_REMASTER_STATS   TABLE
STATS$IDLE_EVENT       TABLE

68 rows selected.

查看刚生成的快照snap_id
SQL> select * from STATS$SNAPSHOT;

   SNAP_ID DBID INSTANCE_NUMBER SNAP_TIME    STARTUP_TIME SESSION_ID
---------- ---------- --------------- ------------ ------------ ----------
   SERIAL# SNAP_LEVEL
---------- ----------
UCOMMENT
--------------------------------------------------------------------------------
EXECUTIONS_TH PARSE_CALLS_TH DISK_READS_TH BUFFER_GETS_TH SHARABLE_MEM_TH
------------- -------------- ------------- -------------- ---------------
VERSION_COUNT_TH SEG_PHY_READS_TH SEG_LOG_READS_TH SEG_BUFF_BUSY_TH
---------------- ---------------- ---------------- ----------------
SEG_ROWLOCK_W_TH SEG_ITL_WAITS_TH SEG_CR_BKS_RC_TH SEG_CU_BKS_RC_TH
---------------- ---------------- ---------------- ----------------
SEG_CR_BKS_SD_TH SEG_CU_BKS_SD_TH SNAPSHOT_EXEC_TIME_S ALL_I B
---------------- ---------------- -------------------- ----- -
1 2273728207    1 15-NOV-12    30-OCT-12 0
0    5

 100 1000      1000    10000  1048576
     20     1000     10000 100
    100      100      1000       1000
 1.04 FALSE

第二次:
SQL> exec statspack.snap;

PL/SQL procedure successfully completed.

SQL> select * from STATS$SNAPSHOT;

   SNAP_ID DBID INSTANCE_NUMBER SNAP_TIME    STARTUP_TIME SESSION_ID
---------- ---------- --------------- ------------ ------------ ----------
   SERIAL# SNAP_LEVEL
---------- ----------
UCOMMENT
--------------------------------------------------------------------------------
EXECUTIONS_TH PARSE_CALLS_TH DISK_READS_TH BUFFER_GETS_TH SHARABLE_MEM_TH
------------- -------------- ------------- -------------- ---------------
VERSION_COUNT_TH SEG_PHY_READS_TH SEG_LOG_READS_TH SEG_BUFF_BUSY_TH
---------------- ---------------- ---------------- ----------------
SEG_ROWLOCK_W_TH SEG_ITL_WAITS_TH SEG_CR_BKS_RC_TH SEG_CU_BKS_RC_TH
---------------- ---------------- ---------------- ----------------
SEG_CR_BKS_SD_TH SEG_CU_BKS_SD_TH SNAPSHOT_EXEC_TIME_S ALL_I B
---------------- ---------------- -------------------- ----- -
1 2273728207    1 15-NOV-12    30-OCT-12 0
0    5

 100 1000      1000    10000  1048576
     20     1000     10000 100
    100      100      1000       1000
 1.04 FALSE

2 2273728207    1 15-NOV-12    30-OCT-12 0
0    5

 100 1000      1000    10000  1048576
     20     1000     10000 100
    100      100      1000       1000
  .51 FALSE

3、生成两个时间点的报告
执行脚本$ORACLE_HOME\rdbms\admin\spreport.sql就可以生成基于两个时间点的报告。
SQL> @?/rdbms/admin/spreport.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name Inst Num Instance
----------- ------------ -------- ------------
 2273728207 CCOD 1 ccod



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

   DB Id    Inst Num DB Name  Instance     Host
----------- -------- ------------ ------------ ------------
 2273728207   1 CCOD  ccod       databak

Using 2273728207 for database Id
Using       1 for instance number


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 without
specifying a number lists all completed snapshots.



Listing all Completed Snapshots

      Snap
Instance     DB Name    Snap Id   Snap Started    Level Comment
------------ ------------ --------- ----------------- ----- --------------------
ccod     CCOD  1 15 Nov 2012 12:33  5
 2 15 Nov 2012 12:38  5



Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1                  (此处输入第一个时间点的snap_id)
Begin Snapshot Id specified: 1

Enter value for end_snap: 2                  (此处输入第二个时间点的snap_id)
End   Snapshot Id specified: 2

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

Enter value for report_name:                   (此处默认名称就行,直接回车)
Using the report name sp_1_2

STATSPACK report for

Database    DB Id    Instance  Inst Num Startup Time    Release     RAC
~~~~~~~~ ----------- ------------ -------- --------------- ----------- ---
 2273728207 ccod 1 30-Oct-12 18:50 10.2.0.1.0  NO

Host  Name:   databak       Num CPUs:    8     Phys Memory (MB):      0
~~~~

Snapshot       Snap Id   Snap Time  Sessions Curs/Sess Comment
~~~~~~~~    ---------- ------------------ -------- --------- -------------------
Begin Snap:     1 15-Nov-12 12:33:55 17 3.9
  End Snap:     2 15-Nov-12 12:38:22 17 5.1
   Elapsed:   4.45 (mins)

Cache Sizes  Begin        End
~~~~~~~~~~~     ---------- ----------
      Buffer Cache:   192M    Std Block Size:    8K
  Shared Pool Size:    92M Log Buffer: 6,892K

Load Profile Per Second Per Transaction
~~~~~~~~~~~~   --------------- ---------------
 Redo size:  3,702.01      988,436.00
     Logical reads:     26.99 7,205.00
     Block changes:      8.77 2,342.00
    Physical reads:      0.00    0.00
   Physical writes:      0.03    9.00
User calls:      0.06   15.00
    Parses:      3.15  842.00
Hard parses:      0.37   99.00
     Sorts:      2.26  604.00
    Logons:      0.00    0.00
  Executes:      7.12 1,900.00
      Transactions:      0.00

。。。
。。。
End of Report ( sp_1_2.lst )

生成的报告名称为sp_1_2.lst
SQL> !ls
10201_database_linux32.zip  database db_home  DUMP phone_data   s7777.dmp   spauto.lis  spctab.lis  spdtab.lis
ccod.dmp    db-filesbak  Desktop  oracle10gbak phone_data.tar.gz  sp_1_2.lst  spcpkg.lis  spcusr.lis  spdusr.lis

4、自动任务执行
使用系统脚本$ORACLE_HOME/rdbms/admin/spauto.sql

spauto.sql在关键内容:
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;

执行spauto.sql后,就建立了一个每小时执行一次的数据收集计划。

这个Job任务定义了收集数据(执行statspack.snap)的时间间隔为1小时:
一天24小时,1440分钟--&gt
1/24,'HH' 每小时一次
1/48,'MI' 每半小时一次
1/144,'MI' 每10分钟一次
1/288,'MI' 每5分钟一次

关于采样间隔,通常建议1小时,如有特殊需要,可以设置更短,如半小时。但不推荐更短。因为statpack的执行本身需要消息资源,太短的采样对系统的性能会产生较大的影响(甚至会使statspack的执行出现在采样数据中)

SQL> @?/rdbms/admin/spauto.sql

PL/SQL procedure successfully completed.


Job number for automated statistics collection for this instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note that this job number is needed when modifying or removing
the job:

     JOBNO
----------
1


Job queue process
~~~~~~~~~~~~~~~~~
Below is the current setting of the job_queue_processes init.ora
parameter - the value for this parameter must be greater
than 0 to use automatic statistics gathering:

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes     integer 10


Next scheduled run
~~~~~~~~~~~~~~~~~~
The next scheduled run for this job is:

       JOB NEXT_DATE NEXT_SEC
---------- ------------ ----------------
1 15-NOV-12 14:00:00

--查看任务并移除任务
SQL> select job,schema_user,to_char(next_date,'yyyymmdd hhmiss') as next_D,interval,what from user_jobs;

       JOB SCHEMA_USER  NEXT_D
---------- ------------------------------ ---------------
INTERVAL
--------------------------------------------------------------------------------
WHAT
--------------------------------------------------------------------------------
1 PERFSTAT  20121115 020000
trunc(SYSDATE+1/24,'HH')
statspack.snap;

SQL> execute dbms_job.remove('1');

PL/SQL procedure successfully completed.

SQL> select job,schema_user,to_char(next_date,'yyyymmdd hhmiss') as next_D,interval,what from user_jobs;

no rows selected

5、删除采样数据
只要删除stat$snapshot数据表中的相应数据,其他表中的数据会相应的级连删除。
SQL> select max(snap_id) from stats$snapshot;

MAX(SNAP_ID)
------------
  2

SQL> delete from stats$snapshot where snap_id<2;

1 row deleted.

SQL> commit;

Commit complete.

删除过程中,你可以看到所有相关的表都被锁定了。
SQL> select a.object_id, a.oracle_username, b.object_name from v$locked_object a,dba_objects b where a.object_id=b.object_id;

truncate统计信息表:使用脚本$ORACLE_HOME/rdbms/admin/sptrunc.sql 删除所有的采样数据但保留statspack的库结构。
如果有大量数据,直接delete采样数据是非常缓慢的。使用脚本sptrunc.sql可以快速的删除所有统计信息。
查看脚本,可以看出是用truncate table截掉所有相关的表中的内容。
SQL> @?/rdbms/admin/sptrunc.sql

Warning
~~~~~~~
Running sptrunc.sql removes ALL data from Statspack tables.  You may
wish to export the data before continuing.


About to Truncate Statspack Tables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If would like to exit WITHOUT truncating the tables, enter any text at the
begin_or_exit prompt (e.g. 'exit'), otherwise if you would like to begin
the truncate operation, press


Enter value for begin_or_exit:                       (直接回车,即清空)
Entered at the 'begin_or_exit' prompt

... Starting truncate operation

Table truncated.

。。。
。。。

Table truncated.


Table truncated.


Table truncated.


2 rows deleted.


1 row deleted.


Commit complete.


Package altered.


... Truncate operation complete

SQL> 

删除statspack所有数据和各种对象:使用脚本$ORACLE_HOME/rdbms/admin/spdrop.sql。全部删除,不留痕迹!但有表空间在~~
SQL> @?/rdbms/admin/spdrop.sql
SQL> Rem
SQL> Rem $Header: spdrop.sql 03-may-00.15:57:17 cdialeri Exp $
SQL> Rem
SQL> Rem spdrop.sql
。。。
。。。
Synonym dropped.

User dropped.

NOTE:
SPDUSR complete. Please check spdusr.lis for any errors.


SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS
SYSAUX
TEMP
7777
CCOD
PERF

7 rows selected.

SQL> conn perfstat/perfstat
ERROR:
ORA-01017: invalid username/password; logon denied

Warning: You are no longer connected to ORACLE.
SQL> 
++++++++++++++++++ 001.gif

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

转载于:http://blog.itpub.net/20553601/viewspace-749265/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值