[Oracle] 11G自己主动收集统计信息

在11g中,默认自己主动收集统计信息的时间为晚上10点(周一到周五,4个小时),早上6点(周六,周日,20个小时),例如以下所看到的:

select a.window_name, a.repeat_interval,a.duration
  from dba_scheduler_windows a, dba_scheduler_wingroup_members b
  where a.window_name = b.window_name
    and b.window_group_name = ‘MAINTENANCE_WINDOW_GROUP‘;

WINDOW_NAME                    REPEAT_INTERVAL                                              DURATION
------------------------------ ------------------------------------------------------------ --------------------
WEDNESDAY_WINDOW               freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0        +000 04:00:00
FRIDAY_WINDOW                  freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0        +000 04:00:00
SATURDAY_WINDOW                freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0         +000 20:00:00
THURSDAY_WINDOW                freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0        +000 04:00:00
TUESDAY_WINDOW                 freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0        +000 04:00:00
SUNDAY_WINDOW                  freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0         +000 20:00:00
MONDAY_WINDOW                  freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0        +000 04:00:00

因为非常多系统晚上10点还是处于业务高峰期,因此有必要调整下时间,这个要依据各自的业务自己推断,在我们系统调为:

周一到周五,凌晨1点開始,持续5个小时; 周六、周日,凌晨1点開始,持续10个小时。

用sys用户运行例如以下语句就可以:

begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.MONDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=MON;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.MONDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 05:00:00‘);
end;
/
begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.TUESDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=TUE;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.TUESDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 05:00:00‘);
end;
/
begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.WEDNESDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=WED;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.WEDNESDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 05:00:00‘);
end;
/
begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.THURSDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=THU;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.THURSDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 05:00:00‘);
end;
/
begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.FRIDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=FRI;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.FRIDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 05:00:00‘);
end;
/
begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.SATURDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=SAT;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.SATURDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 10:00:00‘);
end;
/
begin
  sys.dbms_scheduler.set_attribute(name => ‘SYS.SUNDAY_WINDOW‘, attribute => ‘repeat_interval‘, value => ‘freq=daily;byday=SUN;byhour=1;byminute=0; bysecond=0‘);
  sys.dbms_scheduler.set_attribute(name => ‘SYS.SUNDAY_WINDOW‘, attribute => ‘duration‘, value => ‘0 10:00:00‘);
end;
/
上面语句运行成功后的结果例如以下:

WINDOW_NAME                    REPEAT_INTERVAL                                              DURATION
------------------------------ ------------------------------------------------------------ --------------------
WEDNESDAY_WINDOW               freq=daily;byday=WED;byhour=1;byminute=0; bysecond=0         +000 05:00:00
FRIDAY_WINDOW                  freq=daily;byday=FRI;byhour=1;byminute=0; bysecond=0         +000 05:00:00
SATURDAY_WINDOW                freq=daily;byday=SAT;byhour=1;byminute=0; bysecond=0         +000 10:00:00
THURSDAY_WINDOW                freq=daily;byday=THU;byhour=1;byminute=0; bysecond=0         +000 05:00:00
TUESDAY_WINDOW                 freq=daily;byday=TUE;byhour=1;byminute=0; bysecond=0         +000 05:00:00
SUNDAY_WINDOW                  freq=daily;byday=SUN;byhour=1;byminute=0; bysecond=0         +000 10:00:00
MONDAY_WINDOW                  freq=daily;byday=MON;byhour=1;byminute=0; bysecond=0         +000 05:00:00
时间调整成功后,下一步就是开启11G的自己主动收集统计信息job,首先确认当前未开启:

SYS@PROD> select client_name,status from DBA_AUTOTASK_CLIENT where client_name=‘auto optimizer stats collection‘;

CLIENT_NAME                                                      STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection                                  DISABLED
运行例如以下语句开启:

BEGIN
  dbms_auto_task_admin.enable(
  client_name => ‘auto optimizer stats collection‘,
  operation => NULL,
  window_name => NULL);
END;
/
确认已被开启:

SYS@PROD> select client_name,status from DBA_AUTOTASK_CLIENT where client_name=‘auto optimizer stats collection‘;

CLIENT_NAME                                                      STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection                                  ENABLED
附:关闭这个job的语句:

BEGIN
   dbms_auto_task_admin.disable(
   client_name => ‘auto optimizer stats collection‘,
   operation => NULL,
   window_name => NULL);
 END;  
/

[Oracle] 11G自己主动收集统计信息,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。