oracle数据库优化之统计分析

本文探讨了Oracle数据库的统计分析,强调了其重要性和常见误解。内容涉及统计信息的收集时间、大表和分区表的定制策略、统计信息过期的判断以及直方图的收集条件。同时,分享了解决统计信息收集问题的方法和调整统计策略的建议。
摘要由CSDN通过智能技术生成
我们发现有很多dba对oracle的统计分析都存在一些误解,认为这个是oracle后台自动运行的,我们不用去关心,我觉得统计分析有很深的学问。
我想问大家的是:
1、你们开启了的每天收集统计信息,每天窗口运行正常吗?
2、所有的表都使用oracle的自动窗口收集?大表是不是要考虑定制收集?分区表是不是要增量收集?
3、在不影响业务的情况下,什么时间段收集统计信息?
4、如何判断统计信息是否过期,如何判断哪些字段需要收集直方图,收集的规则是什么?
下面我来一一解答:
1、
查询自动任务是否开启
SELECT OPERATION_NAME,STATUS FROM DBA_AUTOTASK_OPERATION WHERE CLIENT_NAME LIKE '%stats%';
STATUS为ENABLED表示任务开启 
如果为DISABLE exec dbms_auto_task_admin.ENABLE(client_name => 'auto optimizer stats collection',operation =>'auto optimizer stats job',window_name=> null); 
查看后台的窗口信息:
select * from dba_scheduler_windows
查看每天的统计JOB是否成功racle11g调用窗口会自动生成以ORA$AT_OS_OPT开头的JOB
select * from dba_scheduler_job_run_details where job_name LIKE '%ORA$AT_OS_OPT%' ORDER BY LOG_DATE DESC 
如果stoped要查看具体的内容:我这边有两次发生stop.
(1) 执行总共收集的时间,超出了收集窗口的时间(默认是周一到周五 22:00~02:00 4个小时 周六和周日06:00~02:00 20个小时)
    解决办法:可以开启并行收集(默认是串行)
    EXEC DBMS_STATS.SET_PARAM('DEGREE',4);
    或者将窗口时间调长
   begin
   dbms_scheduler.set_attribute(name => 'TUESDAY_WINDOW', attribute => 'duration', value =>numtdosinterval(480,'minute'));
   end;
   /
     
(2) job执行到一半的时候,由于其它窗口启动导致收集终止。
    解决办法:将收集的窗口优先级调高 
    BEGIN
  dbms_scheduler.set_attribute(
    name      => '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值