记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

ORA-20005: object statistics are locked


  

SQL> exec dbms_stats.unlock_table_stats(ownname =>'ECC_VIEW',tabname => 'TABLE_TEST1');
PL/SQL procedure successfully completed
or
SQL> EXEC DBMS_STATS.unlock_schema_stats(ownname =>'ECC_VIEW');
PL/SQL procedure successfully completed ============(普通用户权限)==

SQL> exec dbms_stats.gather_table_stats(ownname =>'ECC_VIEW',tabname => 'TABLE_TEST1',cascade =>TRUE,estimate_percent => 20);
PL/SQL procedure successfully completed

////////////////

执行以下脚本后正常
SQL> exec dbms_stats.unlock_schema_stats(ownname =>'test');
 
PL/SQL procedure successfully completed

////////////////////

 

 

 

发现一个用户下统计信息没有生成,
查询user_tab_modifications发现变动信息也超过10%

没有警告日志
执行
exec dbms_stats.gather_schema_stats(ownname =>'test',granularity => 'ALL',cascade => true);
还是没有生成

 

然后执行报
begin dbms_stats.gather_table_stats(ownname => 'test',tabname=> 'TCCLICOMH',granularity => 'ALL',cascade => true);end;
 
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: 在 "SYS.DBMS_STATS", line 13056
ORA-06512: 在 "SYS.DBMS_STATS", line 13076
ORA-06512: 在 line 2

执行以下脚本后正常
SQL> execdbms_stats.unlock_schema_stats(ownname =>'test');===执行这个就正常了===
 
PL/SQL procedure successfully completed
 
SQL>exec dbms_stats.gather_schema_stats(ownname =>'test',granularity => 'ALL',cascade => true);
 
PL/SQL procedure successfully completed


原因是因为使用impdp 只导入metadata_only 或(expdp的时候使用了contend=metadata_only)时 没有使用 useexclude=(table_statistics,index_statistics)
引起的



转载请标明出处【ORA-20005: object statistics are locked oracle 锁定、对比统计信息 】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论