问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle对表创建索引统计信息会自动收集吗

发布网友 发布时间:2022-04-09 09:47

我来回答

2个回答

懂视网 时间:2022-04-09 14:09

 

一、Oracle 11g

在Oracle的11g版本中提供了统计数据自动收集的功能。在部署安装11g Oracle软件过程中,其中有一个步骤便是提示是否启动这个功能(默认是启用这个功能)。

在这里介绍一下怎么将该功能启用与禁用:

1、查看自动收集统计信息的任务及状态:

技术分享

SQL> select client_name,status from dba_autotask_client;

CLIENT_NAME   STATUS
---------------------------------------- ----------------
auto optimizer stats collection ENABLED
auto space advisor  ENABLED
sql tuning advisor  ENABLED

其中"auto optimizer stats collection"便是我们要寻找的自动收集统计信息的任务名称,它的状态目前是启用状态。

技术分享

2、禁止自动收集统计信息的任务

技术分享

禁用自动收集统计信息的任务可以使用DBMS_AUTO_TASK_ADMIN包完成:
SQL> exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => ‘auto optimizer stats collection‘,operation => NULL,window_name => NULL);

PL/SQL 过程已成功完成。

SQL> select client_name,status from dba_autotask_client;

CLIENT_NAME   STATUS
---------------------------------------- ----------------
auto optimizer stats collection DISABLED
auto space advisor  ENABLED
sql tuning advisor  ENABLED

此时"auto optimizer stats collection"任务已经被禁用。

技术分享

3、启用自动收集统计信息的任务

技术分享

SQL> exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => ‘auto optimizer stats collection‘,operation => NULL,window_name => NULL);

PL/SQL 过程已成功完成。

SQL> select client_name,status from dba_autotask_client;

CLIENT_NAME   STATUS
---------------------------------------- ----------------
auto optimizer stats collection ENABLED
auto space advisor  ENABLED
sql tuning advisor  ENABLED

技术分享

这个功能貌似带来了统计数据采集上的便捷,但是Oracle 11g自动收集统计信息的时间是22:00--2:00
这个时间段往往是业务的高峰期,给本已紧张的系统带来更大的负担。所以,应该把自动执行的时间改到空闲的时段。

4、获得当前自动收集统计信息的执行时间:

技术分享

SQL> 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 in (‘MAINTENANCE_WINDOW_GROUP‘,‘BSLN_MAINTAIN_STATS_SCHED‘);
 
WINDOW_NAME   REPEAT_INTERVAL         DURATION
------------------------------ -------------------------------------------------------------------------------- -------------------------------------------------------------------------------
MONDAY_WINDOW   freq=daily;byday=MON;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
THURSDAY_WINDOW  freq=daily;byday=THU;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
SUNDAY_WINDOW   freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0    +000 20:00:00
 
7 rows selected

技术分享

其中:
      WINDOW_NAME:任务名

      REPEAT_INTERVAL:任务重复间隔时间

      DURATION:持续时间

修改步骤如下:

技术分享

1.停止任务:
SQL> BEGIN
 2 DBMS_SCHEDULER.DISABLE(
 3 name => ‘"SYS"."FRIDAY_WINDOW"‘,
 4 force => TRUE);
 5 END;
 6 /

PL/SQL 过程已成功完成。
2.修改任务的持续时间,单位是分钟:
SQL> BEGIN
 2 DBMS_SCHEDULER.SET_ATTRIBUTE(
 3 name => ‘"SYS"."FRIDAY_WINDOW"‘,
 4 attribute => ‘DURATION‘,
 5 value => numtodsinterval(180,‘minute‘));
 6 END; 
 7 /

PL/SQL 过程已成功完成。
3.开始执行时间,BYHOUR=2,表示2点开始执行:
SQL> BEGIN
 2 DBMS_SCHEDULER.SET_ATTRIBUTE(
 3 name => ‘"SYS"."FRIDAY_WINDOW"‘,
 4 attribute => ‘REPEAT_INTERVAL‘,
 5 value => ‘FREQ=WEEKLY;BYDAY=MON;BYHOUR=2;BYMINUTE=0;BYSECOND=0‘);
 6 END;
 7 /

