首页 > 数据库 >Oracle 11g 自动统计信息收集

Oracle 11g 自动统计信息收集

时间:2024-08-23 10:25:52浏览次数:11  
标签:11g NAME 收集 EXEC dbms 信息 Oracle 统计

在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集、SQL调优顾问、段空间调整顾问,查看方法如下:

col CLIENT_NAME for a40
col TASK_NAME for a40
col OPERATION_NAME for a40
SELECT CLIENT_NAME,TASK_NAME,OPERATION_NAME,STATUS FROM dba_autotask_task;

 

自动统计信息收集,使用的任务为gather_stats_prog。gather_stats_prog调用了DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC存储过程

col PROGRAM_ACTION for a50
SELECT PROGRAM_NAME,PROGRAM_TYPE,PROGRAM_ACTION FROM dba_scheduler_programs WHERE PROGRAM_NAME = 'GATHER_STATS_PROG';

 

在Oracle 11g中,一共配置了7个自动维护窗口,每天一个窗口

SELECT * FROM dba_autotask_window_clients;

 

每个窗口运行时间等信息:

select t.window_name,
t.resource_plan,
t.schedule_type,
t.repeat_interval,
t.duration,
t.window_priority,
t.next_start_date,
t.last_start_date,
t.enabled,
t.active,
t.comments
from dba_scheduler_windows t
where ENABLED = 'TRUE';

 

 

在窗口任务启动时,自动任务GATHER_STATS_PROG每次运行时会先生成ORA$AT_OS_OPT_xxx的作业,然后再执行这个作业。

SELECT a.JOB_NAME,a.ACTUAL_START_DATE,a.RUN_DURATION,a.STATUS FROM dba_scheduler_job_run_details a WHERE  a.JOB_NAME LIKE 'ORA$AT_OS_OPT%';

 

 

 

 

统计信息收集策略
每次自动收集统计信息,并不是对所有表都进行收集,Oracle只对那些已经统计信息失效的对象进行收集,那么Oracle如何判断哪些对象的统计信息失效了呢?
在Oracle 11g中,如果参数STATISTICS_LEVEL的值为TYPICAL(默认)或者ALL,则DBA_TAB_MODIFICATIONS会记录自上次自动统计信息收集完成之后对目标表的insert、update、delete的操作影响行数,并且还会记录自从上次自动收集统计信息之后是否发生过truncate。需要注意的是DBA_TAB_MODIFICATIONS并不会实时更新,如果需要查看最新信息,可以手动更新该表的信息:

EXEC dbms_stats.flush_database_monitoring_info();

Oracle收集失效的统计信息的策略:

自上次自动统计信息收集作业完成之后,如果DBA_TAB_MODIFICATIONS中记录的INSERT+UPDATE+DELETE所影响的行记录之和超过了DBA_TABLES中目标表记录数的10%,或者是自上次统计信息收集完成之后目标表执行过truncate操作,那么Oracle会认为目标表的统计信息已经失效,自动统计信息收集作业就会对目标表重新收集统计信息。

 

使用以下方法可以禁用/启用自动统计信息收集

SQL> EXEC dbms_auto_task_admin.disable(client_name=> 'auto optimizer stats collection',operation=> NULL,window_name=> NULL);

 

查看是否已经关闭:

SELECT WINDOW_NAME,AUTOTASK_STATUS,OPTIMIZER_STATS,SEGMENT_ADVISOR,SQL_TUNE_ADVISOR FROM DBA_AUTOTASK_WINDOW_CLIENTS

 

可以使用如下方法重新打开自动统计信息收集:

SQL> EXEC dbms_auto_task_admin.enable(client_name=> 'auto optimizer stats collection',operation=> NULL,window_name=> NULL);

 

使用DBMS_SCHEDULER.DISABLE可以禁用维护窗口,从而禁用统计信息收集

----禁掉周一的自动维护作业,包括统计信息收集、段顾问、sql调优顾问

EXEC dbms_scheduler.disable(NAME=> 'SYS.MONDAY_WINDOW',FORCE=> TRUE)

----启用周一的自动维护作业,包括统计信息收集、段顾问、sql调优顾问

EXEC dbms_scheduler.enable(NAME=>'SYS.MONDAY_WINDOW');

 

----禁掉周二的自动统计信息收集,段顾问、sql调优顾问保持开启
EXEC dbms_auto_task_admin.disable(client_name=>'auto optimizer stats collection',operation=>NULL,window_name=>'TUESDAY_WINDOW');

----再次开启:
EXEC dbms_auto_task_admin.enable(client_name=>'auto optimizer stats collection',operation=>NULL,window_name=>'TUESDAY_WINDOW');

 

----禁用窗口
EXEC dbms_scheduler.disable(NAME=> 'SYS.MONDAY_WINDOW',FORCE=> TRUE)

----修改启动时间为23点
EXEC dbms_scheduler.set_attribute(name => 'SYS.MONDAY_WINDOW',attribute => 'REPEAT_INTERVAL',value => 'freq=daily;byday=TUE;byhour=23;byminute=0; bysecond=0');

----启用窗口
EXEC dbms_scheduler.enable(NAME=>'SYS.MONDAY_WINDOW');

 

在Oracle 11g中,默认统计信息的收集阈值为10%,即10%的行数据发生变化或者执行了truncate,才会再次收集统计信息。我们可以使用下面的方法针对单个表修改阈值。

