ITPub博客

首页 > 数据库 > Oracle > table statistics lock

table statistics lock

原创 Oracle 作者:sundog315 时间:2011-04-18 16:21:28 0 删除 编辑

今天在检查刚接手的DB的AWR报告时发现一个SQL Gets很大,于是进行tunning,看了一眼user_tables,发现这个表的last_analyzed居然是2007年的,很奇怪,这个表应该是在不断的进行修改,并且,数据库是Oracle 10g,自动收集统计信息的任务也没有关闭,为什么没有更新统计信息呢?

查看dba_tab_modification表,也没有发现任何有关于这个表的记录,奇了

不管他,直接收集统计信息,这下发现问题了

[@more@]

SQL> exec dbms_stats.gather_table_stats(user,'XXX',method_opt => 'for all indexed columns',cascade => true,degree => 2);

begin dbms_stats.gather_table_stats(user,'XXX',method_opt => 'for all indexed columns',cascade => true,degree => 2); end;

ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 13056
ORA-06512: at "SYS.DBMS_STATS", line 13076
ORA-06512: at line 2

统计信息不知道被谁给锁了。汗

解锁,收集统计信息

SQL> exec dbms_stats.unlock_table_stats(user,'XXX');

PL/SQL procedure successfully completed

SQL> exec dbms_stats.gather_table_stats(user,'XXX',method_opt => 'for all indexed columns',cascade => true,degree => 2);

PL/SQL procedure successfully completed

一般来讲,没有正式系统会lock statistics的,不知道这个服务器为啥进行了lock,而且,因为这个原因导致了很大的性能问题。

可以查看select table_name,stattype_locked from user_tab_statistics

为啥Oracle不把这个字段加到user_tables里呢?这种情况看来还真的比较少,很少有人查这个,再汗一个

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

请登录后发表评论 登录
全部评论

注册时间:2010-01-05

  • 博文量
    126
  • 访问量
    540253