PL/SQL 过程已成功完成。
4.开启任务:
SQL> BEGIN
 2 DBMS_SCHEDULER.ENABLE(
 3 name => ‘"SYS"."FRIDAY_WINDOW"‘);
 4 END;
 5 /

PL/SQL 过程已成功完成。
5.查看修改后的情况:
SQL> 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 in (‘MAINTENANCE_WINDOW_GROUP‘,‘BSLN_MAINTAIN_STATS_SCHED‘);
 
WINDOW_NAME   REPEAT_INTERVAL         DURATION
------------------------------ -------------------------------------------------------------------------------- -------------------------------------------------------------------------------
WEDNESDAY_WINDOW  freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0    +000 04:00:00
FRIDAY_WINDOW   FREQ=WEEKLY;BYDAY=MON;BYHOUR=2;BYMINUTE=0;BYSECOND=0    +000 03: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
 
7 rows selected

技术分享

Oracle之自动收集统计信息

标签:

热心网友 时间:2022-04-09 11:17

每日调度收集统计信息是为了在操作数据库(如增删改查)时,能更好的判断执行路径最优化(如,根据统计信息判断表的数据量,最后决定是全表扫秒还是索引)。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
情侣文案英文高级浪漫87句 Love to the people don't wave.什么意思 gladtomeetyou怎么 gladtomeetyou.怎么回答 2016生肖猴运程 武汉买房88平方满50万落户政策 非武汉市户口在武汉市购买70平方总价50万的商品房,可以转户口吗... 我想在武汉买一套50万左右的新房子,谁能告诉我现在武昌,关山,江夏,有... 支付宝怎么开通步数授权? 总价50万能在武汉买一套两室一天的二手房吗? 被封两次,解封需要多长时间?以后还会被封吗? 奥迪a4l故障怎么办? 微信第一次第二次被封了能不能限制登录 第二次被封要等多久可以自动解封? 奥迪a4l忽然显示系统故障 已经违规过两次被封的微信,帮他辅助解封对自己的会有什么影响吗? 奥迪a4l故障灯常亮? 被封多少次会长期封号? 微信账号封了第一次,第二次会怎么样? ·Eminem的the way i am 歌词中提到内疚的心。这内疚的心是什么意思? 求一首-英文歌-开头一句是 I love you 什么情况下oracle自动生成或许收集统计信息 《史密斯夫妇》里的经典对白 跪求!找一首英文歌,里面有句歌词好像是if i found(或者find)you什么什么my mind。。。 国外女歌手唱的一首英文歌大概是来吧来吧是什么歌? 求一首英文歌,男生唱的!中间很多I don't want什么什么的。求高手帮助~~~! 暮光之城里面这句话是谁说的I love three things in this world. Sun, moon and you. Sun for morning, 怎样做的蒸鸡蛋好吃? 求这首英文歌的名字 TheglovesαrenlcnlceCαnItythemon汉语怎么读? 6428开头农行卡 625977***0656开头是什么银行卡 请问下:哪种手机输入法带有复制和粘贴功能的 iphone哪一款输入法有一键复制和粘贴功能的?就是按一个键就可以全选,或复制,或粘贴。以前用过, 哪些手机输入法支持复制粘贴功能? 百度输入法全键盘上 字母下方的复制粘贴符合的快捷键怎么用 小米任我行卡适合米兔儿童手表吗 小米电话手表小寻手表可以使用蜗牛卡吗 手机下载什么输入法有复制粘贴拜托各位大神 歧视同学 辱骂 以恶语对待同学算什么行为 污辱和歧视是什么,意,思丶 歧视 和 侮辱 哪个严重? 为啥出国旅游 受到别人歧视家庭条件怎么面对? 走娘家亲戚,随红包写谁的名字 胯下之辱的来历是什么? “跨下之辱”的来历? 不向歧视低头就能获得尊严的例子 巾帼之辱是什么意思 跨下之辱的故事?