ITPub博客

首页 > 数据库 > Oracle > oracle查看和更新统计表的信息

oracle查看和更新统计表的信息

Oracle 作者:darren__chan 时间:2014-12-10 21:40:07 0 删除 编辑



在OEM中查看数据库的会话时,发现有一个会话的SQL要10多秒

在PL SQL中执行 SQL按F5查看这个SQL的计划,发现别的地方有 调用索引,

oracle统计值查看

select * from dba_tables where table_name = TABLE

检查一下字段last_analyzed 的值,其值就是最后一次统计更新的日期

更新查看

全表分析   完全计算法:   analyze   table   abc   compute   statistics;   抽样估算法(抽样20%):   analyze   table   abc   estimate   statistics   sample   20   percent;   对表作完全计算所花的时间相当于做全表扫描,抽样估算法由于采用抽样,比完全计算法的生成统计速度要快,如果不是要求要有精确数据的话,尽量采用抽样分析法。建议对表分析采用抽样估算,对索引分析可以采用完全计算。 

使用dbms_stats

 

exec dbms_stats.gather_table_stats(OWNNAME=>'tccs',tabname=>'emp',cascade=>true);

在我们经常做表的分析时会看到使用dbms_stats和analyze在这个方面也会有点不同。 就是当使用dbms_stats来分析表的时候global_stats是YES,而用analyze来分析表的时候就是NO. 而且num_rows结果也会有些不同

 

 

select dt.last_analyzed ,'dbms_stats.gather_table_stats(OWNNAME=>'''|| dt.owner ||''',tabname=>'''|| dt.table_name ||''',cascade=>true); ' ,dt.* from dba_tables dt where table_name IN ( upper('wsh_delivery_details') ,upper('wsh_delivery_assignments'),upper('MTL_TXN_REQUEST_LINES'),upper('MTL_TXN_REQUEST_HEADERS'),upper('OE_ORDER_HEADERS_ALL'),upper('OE_ORDER_LINES_ALL'),upper('RA_CUSTOMERS'),upper('MTL_SYSTEM_ITEMS_B'),upper('RA_ADDRESSES_ALL'),upper('RA_SITE_USES_ALL'),upper('MTL_PARAMETERS'),upper('HZ_CUST_SITE_USES_ALL'),upper('HZ_PARTY_SITES'),upper('HZ_LOCATIONS'),upper('HZ_CUST_ACCT_SITES_ALL'),upper('HZ_CUST_SITE_USES_ALL'),upper('AR_CONTACTS_V'),upper('ORG_ORGANIZATION_DEFINITIONS'),upper('MTL_MATERIAL_TRANSACTIONS'),upper('OE_TRANSACTION_TYPES_TL') )

 

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

请登录后发表评论 登录
全部评论
一思尚存,此志不懈

注册时间:2014-09-09

  • 博文量
    210
  • 访问量
    1344191