一、需求说明

Oracle数据库中存在定时JOB,自动执行收集统计信息的程序。但是对于7*24小时系统来说,Oracle配置的定时收集时间不太合理,需要人为调整。本篇博客就是基于这种需求,调整JOB采样的时间及终止时间。

思路:查询现有的默认收集统计信息的策略,对它进行调整,调整后进行检查修改有效,操作完毕。

二、操作步骤

2.1 修改前,查询JOB信息

查询数据库自动收集统计信息是否被禁用

SQL> select client_name,status from dba_autotask_client;

CLIENT_NAME STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection ENABLED


数据库默认,周一~周五(每天晚上10点开始,收集6小时截止)、周六日(每天早上6点开始,收集20小时截止)
SQL> select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
where t1.window_name=t2.window_name and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED'); WINDOW_NAME REPEAT_INTERVAL DURATION
-------------------- ------------------------------------------------------- ----------------------------------------------------
SATURDAY_WINDOW freq=daily;byday=SAT;byhour=;byminute=; bysecond= + ::
FRIDAY_WINDOW freq=daily;byday=FRI;byhour=;byminute=; bysecond= + ::
THURSDAY_WINDOW freq=daily;byday=THU;byhour=;byminute=; bysecond= + ::
WEDNESDAY_WINDOW freq=daily;byday=WED;byhour=;byminute=; bysecond= + ::
TUESDAY_WINDOW freq=daily;byday=TUE;byhour=;byminute=; bysecond= + ::
MONDAY_WINDOW freq=daily;byday=MON;byhour=;byminute=; bysecond= + ::
SUNDAY_WINDOW freq=daily;byday=SUN;byhour=;byminute=; bysecond= + ::
rows selected.

2.2 修改操作

--周六日统计信息收集最长时间调整为4小时
BEGIN
dbms_scheduler.disable(
name => 'SATURDAY_WINDOW');
dbms_scheduler.set_attribute(
name => 'SATURDAY_WINDOW',
attribute => 'DURATION',
value => numtodsinterval(, 'hour'));
dbms_scheduler.enable(
name => 'SATURDAY_WINDOW');
END;
/ BEGIN
dbms_scheduler.disable(
name => 'SUNDAY_WINDOW');
dbms_scheduler.set_attribute(
name => 'SUNDAY_WINDOW',
attribute => 'DURATION',
value => numtodsinterval(, 'hour'));
dbms_scheduler.enable(
name => 'SUNDAY_WINDOW');
END;
/
commit; -- --统计信息开始收集时间调整
周一-周五,调整为0点开始 BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."MONDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=MON;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."TUESDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=TUE;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."WEDNESDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=WED;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."THURSDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=THU;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."FRIDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=FRI;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."SATURDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=SAT;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name=>'"SYS"."SUNDAY_WINDOW"',
attribute=>'REPEAT_INTERVAL',
value=>'FREQ=WEEKLY;BYDAY=SUN;BYHOUR=0;BYMINUTE=0;BYSECOND=0');
END;
/ SQL> commit;

2.3  修改后检查

