Oracle 11g 创建临时window时间窗口 收集统计信息

1、需求:
Oracle 11g统计信息自动收集默认22点开启,现想在白天临时开启(且不让其他job执行)。

2、具体操作
1) broken job
conn CTI/ 123456
select 'exec dbms_job.broken('||job||',true);' from dba_jobs;
select job,broken from dba_jobs;

2)打开job参数
alter system set job_queue_processes=100 scope=both sid='*';

3)create window,
    时间:17:00开始,并加入组MAINTENANCE_WINDOW_GROUP
BEGIN
dbms_scheduler.create_window(
    window_name     => 'TEMP_STAT_WINDOW',
    duration        =>  numtodsinterval(8, 'hour'),
    resource_plan   => 'DEFAULT_MAINTENANCE_PLAN',
    repeat_interval => 'FREQ=DAILY;BYHOUR=17;BYMINUTE=00;BYSECOND=0');
END;
/
BEGIN
dbms_scheduler.add_window_group_member(
    group_name  => 'MAINTENANCE_WINDOW_GROUP',
    window_list => 'TEMP_STAT_WINDOW');
END;
/

4) 监控进度
--查看进度
select count(*) from dba_tables where LAST_ANALYZED is not null;
select owner,table_name,rownum,LAST_ANALYZED from dba_tables order by LAST_ANALYZED;

--查看window是否active
select a.window_name,a.next_start_date,a.active from dba_scheduler_windows a
    inner join dba_scheduler_wingroup_members b on a.window_name = b.window_name
    where b.window_group_name='ORA$AT_WGRP_OS';

--统计信息历史执行情况
col client_name       for a35
col window_name       for a20
col window_start_time for a30
col window_duration   for a30
col window_end_time   for a20
set linesize 200
select client_name,window_name,window_start_time,window_duration,window_end_time 
from dba_autotask_client_history where client_name like '%stats%'; 

--大分区表
select table_name,partition_name,num_rows from dba_TAB_PARTITIONS where table_name='TF_USER';
select count(*) from cti.tf_user partition(PART_USER_0013);


5) 删除临时window
--从window组中移除
BEGIN
DBMS_SCHEDULER.REMOVE_WINDOW_GROUP_MEMBER(
    group_name  => 'MAINTENANCE_WINDOW_GROUP',
    window_list => 'TEMP_STAT_WINDOW');
END;
/

--drop window
SQL> exec dbms_scheduler.drop_window('sys.TEMP_STAT_WINDOW');

注:执行drop_window报错:
exec dbms_scheduler.drop_window('sys.TEMP_STAT_WINDOW');
ORA-27480: window "TEMP_STAT_WINDOW" is currently open

解决办法:
exec dbms_scheduler.close_window('sys.TEMP_STAT_WINDOW');
exec dbms_scheduler.drop_window('sys.TEMP_STAT_WINDOW',TRUE);

注:也可采用下面方法直接收集数据库统计信息,效果一样
exec dbms_stats.gather_database_stats(options=>'gather auto');  


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27126919/viewspace-1973958/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27126919/viewspace-1973958/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值