oracle自动统计信息时间的修改过程记录

 更新时间:2022年01月09日 12:26:51   作者:Rhys-Oracle  
这篇文章主要给大家介绍了关于oracle自动统计信息时间的修改过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

今天是2022年1月7日今天值夜班,同事让给优化一个sql,优化完成后,顺便看了下新系统的统计信息情况,发现在晚上做数据采集的时间,系统资源增加,发现是统计信息在跑,在模拟环境测试,特此记录。

      - trc                                     get trace path      
      - undo                                    show undo info
      - user | users                            list all users info
      - version                                 show database version
      - xo  <sql_id> [phv]                      xplan.display_awr for given sql_id (add execution order column)
      - xpo <sql_id> [child_number]             xplan.display_cursor for given sql_id(add execution order column)
      - xp  <sql_id>                            display_cursor for given sql_id
      - x   <sql_id>                            display_awr for given sql_id 
 
 
  NOTE
  ================
    - Set environment variable DBUSER to change default connect string which  is "/ as sysdba"
    - Set environment variable ORA_TMP to the default temp directory (default if /tmp when not set)
 
[oracle@rhys ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 7 01:25:45 2022
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SYS@rhys> col REPEAT_INTERVAL for a60
SYS@rhys> set linesize 200
SYS@rhys> select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
  2  where t1.window_name=t2.window_name and t2.window_group_name='MAINTENANCE_WINDOW_GROUP';
 
WINDOW_NAME                    REPEAT_INTERVAL                                              DURATION
------------------------------ ------------------------------------------------------------ ---------------------------------------------------------------------------
FRIDAY_WINDOW                  freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0        +000 04:00:00
MONDAY_WINDOW                  freq=daily;byday=MON;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
SUNDAY_WINDOW                  freq=daily;byday=SUN;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
WEDNESDAY_WINDOW               freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0        +000 04:00:00
 
7 rows selected.
 
SYS@rhys> 

查看状态:

SYS@rhys> select client_name,status from dba_autotask_client;
 
CLIENT_NAME                                                      STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection                                  ENABLED
auto space advisor                                               ENABLED
sql tuning advisor                                               ENABLED
 
SYS@rhys> 

更改执行时间:

SYS@rhys> begin
  2  dbms_scheduler.disable( name => 'SUNDAY_WINDOW', force => TRUE);
  3  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."SUNDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=SUN;byhour=1;byminute=0; bysecond=0');
  4  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."SUNDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
  5  dbms_scheduler.enable( name => 'SUNDAY_WINDOW');
  6  dbms_scheduler.disable( name => 'SATURDAY_WINDOW', force => TRUE);
  7  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."SATURDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=SAT;byhour=1;byminute=0; bysecond=0');
  8  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."SATURDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
  9  dbms_scheduler.enable( name => 'SATURDAY_WINDOW');
 10  dbms_scheduler.disable( name => 'FRIDAY_WINDOW', force => TRUE);
 11  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."FRIDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=FRI;byhour=1;byminute=0; bysecond=0');
 12  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."FRIDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
 13  dbms_scheduler.enable( name => 'FRIDAY_WINDOW');
 14  dbms_scheduler.disable( name => 'THURSDAY_WINDOW', force => TRUE);
 15  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."THURSDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=THU;byhour=1;byminute=0; bysecond=0');
 16  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."TUESDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
 17  dbms_scheduler.enable( name => 'THURSDAY_WINDOW');
 18  dbms_scheduler.disable( name => 'WEDNESDAY_WINDOW', force => TRUE);
 19  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."WEDNESDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=WED;byhour=1;byminute=0; bysecond=0');
 20  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."WEDNESDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
 21  dbms_scheduler.enable( name => 'WEDNESDAY_WINDOW');
 22  dbms_scheduler.disable( name => 'TUESDAY_WINDOW', force => TRUE);
 23  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."TUESDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=TUE;byhour=1;byminute=0; bysecond=0');
 24  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."TUESDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
 25  dbms_scheduler.enable( name => 'TUESDAY_WINDOW');
 26  dbms_scheduler.disable( name => 'MONDAY_WINDOW', force => TRUE);
 27  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=MON;byhour=1;byminute=0; bysecond=0');
 28  DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));
 29  dbms_scheduler.enable( name => 'MONDAY_WINDOW');
 30  end;
 31  /
 
PL/SQL procedure successfully completed.
 
SYS@rhys> select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
  2  where t1.window_name=t2.window_name and t2.window_group_name='MAINTENANCE_WINDOW_GROUP';
 
WINDOW_NAME                    REPEAT_INTERVAL                                              DURATION
------------------------------ ------------------------------------------------------------ ---------------------------------------------------------------------------
FRIDAY_WINDOW                  freq=daily;byday=FRI;byhour=1;byminute=0; bysecond=0         +000 04:00:00
MONDAY_WINDOW                  freq=daily;byday=MON;byhour=1;byminute=0; bysecond=0         +000 04:00:00
SATURDAY_WINDOW                freq=daily;byday=SAT;byhour=1;byminute=0; bysecond=0         +000 04:00:00
SUNDAY_WINDOW                  freq=daily;byday=SUN;byhour=1;byminute=0; bysecond=0         +000 04:00:00
THURSDAY_WINDOW                freq=daily;byday=THU;byhour=1;byminute=0; bysecond=0         +000 04:00:00
TUESDAY_WINDOW                 freq=daily;byday=TUE;byhour=1;byminute=0; bysecond=0         +000 04:00:00
WEDNESDAY_WINDOW               freq=daily;byday=WED;byhour=1;byminute=0; bysecond=0         +000 04:00:00
 
