• Fixed Table统计信息


    Fixed Table统计信息

    Oracle有大量的内部视图供DBA使用,这些视图底层表以X$开头,Fixed Objects指的是这些以x$开头的表(下文中称为基表)及它们的索引。
    很多v$开头的视图基表都是x$表,包括动态性能视图,管理视图,如dba_free_space等,因此,这些fixed objects的统计信息就显得极其重要。

    1. Fixed objects统计信息重要性

    优化器在生成执行计划的时候依赖于这些基表的统计信息,如果这些基表的统计信息缺失,不像用户对象的统计信息缺失,Oracle会使用dynamic sampling,优化器在这些缺失统计信息的基表上,会使用预设的默认值进行执行计划的评估。在这种情况下,执行计划可能是极其糟糕的。因此,可能存在查询某些动态性能视图或者数据字典时,出现很慢的情况。

    例如, X$KTFBUE记录了数据文件、extent的位图等信息,在查询dba_free_space的时候,会使用到这个基表,如果这个表的统计信息为0,则有可能导致查询dba_free_space很慢. 当这个基表缺失统计信息时,该表的行数默认为10万行。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    column database_creation format a18
    column last_analyzed format a18
    select dbid
    ,to_char(created,'dd.mm.yyyy hh24:mi') database_creation
    ,version
    ,(select to_char(max(last_analyzed),'dd.mm.yyyy hh24:mi') last_analyzed
    from dba_tab_statistics
    where object_type='FIXED TABLE') last_analyzed
    from v$database,v$instance;
    • 如何收集
      在12c以前,基表的统计信息是不会通过Oracle自动任务去收集的,需要手动执行下面这个procedure, 用户需要有sysdba或者ANALYZE ANY DICTIONARY的权限。

      1
      exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
      • 上面这个procedure与DBMS_STATS.GATHER_TABLE_STATS的区别是,它不会收集表/索引的blocks信息,因为基表是存放在内存中随时动态变化的,它们的blocks永远设置为0.
      • 统计信息的收集都是会消耗资源,不建议在业务高峰期对任何批量对象进行统计信息的收集。
      • 12c以后,虽然自动任务窗口会收集基表统计信息,但是,其限制是在窗口时间内,其优先级是最低的,要先等到用户对象的统计信息收集完,等数据字典的统计信息收集完,同时这些基表的统计信息不存在,即是说,自动窗口不会去更新基表统计信息的;因此,建议定期手工对基表进行收集。

        尽管基表生存周期是在内存中,但其统计信息是会保存在磁盘中,因此,实例重启后,除非负载有很大的变化,并没有必要重新收集统计信息。

    2. Fixed tables统计信息对数据库的影响

    对dba_extents, v$access, V$RMAN_BACKUP_JOB_DETAILS, V$RMAN_STATUS,DBA_FREE_SPACE等视图有很大影响,很多时候查询这些视图很慢,极大可能就是因为基表统计信息缺失或者存在错误的统计信息。



    Reference:
    How to Gather Statistics on Objects Owned by the 'SYS' User and 'Fixed' Objects (Doc ID 457926.1)
    Fixed Objects Statistics (GATHER_FIXED_OBJECTS_STATS) Considerations (Doc ID 798257.1)
    Best Practices for Gathering Optimizer Statistics with Oracle Database 12c Release 2
    ORA-01555 Caused By Auto Execute Of Job "SYS"."PMO_DEFERRED_GIDX_MAINT_JOB" (Doc ID 2523018.1)
    Database SQL Tuning Guide - Gathering Statistics for Fixed Objects

    EOF

  • 相关阅读:
    spark的环境安装
    (7)zabbix资产清单inventory管理
    (6)zabbix主机与组配置
    (5)zabbix配置详解
    (4)zabbix监控第一台服务器
    (3)zabbix用户管理
    (2)zabbix硬件需求
    (1) zabbix进程构成
    centos7系统root无法通过su切换到某个普通用户
    01基础复习
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/15575296.html
Copyright © 2020-2023  润新知