• 诊断某些表统计信息不能自动收集原因


    客户反映一个schema数据导入之后一直没有自动收集统计信息,而之前导入的另外一个schema
    却是正常的,手动收集却没有问题。因为oracle收集统计信息有前提条件是数据变化量是否超过
    10%,否则不会收集,于是查看DBA_TAB_MODIFICATIONS,内容如下:
    TABLE_OWNER TABLE_NAME              INSERTS    TIMESTAMP 
    ASMMESDB BKTBLEMSEQUIPMENTSTATE     5914983   2016-04-06 22:00:02    
    ASMMESDB BKTBLSYSEVENTLOG           6010267   2016-04-06 22:00:02    
    ASMMESDB BKTBLWIPFUTUREHOLD         137654    2016-04-06 22:00:02  
    ASMMESDB BKTBLWIPLOTPROPERTY        38956193  2016-04-06 22:00:02 
    ASMMESDB BKTBLWIPLOTSTATE           11615110  2016-04-06 22:00:02

     

    从上面输出来看,的确数据量便变化很大,而且时间戳也是客户导入数据的时间戳,若是自动收集统计信息,那么
    这张表数据应该会被purge才对。难道自动收集统计信息job没有启动?查看job运行历史和调度情况都发现是正常
    的,而且客户出示的另外一个schema的确在正常收集,时间点都是晚上,说明址有这个schema因为某种原因没有被
    收集,忽然想起若是这些表的统计信息被锁定,那么oracle是不会收集统计信息的,再次检查这些表的统计信息
    dba_tab_statistics情况,发现这些表的stattype_locked的确是ALL,表明这些统计信息被锁定了,告知用户统计
    信息不能自动收集原因,客户同意诊断结果,但是坚持说没有人为锁定,而且这个db只有他一个人使用,也不可能
    有其他DBA修改,仍要求继续诊断原因。既然客户不承认人为修改,那么需要是否执行过lock操作,以及什么时侯
    这些表被lock的,经过测试发现sys.wri$_optstat_tab_history,sys.wri$_optstat_opr 会记录统计信息表操作
    类型和lock的时间,于是检查客户环境输出,的确发现了这些操作,时间居然和imp时间一样,于是让客户提供当
    时操作历史, 
    1.先到如table
    imp system/xxxx fromuser=whitehouse touser=whitehouse1 BUFFER=1024000 commit=Y ignore=y rows=N indexes=n CONSTRAINTS=n file=whitehouse.dmp log=imp_whitehouse1_object.log

    2.再导入data
    imp system/xxxx fromuser=whitehouse touser=whitehouse1 BUFFER=10240000 ignore=y rows=y commit=y indexes=n CONSTRAINTS=n  file=whitehouse.dmp log=imp_whitehouse1_data.log

    3.最后导入index和constraint
    imp system/xxxx fromuser=whitehouse touser=whitehouse1 BUFFER=1024000 commit=Y ignore=y rows=N indexes=y CONSTRAINTS=y file=whitehouse.dmp log=imp_whitehouse1_object_1.log

    操作历史里面第一步是rows=N先导入metadata,然后导入数据,经过测试验证果然能重现问题,于是查阅文档rows=N,
    官方有如下解释:If ROWS=n, then statistics for all imported tables will be locked after the import operation is finished.

     

     

  • 相关阅读:
    UVA 221
    A Typical Homework(学生信息管理系统)
    追踪电子表格中的单元格
    浮点数!!!(摘)
    poj 3158kickdown
    循环小数 UVa202
    Unix is 命令
    W
    V
    完美世界 字符串倒置输出
  • 原文地址:https://www.cnblogs.com/DataArt/p/10018912.html
Copyright © 2020-2023  润新知