7 rows selected.
 
SYS@rhys> 

更改完成。注意:每个schedule任务需要disable和enable之后才生效。

附:以下脚本可把Oracle自动统计信息收集周一到周五的时间窗口从22点调整为2点。

begin
  dbms_scheduler.disable(name => 'MONDAY_WINDOW');
  dbms_scheduler.set_attribute(name      => 'MONDAY_WINDOW',
                               attribute => 'REPEAT_INTERVAL',
                               value     => 'freq=daily;byday=MON;byhour=2;byminute=0; bysecond=0');
  dbms_scheduler.enable(name => 'MONDAY_WINDOW');
end;
/
begin
  dbms_scheduler.disable(name => 'TUESDAY_WINDOW');
  dbms_scheduler.set_attribute(name      => 'TUESDAY_WINDOW',
                               attribute => 'REPEAT_INTERVAL',
                               value     => 'freq=daily;byday=TUE;byhour=2;byminute=0; bysecond=0');
  dbms_scheduler.enable(name => 'TUESDAY_WINDOW');
end;
/
begin
  dbms_scheduler.disable(name => 'WEDNESDAY_WINDOW');
  dbms_scheduler.set_attribute(name      => 'WEDNESDAY_WINDOW',
                               attribute => 'REPEAT_INTERVAL',
                               value     => 'freq=daily;byday=WED;byhour=2;byminute=0; bysecond=0');
  dbms_scheduler.enable(name => 'WEDNESDAY_WINDOW');
end;
/
begin
  dbms_scheduler.disable(name => 'THURSDAY_WINDOW');
  dbms_scheduler.set_attribute(name      => 'THURSDAY_WINDOW',
                               attribute => 'REPEAT_INTERVAL',
                               value     => 'freq=daily;byday=THU;byhour=2;byminute=0; bysecond=0');
  dbms_scheduler.enable(name => 'THURSDAY_WINDOW');
end;
/
begin
  dbms_scheduler.disable(name => 'FRIDAY_WINDOW');
  dbms_scheduler.set_attribute(name      => 'FRIDAY_WINDOW',
                               attribute => 'REPEAT_INTERVAL',
                               value     => 'freq=daily;byday=FRI;byhour=2;byminute=0; bysecond=0');
  dbms_scheduler.enable(name => 'FRIDAY_WINDOW');
end;
/

总结

到此这篇关于oracle自动统计信息时间修改的文章就介绍到这了,更多相关oracle自动统计信息时间修改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle数据库中的游标cursor使用详解

    Oracle数据库中的游标cursor使用详解

    这篇文章主要给大家介绍了关于Oracle数据库中的游标使用的相关资料,游标提供了一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务器端的SQL语句,或是批处理、存储过程、触发器中的数据处理请求,需要的朋友可以参考下
    2023-10-10
  • 常用的Oracle doc命令(收藏)

    常用的Oracle doc命令(收藏)

    这篇文章主要介绍了常用的Oracle doc命令(收藏)的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-10-10
  • Oracle exadata存储节点更换内存操作及报错处理方法

    Oracle exadata存储节点更换内存操作及报错处理方法

    在进行Oracle Exadata巡检时,发现cell节点内存报错,需确认内存PN号及大小,并更换备件,这篇文章主要介绍了Oracle exadata存储节点更换内存操作及报错处理的相关资料,需要的朋友可以参考下
    2024-10-10
  • oracle 字符串转成行

    oracle 字符串转成行

    oracle 将以逗号隔开的字符串'85,86,87' 转成行
    2009-06-06
  • Oracle如何实现like多个值的查询

    Oracle如何实现like多个值的查询

    这篇文章主要给大家介绍了关于Oracle如何实现like多个值的查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • oracle存储过程中return和exit区别概述及测试

    oracle存储过程中return和exit区别概述及测试

    至于return和exit在oracle存储过程中的应用,有些新手朋友们还是比较容易混淆的,本文将针对这两个关键字进行详细对比下,感兴趣的你可以参考下,希望可以帮助到你
    2013-02-02
  • Oracle 12CR2查询转换教程之表扩展详解

    Oracle 12CR2查询转换教程之表扩展详解

    Oracle 12cR2版本已经发布有一段时间,下面这篇文章主要给大家介绍了关于Oracle 12CR2查询转换教程之表扩展的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-11-11
  • oracle net manager 数据传输安全步骤详解

    oracle net manager 数据传输安全步骤详解

    oracle net manager来加密客户端与数据库之间或中间件与 数据库之间的网络传输数据。这篇文章主要介绍了oracle net manager 数据传输安全 ,需要的朋友可以参考下
    2018-09-09
  • Oracle终极彻底卸载的完整步骤

    Oracle终极彻底卸载的完整步骤

    这篇文章主要给大家介绍了关于Oracle终极彻底卸载的完整步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • ORACLE学习笔记-查询篇

    ORACLE学习笔记-查询篇

    前后发了好几篇ORACLE的基础知识了,主要还是自己做学习笔记的,加深印象,今天来看下ORACLE的查询语句
    2014-08-08

最新评论