oracle 10g如何关闭和打开自动收集统计信息

上一篇 / 下一篇  2009-01-04 23:00:24 / 个人分类:Oracle

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

一、ORACLE10g自动收集统计信息--自动analyze51Testing软件测试网:pyc@+H6C

Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。51Testing软件测试网q M3s0x9Dv

这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。

Lt"g,w1H[ he0

可以通过以下查询这个JOB的运行情况:

8| b*T@"[p8b,Y%i0

6W5~rS&p,J0
select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB'

其实同在10点运行的Job还有一个AUTO_SPACE_ADVISOR_JOB:51Testing软件测试网 K-j&]VYu [ @9v

51Testing软件测试网iEI8{_H

SQL> select JOB_NAME,LAST_START_DATE from dba_scheduler_jobs;

JOB_NAME                      LAST_START_DATE51Testing软件测试网ZZ/d]\F:h7r+~

------------------------------ --------------------------------------51Testing软件测试网@1r3R7C V;o7on

AUTO_SPACE_ADVISOR_JOB        04-DEC-07 10.00.00.692269 PM +08:0051Testing软件测试网#n8@6R"Xy&qp

GATHER_STATS_JOB              04-DEC-07 10.00.00.701152 PM +08:00

0]G6O5?o;dm0

FGR$AUTOPURGE_JOB51Testing软件测试网"o M W-@@\pX

PURGE_LOG                      05-DEC-07 03.00.00.169059 AM PRC51Testing软件测试网 wb(`t:r+e

然而这个自动化功能已经影响了很多系统的正常运行,晚上10点对于大部分生产系统也并非空闲时段。

VqE1K I-H0

而自动分析可能导致极为严重的闩锁竞争,进而可能导致数据库Hang或者Crash。

2` k1AT+R0x0

所以建议最好关闭这个自动统计信息收集功能:51Testing软件测试网)Ph}p;k[,Z IR]

}^/|nGZ%rG0
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');

自动化永远而严重的隐患相伴随!

T3p9v3]#U1Xf0

51Testing软件测试网'm cw3i&{.} x{

关闭及开启自动搜集功能,有两种方法,分别如下:51Testing软件测试网S%c(x8}K s

方法一: 

(e4@D:N6Hsa;J0

exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');51Testing软件测试网!fe7|3O.zo2wem"L

exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');

K/iC-H.k5H]\0

方法二:51Testing软件测试网r3w)fO'p[

alter system set "_optimizer_autostats_job"=false scope=spfile;51Testing软件测试网Q6W1vIQH6M2t+H.R

alter system set "_optimizer_autostats_job"=true scope=spfile;51Testing软件测试网/F5b*Ju4IS7A

Pfile可以直接修改初始化参数文件,重新启动数据库

%w%I1\ C{-YF0V0

二、AWR默认通过MMON及MMNL进程来每小自动运行一次,为了节省空间,采集的数据在 7 天后自动清除。51Testing软件测试网R-m)ec aq]l

快照频率和保留时间都可以由用户修改。要查看当前的设置,您可以使用下面的语句:51Testing软件测试网A` ^:h:[j ? CX)C

select snap_interval, retention

X8~ \tVsWc ke0

from dba_hist_wr_control;51Testing软件测试网8r\?$WL9hY4d9A

SNAP_INTERVAL       RETENTION51Testing软件测试网 @)a5g'c \3K&kG

------------------- -------------------51Testing软件测试网#U8ARxo'o.} g7W%Y
  +00000 01:00:00.0   +00007 00:00:00.0

)|r/]I+m6Mr(i{+K0

 这些 SQL 语句显示快照每小时采集一次,采集的数据保留 7 天。要修改设置例如,快照时间间隔为 20 分钟,保留时间为两天您可以发出以下命令。参数以分钟为单位。51Testing软件测试网3upj~ Y8D@z_

begin

+McqA&X;m [:m0G0

   dbms_workload_repository.modify_snapshot_settings (

,kK({M3r9e9Y0

      interval => 20,

bV2b#Q3oK-E,H0

      retention => 2*24*60

'Q4iS W\J.d6K0

   );end;

.k Gs [5We#X.| b0

AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的 SYS 模式下,并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。(您可能已经猜到,H 代表“历史数据 (historical)”而 M 代表“元数据 (metadata)”。)在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。

0[%Q Ct-G'T N8Vy0

您的处理计划一般是有规律的,并且通常基于您对各种事件的了解和您处理它们的经验。现在设想相同的事情由一个引擎来完成,这个引擎采集量度并根据预先确定的逻辑来推出可能的计划。您的工作不就变得更轻松了吗? 现在在 Oracle Database 10g中推出的这个引擎称为自动数据库诊断监控程序 (ADDM)。为了作出决策,ADDM 使用了由 AWR 采集的数据。51Testing软件测试网B}M"CZ

在 AWR 进行的每一次快照采集之后,调用 ADDM 来检查量度并生成建议。因此,实际上您拥有了一个一天二十四小时工作的自动数据库管理员,它主动地分析数据并生成建议,从而把您解放出来,使您能够关注更具有战略意义的问题。51Testing软件测试网B2_$`'@Hb F)n

快照默认是自动采集的,但您也可以按需要采集它们。所有的 AWR 功能都在程序包 DBMS_WORKLOAD_REPOSITORY 中实施。要采集一次快照,只需发出下面的命令:51Testing软件测试网.~7w#^d~.lo

execute dbms_workload_repository.create_snapshot它立即采集一次快照,快照被记录在表 WRM$_SNAPSHOT 中。采集的量度是针对 TYPICAL 级别的。如果您想采集更详细的统计数据,您可以在上面的过程中将参数 FLUSH_LEVEL 设置为 ALL。统计数据自动删除,但也可以通过调用过程 drop_snapshot_range() 来手动删除。

0V)N"U APV0

TAG: Oracle

 

评分:0

我来说两句

Open Toolbar