----修改test01表的统计信息收集阈值为5%。

查看初始的阈值:

SQL> SELECT dbms_stats.get_prefs(pname => 'STALE_PERCENT',ownname => 'TEST',tabname => 'KECHENG') FROM dual;

DBMS_STATS.GET_PREFS(PNAME=>'STALE_PERCENT',OWNNAME=>'TEST',TABNAME=>'KECHENG')
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10

SQL>
修改阈值为5:

SQL> EXEC dbms_stats.set_table_prefs(ownname => 'TEST',tabname => 'KECHENG',pname => 'STALE_PERCENT',pvalue => 5);
PL/SQL procedure successfully completed
确认修改后的阈值:

SQL> SELECT dbms_stats.get_prefs(pname => 'STALE_PERCENT',ownname => 'TEST',tabname => 'KECHENG') FROM dual;

DBMS_STATS.GET_PREFS(PNAME=>'STALE_PERCENT',OWNNAME=>'TEST',TABNAME=>'KECHENG')
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5
注意:当阈值为0时,不管数据如何变化,每天都会自动收集统计信息。

 

标签:11g,NAME,收集,EXEC,dbms,信息,Oracle,统计
From: https://www.cnblogs.com/guaika/p/18375299

相关文章

  • Oracle dataguard 搭建 oracle 11g ADG
    文章目录一、系统环境检查二、参数调整三、搭建ADG1、主库操作1、主库开启归档模式,此步骤需要重启数据库--5主库打开forcelogging--6主库修改DG相关参数--7修改之后验证:--8、主库添加standbyredologfile(根据MAA最佳实践,我们建议只为备用重做日志组,每......
  • 【Windows Server2016下Oracle11g DG配置实操步骤】
    WindowsServer2016下Oracle11gDG配置实操步骤文章目录WindowsServer2016下Oracle11gDG配置实操步骤前言一、部署规划1.1、虚拟机搭建:1.2、环境规划:1.3、主库操作系统配置1.4、数据库安装和实例创建1.5、监听配置1.6、网络配置1.7、克隆虚拟机二、主库配置2.1、查看......
  • 【CTF Web】CTFShow 敏感信息公布 Writeup(目录扫描+信息收集+敏感信息泄露)
    敏感信息公布10有时候网站上的公开信息,就是管理员常用密码解法用dirsearch扫描。dirsearch-uhttps://761187ad-86d1-4a5e-9003-71f2c83577b1.challenge.ctf.show/找到robots.txt。访问:https://761187ad-86d1-4a5e-9003-71f2c83577b1.challenge.ctf.show/ro......
  • 【CTF Web】CTFShow 内部技术文档泄露 Writeup(信息收集+敏感信息泄露)
    内部技术文档泄露10技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码解法用dirsearch扫描。dirsearch-uhttps://4d39f7a4-b1f8-4c9f-8946-e526f3e982af.challenge.ctf.show/没有找到有用的信息。页脚有个document。点进去,是一份pdf。访......
  • oracle 如果是多条插入语句用begin end 快还是一条一条插入快?
    在Oracle数据库中,对于多条插入语句,使用BEGIN...END块(结合事务控制)通常会比一条一条地插入更快,尤其是在处理大量数据时。这主要是因为以下几个原因:减少网络往返次数:当在应用程序和数据库之间执行SQL语句时,每条SQL语句的发送和执行都需要网络往返时间。将多条插入语句封装在B......
  • Oracle sys.dba_audit_session查询慢
    备注:Oracle 11.2.0.4一.问题描述从awr报告可以看到这个EM相关的sql消耗了大量的IO。也可以通过消耗IO的sql来查找:--找出消耗物理IO资源最大的的SQL语句selectdisk_reads,substr(sql_text,1,4000)fromv$sqlareaorderbydisk_readsdesc;具体的慢SQL如下:SELECT......
  • 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2024年7月刊
    本文为大家整理了墨天轮数据社区2024年7月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的深度教程和实用指南。从基础的安装配置到复杂的故障排查,再到性能优化的高级技巧,每篇文章都是由领域专家精心撰写。此外,还有常用脚本和操作注意......
  • 修改$ORACLE_HOME/network/admin/sqlnet.ora
    原因分析:网上查了主要是说我电脑上orcale的客户端版本和访问的oracle服务端的版本不一致,但我连接的是本地数据库,应该不存在该问题。保险起见,我先在网上找了相关问题的讨论,大家提出的常用解决方案是修改$ORACLE_HOME/network/admin/sqlnet.ora文件里的参数配置,对于该方法跟我的问......
  • 日志收集分析和告警在故障排查中的重要性
    日志收集分析和告警在故障排查中的重要性在数字化时代,软件服务的稳定性至关重要。即便是像网易云音乐这样的大型平台,也难免遇到突发的技术故障。例如,在8月19日下午,网易云音乐疑似出现服务器故障,导致网页端出现502BadGateway报错,App也无法正常使用。这种情况不仅严重影响......
  • 网安入门—信息收集
    1.定义信息收集是指收集有关目标应用程序和系统的相关信息。这些信息可以帮助攻击者了解目标系统的架构、技术实现细节、运行环境、网络拓扑结构、安全措施等方面的信息,以便我们在后续的渗透过程更好的进行。2.分类主动信息收集和被动信息收集区别:(1)收集方式不同主动信息......