ORACLE锁定某些表,不收集统计信息

Posted cl-learning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE锁定某些表,不收集统计信息相关的知识,希望对你有一定的参考价值。

Oracle 11g Performance Tuning Guide 文档中,关于管理优化器统计信息,介绍了通过Locking Statistics for a Table or Schema,可以锁定那些不需要频繁收集统计信息的对象,

当然,如果需要重新收集这些对象的统计信息, 需要先解除锁定。

为了确保SQL执行效率,建议在确认执行计划正确性时,使用HINT指定使用合适的索引方式。

 使用DBMS_STATS.LOCK_TABLE_STATS锁定相关统计信息,语句为: EXECUTE DBMS_STATS.LOCK_TABLE_STATS (‘owner name‘, ‘table name‘);

查询锁定状态:SELECT table_name, stattype_locked FROM dba_tab_statistics where owner in (‘table_owner1‘, ‘table_owner2‘) order by 2;

解锁表的统计信息: EXECUTE DBMS_STATS.UNLOCK_TABLE_STATS (‘owner name‘,‘table name‘);

 

当锁定表的统计信息后,这个表相关的对象的统计信息也被锁定,比如列信息、直方图、索引的统计信息。

在锁定前,请选择在适当的时间对表的统计信息进行收集,并确认当前的统计信息是合适的。

执行以上调整时,强烈建议严格测试和实时监控。

 

 

更多DBMS_STATS.LOCK_TABLE_STATS信息可以参考:

Preserving Statistics using DBMS_STATS.LOCK_TABLE_STATS [ID 283890.1]

FAQ: Automatic Statistics Collection Jobs (10g and 11g) [ID 1233203.1]

以上是关于ORACLE锁定某些表,不收集统计信息的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE索引失效,更新统计信息

oracle收集统计信息无法开并行

oracle中的统计信息问题

Oracle 收集统计信息在11g和12C下的区别

Oracle 11g系统自己主动收集统计信息的一些知识

为啥 Oracle 会在导入后锁定我的模式的统计信息?