SQL> select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
where t1.window_name=t2.window_name and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED'); WINDOW_NAME REPEAT_INTERVAL DURATION
-------------------- ------------------------------------------------------- ----------------------------------------------
SATURDAY_WINDOW FREQ=WEEKLY;BYDAY=SAT;BYHOUR=;BYMINUTE=;BYSECOND= + ::
FRIDAY_WINDOW FREQ=WEEKLY;BYDAY=FRI;BYHOUR=;BYMINUTE=;BYSECOND= + ::
THURSDAY_WINDOW FREQ=WEEKLY;BYDAY=THU;BYHOUR=;BYMINUTE=;BYSECOND= + ::
WEDNESDAY_WINDOW FREQ=WEEKLY;BYDAY=WED;BYHOUR=;BYMINUTE=;BYSECOND= + ::
TUESDAY_WINDOW FREQ=WEEKLY;BYDAY=TUE;BYHOUR=;BYMINUTE=;BYSECOND= + ::
MONDAY_WINDOW FREQ=WEEKLY;BYDAY=MON;BYHOUR=;BYMINUTE=;BYSECOND= + ::
SUNDAY_WINDOW FREQ=WEEKLY;BYDAY=SUN;BYHOUR=;BYMINUTE=;BYSECOND= + :: rows selected. SQL> select WINDOW_NAME,to_char(WINDOW_START_TIME,'yyyy-mm-dd hh24:mi:ss'),to_char(WINDOW_END_TIME,'yyyy-mm-dd hh24:mi:ss')
from dba_autotask_window_history order by ; WINDOW_NAME TO_CHAR(WINDOW_STAR TO_CHAR(WINDOW_END_
-------------------- ------------------- -------------------
FRIDAY_WINDOW -- :: -- ::
SATURDAY_WINDOW -- :: -- ::
SUNDAY_WINDOW -- :: -- ::
MONDAY_WINDOW -- :: -- ::
TUESDAY_WINDOW -- :: -- ::
WEDNESDAY_WINDOW -- :: -- ::
THURSDAY_WINDOW -- :: -- ::
FRIDAY_WINDOW -- :: -- ::
SATURDAY_WINDOW -- :: -- ::
SUNDAY_WINDOW -- :: -- ::
MONDAY_WINDOW -- :: -- :: WINDOW_NAME TO_CHAR(WINDOW_STAR TO_CHAR(WINDOW_END_
-------------------- ------------------- -------------------
TUESDAY_WINDOW -- :: -- ::
WEDNESDAY_WINDOW -- :: -- ::
THURSDAY_WINDOW -- :: -- ::
FRIDAY_WINDOW -- :: -- ::
SATURDAY_WINDOW -- :: -- ::
SUNDAY_WINDOW -- :: -- ::
MONDAY_WINDOW -- :: -- ::
TUESDAY_WINDOW -- :: -- ::
WEDNESDAY_WINDOW -- :: -- ::
THURSDAY_WINDOW -- :: -- ::
FRIDAY_WINDOW -- :: -- :: WINDOW_NAME TO_CHAR(WINDOW_STAR TO_CHAR(WINDOW_END_
-------------------- ------------------- -------------------
SATURDAY_WINDOW -- :: -- ::
SUNDAY_WINDOW -- :: -- ::
MONDAY_WINDOW -- :: -- ::
TUESDAY_WINDOW -- :: -- ::
WEDNESDAY_WINDOW -- :: -- ::
THURSDAY_WINDOW -- :: -- ::
SATURDAY_WINDOW -- :: -- ::
SUNDAY_WINDOW -- :: -- ::
MONDAY_WINDOW -- :: -- :: rows selected.

2.4 补充关闭其余JOB

说明,Oracle数据库,除自动收集统计信息JOB外,还有关于SQL调优建议JOB SQL TUNING,以及段分析JOB,实际工作很少使用,建议关闭。

SQL> select client_name,status from dba_autotask_client;

CLIENT_NAME    STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection ENABLED
auto space advisor DISABLED
sql tuning advisor DISABLED BEGIN
dbms_auto_task_admin.disable(client_name=>'sql tuning advisor',operation=>NULL,window_name=>NULL);
END;
/
commit; BEGIN
dbms_auto_task_admin.disable(client_name=>'auto space advisor',operation=>NULL,window_name=>NULL);
END;
/
commit; SQL> select client_name,status from dba_autotask_client;
CLIENT_NAME STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection ENABLED
auto space advisor DISABLED
sql tuning advisor DISABLED

调整统计信息JOB采样时间的更多相关文章

  1. SQL Server 查找统计信息的采样时间与采样比例

    有时候我们会遇到,由于统计信息不准确导致优化器生成了一个错误的执行计划(或者这样表达:一个较差的执行计划),从而引起了系统性能问题.那么如果我们怀疑这个错误的执行计划是由于统计信息不准确引起的.那么我 ...

  2. Oracle 11G统计信息自动收集及调整

    查询统计信息的收集所对应的task,以及当前状态 col CLIENT_NAME for a50col TASK_NAME for a20SELECT client_name, task_name, ...

  3. 有关Oracle统计信息的知识点[z]

    https://www.cnblogs.com/sunmengbbm/p/5775211.html 一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如, ...

  4. 有关Oracle统计信息的知识点

    一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于 ...

  5. Oracle中的统计信息

    一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于 ...

  6. SQL SERVER 统计信息概述(Statistics)

    前言 查询优化器使用统计信息来创建可提高查询性能的查询计划,对于大多数查询,查询优化器已经为高质量查询计划生成必要的统计信息,但是在少数情况下,您需要创建附加的统计信息或者修改查询设计以得到最佳结果. ...

  7. Sql Server优化---统计信息维护策略

    本位出处:http://www.cnblogs.com/wy123/p/5748933.html 首先解释一个概念,统计信息是什么: 简单说就是对某些字段数据分布的一种描述,让SQL Server大概 ...

  8. MySQL索引统计信息更新相关的参数

    MySQL统计信息相关的参数: 1. innodb_stats_on_metadata(是否自动更新统计信息),MySQL 5.7中默认为关闭状态 仅在统计信息配置为非持久化的时候生效. 也就是说在i ...

  9. oracle里的统计信息

    1 oracle里的统计信息 Oracle的统计信息是这样的一组数据,存储在数据字典,从多个维度描述了oracle数据库对象的详细信息,有6种类型 表的统计信息:记录数.表块的数量.平均行长度等 索引 ...

随机推荐

  1. 5分钟学会如何创建spring boot项目

    上一篇博客说了如何创建spring boot项目,但是有些同学会觉得有点麻烦,有没有什么快速学会能快速创建spring boot项目的方法,答案是肯定的.接下来我们就一起来快速创建一个spring b ...

  2. JavaScript数字精度丢失的一些问题

    本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 1 0.1 + 0.2 ! ...

  3. LTDC/DMA2D——液晶显示

    1.显示器的基本参数 (1) 像素像素是组成图像的最基本单元要素,显示器的像素指它成像最小的点. (2) 分辨率一些嵌入式设备的显示器常常以“行像素值 x列像素值”表示屏幕的分辨率.如分辨率 800x ...

  4. 关于路由跟踪指令---traceroute

    我们都用过ping命令来检查主机与目标地址是否连通,自己的主机与目标地址的通讯包通讯速率,所谓的通讯包也就是那些什么TCP/IP,UDP包. 原理:https://www.cnblogs.com/be ...

  5. vue官网笔记

    学习了vue后又重新过了一遍官网的教程,选择性地摘抄了一些自己觉得比较重要的知识点.以备后面查缺补漏用. 计算属性 计算属性mounted中,属性值函数将用作属性的getter函数.当函数中的依赖发生 ...

  6. 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况)

    # 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况) ## 如何查看一个进程建立的网络连接,方式一 - 查看进程pid `ps -ef|grep dingtalk`- 查 ...

  7. linux内核中#if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别

    1. #if IS_ENABLED(CONFIG_XXX) 1.1 IS_ENABLED的定义如下: /* * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CON ...

  8. 010-多线程-JUC集合-Queue-ConcurrentLinkedQueue

    一.概述 ConcurrentLinkedQueue是线程安全的队列,它适用于“高并发”的场景. 它是一个基于链接节点的无界线程安全队列,按照 FIFO(先进先出)原则对元素进行排序.队列元素中不可以 ...

  9. 123457123456#0#-----com.yuming.HitMouse01--前拼后广--幼儿打地鼠游戏

    com.yuming.HitMouse01--前拼后广--幼儿打地鼠游戏

  10. 123457---脑筋急转弯01--com.threeObj03.JiZhuanWan

    脑筋急转弯01--com.threeObj03.JiZhuanWan